diff --git a/src/bisection-simpler-example2-gradient.cc b/src/bisection-simpler-example2-gradient.cc
index d1624413acd9635f7b781225bbc5effe9fd41158..4f37d098700121cee5491c1e611b64304c6d78e9 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;