changed L1-6 to L0
authorAnatoly <Titov_AI@pnpi.nrcki.ru>
Tue, 20 Feb 2018 07:15:08 +0000 (10:15 +0300)
committerAnatoly <Titov_AI@pnpi.nrcki.ru>
Tue, 20 Feb 2018 07:15:08 +0000 (10:15 +0300)
src/spirals.cpp

index 192747313c87b0d449f1f8d3c4025d6b828f24b4..1e0ad9c15a8ba09d10b535c2f34a8d1e0323ae7c 100644 (file)
@@ -154,7 +154,7 @@ long double fp3 (long double x0, long double y0, long double z0, long double p1,
 
 void linear_kernel_search (long double &x0, long double &y0, long double &z0, long double &p1, long double &p2, long double &p3, std::vector< RVec > x, long double epsi) {
     long double FX = 0, FX0 = 0, FY0 = 0, FZ0 = 0, FP1 = 0, FP2 = 0, FP3 = 0;
-    long double L1, L2, L3, L4, L5, L6;
+    long double L0;
     //int count = 0;
     while (true) {
         FX = Fx(x0, y0, z0, p1, p2, p3, x);
@@ -165,62 +165,22 @@ void linear_kernel_search (long double &x0, long double &y0, long double &z0, lo
         FP2 = fp2(x0, y0, z0, p1, p2, p3, x);
         FP3 = fp3(x0, y0, z0, p1, p2, p3, x);
 
-        L1 = 1;
-        while (Fx(x0 - L1 * FX0, y0, z0, p1, p2, p3, x) - FX > 0) {
-            L1 /= 2;
-            if (x0 - L1 * FX0 < epsi) {
-                L1 = 0;
+        L0 = 1;
+        while (Fx(x0 - L0 * FX0, y0 - L0 * FY0, z0 - L0 * FZ0, p1 - L0 * FP1, p2 - L0 * FP2, p3 - L0 * FP3, x) - FX > 0) {
+            L0 /= 2;
+            if ((x0 - L0 * FX0 < epsi) && (y0 - L0 * FY0 < epsi) && (z0 - L0 * FZ0 < epsi) && (p1 - L0 * FP1 < epsi) && (p2 - L0 * FP2 < epsi) && (p3 - L0 * FP3 < epsi)) {
+                L0 = 0;
             }
         }
-        std::cout << FX - Fx(x0 - L1 * FX0, y0, z0, p1, p2, p3, x) << " ";
-        L2 = 1;
-        while (Fx(x0, y0 - L2 * FY0, z0, p1, p2, p3, x) - FX > 0) {
-            L2 /= 2;
-            if (y0 - L2 * FY0 < epsi) {
-                L2 = 0;
-            }
-        }
-        std::cout << FX - Fx(x0, y0 - L2 * FY0, z0, p1, p2, p3, x) << " ";
-        L3 = 1;
-        while (Fx(x0, y0, z0 - L3 * FZ0, p1, p2, p3, x) - FX > 0) {
-            L3 /= 2;
-            if (z0 - L3 * FZ0 < epsi) {
-                L3 = 0;
-            }
-        }
-        std::cout << FX - Fx(x0, y0, z0 - L3 * FZ0, p1, p2, p3, x) << " ";
-        L4 = 1;
-        while (Fx(x0, y0, z0, p1 - L4 * FP1, p2, p3, x) - FX > 0) {
-            L4 /= 2;
-            if (p1 - L4 * FP1 < epsi) {
-                L4 = 0;
-            }
-        }
-        std::cout << FX - Fx(x0, y0, z0, p1 - L4 * FP1, p2, p3, x) << " ";
-        L5 = 1;
-        while (Fx(x0, y0, z0, p1, p2 - L5 * FP2, p3, x) - FX > 0) {
-            L5 /= 2;
-            if (p2 - L5 * FP2 < epsi) {
-                L5 = 0;
-            }
-        }
-        std::cout << FX - Fx(x0, y0, z0, p1, p2 - L5 * FP2, p3, x) << " ";
-        L6 = 1;
-        while (Fx(x0, y0, z0, p1, p2, p3 - L6 * FP3, x) - FX > 0) {
-            L6 /= 2;
-            if (p3 - L6 * FP3 < epsi) {
-                L6 = 0;
-            }
-        }
-        std::cout << FX - Fx(x0, y0, z0, p1, p2, p3 - L6 * FP3, x) << " ";
-        std::cout << FX - Fx(x0 - L1 * FX0, y0 - L2 * FY0, z0 - L3 * FZ0, p1 - L4 * FP1, p2 - L5 * FP2, p3 - L6 * FP3, x) << "\n";
-        if (FX - Fx(x0 - L1 * FX0, y0 - L2 * FY0, z0 - L3 * FZ0, p1 - L4 * FP1, p2 - L5 * FP2, p3 - L6 * FP3, x) > epsi) {
-            x0 -= L1 * FX0;
-            y0 -= L2 * FY0;
-            z0 -= L3 * FZ0;
-            p1 -= L4 * FP1;
-            p2 -= L5 * FP2;
-            p3 -= L6 * FP3;
+
+        std::cout << FX - Fx(x0 - L0 * FX0, y0 - L0 * FY0, z0 - L0 * FZ0, p1 - L0 * FP1, p2 - L0 * FP2, p3 - L0 * FP3, x) << "\n";
+        if (FX - Fx(x0 - L0 * FX0, y0 - L0 * FY0, z0 - L0 * FZ0, p1 - L0 * FP1, p2 - L0 * FP2, p3 - L0 * FP3, x) > epsi) {
+            x0 -= L0 * FX0;
+            y0 -= L0 * FY0;
+            z0 -= L0 * FZ0;
+            p1 -= L0 * FP1;
+            p2 -= L0 * FP2;
+            p3 -= L0 * FP3;
         } else {
             break;
         }