tryed to find a solution
authorAnatoly <Titov_AI@pnpi.nrcki.ru>
Mon, 12 Feb 2018 09:57:42 +0000 (12:57 +0300)
committerAnatoly <Titov_AI@pnpi.nrcki.ru>
Mon, 12 Feb 2018 09:57:42 +0000 (12:57 +0300)
src/spirals.cpp

index f5555d9f6d73dc1088296c8504cb41d109c5f309..d0fbd6241e41239c723602fe5545df9da417c68f 100644 (file)
@@ -170,26 +170,44 @@ void linear_kernel_search (double &x0, double &y0, double &z0, double &p1, doubl
         L1 = 1;
         while (Fx(x0 - L1 * FX0, y0, z0, p1, p2, p3, x) - FX >= 0) {
             L1 /= 2;
+            if (x0 - L1 * FX0 < epsi) {
+                break;
+            }
         }
         L2 = 1;
         while (Fx(x0, y0 - L2 * FY0, z0, p1, p2, p3, x) - FX >= 0) {
             L2 /= 2;
+            if (y0 - L2 * FY0 < epsi) {
+                break;
+            }
         }
         L3 = 1;
         while (Fx(x0, y0, z0 - L3 * FZ0, p1, p2, p3, x) - FX >= 0) {
             L3 /= 2;
+            if (z0 - L3 * FZ0 < epsi) {
+                break;
+            }
         }
         L4 = 1;
         while (Fx(x0, y0, z0, p1 - L4 * FP1, p2, p3, x) - FX >= 0) {
             L4 /= 2;
+            if (p1 - L4 * FP1 < epsi) {
+                break;
+            }
         }
         L5 = 1;
         while (Fx(x0, y0, z0, p1, p2 - L5 * FP2, p3, x) - FX >= 0) {
             L5 /= 2;
+            if (p2 - L5 * FP2 < epsi) {
+                break;
+            }
         }
         L6 = 1;
         while (Fx(x0, y0, z0, p1, p2, p3 - L6 * FP3, x) - FX >= 0) {
             L6 /= 2;
+            if (p3 - L6 * FP3 < epsi) {
+                break;
+            }
         }
         x0 -= L1 * FX0;
         y0 -= L2 * FY0;