From 8282b0241d288603663009ce83d1d849fbf27280 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 6 Sep 2011 13:25:49 +0200
Subject: [PATCH] Use axpy

---
 src/bisection-simpler-example2-gradient.cc | 23 ++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/bisection-simpler-example2-gradient.cc b/src/bisection-simpler-example2-gradient.cc
index d1624413..4f37d098 100644
--- a/src/bisection-simpler-example2-gradient.cc
+++ b/src/bisection-simpler-example2-gradient.cc
@@ -53,24 +53,27 @@ class SampleFunctional : public SmallFunctional<dimension> {
 
     double l = 0;
     double r = 1;
-    SmallVector tmp = descDir;
-    tmp *= r;
-    while (directionalDerivative(x + tmp, descDir) < 0) {
+    SmallVector tmp;
+    while (true) {
+      tmp = x;
+      tmp.axpy(r, descDir);
+      if (directionalDerivative(tmp, descDir) >= 0)
+        break;
+
       l = r;
       r *= 2;
-      tmp *= 2;
       Dune::dverb << "Widened interval!" << std::endl;
     }
     Dune::dverb << "Interval now [" << l << "," << r << "]" << std::endl;
 
     // Debugging
     {
-      SmallVector tmpl = tmp;
-      tmpl *= l;
-      SmallVector tmpr = tmp;
-      tmpr *= r;
-      assert(directionalDerivative(x + tmpl, descDir) < 0);
-      assert(directionalDerivative(x + tmpr, descDir) > 0);
+      SmallVector tmpl = x;
+      tmpl.axpy(l, descDir);
+      SmallVector tmpr = x;
+      tmpr.axpy(r, descDir);
+      assert(directionalDerivative(tmpl, descDir) < 0);
+      assert(directionalDerivative(tmpr, descDir) > 0);
     }
 
     double m = l / 2 + r / 2;
-- 
GitLab