Average Error: 17.1 → 4.0
Time: 51.9s
Precision: 64
\[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R\]
\[\left(\frac{\pi}{2} - \left(\frac{\pi}{2} - \cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)\right) \cdot R\]
\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R
\left(\frac{\pi}{2} - \left(\frac{\pi}{2} - \cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1118360 = phi1;
        double r1118361 = sin(r1118360);
        double r1118362 = phi2;
        double r1118363 = sin(r1118362);
        double r1118364 = r1118361 * r1118363;
        double r1118365 = cos(r1118360);
        double r1118366 = cos(r1118362);
        double r1118367 = r1118365 * r1118366;
        double r1118368 = lambda1;
        double r1118369 = lambda2;
        double r1118370 = r1118368 - r1118369;
        double r1118371 = cos(r1118370);
        double r1118372 = r1118367 * r1118371;
        double r1118373 = r1118364 + r1118372;
        double r1118374 = acos(r1118373);
        double r1118375 = R;
        double r1118376 = r1118374 * r1118375;
        return r1118376;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1118377 = atan2(1.0, 0.0);
        double r1118378 = 2.0;
        double r1118379 = r1118377 / r1118378;
        double r1118380 = phi1;
        double r1118381 = cos(r1118380);
        double r1118382 = phi2;
        double r1118383 = cos(r1118382);
        double r1118384 = r1118381 * r1118383;
        double r1118385 = lambda2;
        double r1118386 = cos(r1118385);
        double r1118387 = lambda1;
        double r1118388 = cos(r1118387);
        double r1118389 = r1118386 * r1118388;
        double r1118390 = sin(r1118385);
        double r1118391 = sin(r1118387);
        double r1118392 = r1118390 * r1118391;
        double r1118393 = r1118389 + r1118392;
        double r1118394 = r1118384 * r1118393;
        double r1118395 = sin(r1118382);
        double r1118396 = sin(r1118380);
        double r1118397 = r1118395 * r1118396;
        double r1118398 = r1118394 + r1118397;
        double r1118399 = acos(r1118398);
        double r1118400 = r1118379 - r1118399;
        double r1118401 = r1118379 - r1118400;
        double r1118402 = R;
        double r1118403 = r1118401 * r1118402;
        return r1118403;
}

Error

Bits error versus R

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 17.1

    \[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R\]
  2. Using strategy rm
  3. Applied cos-diff4.0

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot R\]
  4. Using strategy rm
  5. Applied add-log-exp4.0

    \[\leadsto \color{blue}{\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)} \cdot R\]
  6. Using strategy rm
  7. Applied acos-asin4.1

    \[\leadsto \log \left(e^{\color{blue}{\frac{\pi}{2} - \sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right) \cdot R\]
  8. Applied exp-diff4.1

    \[\leadsto \log \color{blue}{\left(\frac{e^{\frac{\pi}{2}}}{e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}}\right)} \cdot R\]
  9. Applied log-div4.1

    \[\leadsto \color{blue}{\left(\log \left(e^{\frac{\pi}{2}}\right) - \log \left(e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)\right)} \cdot R\]
  10. Simplified4.1

    \[\leadsto \left(\color{blue}{\frac{\pi}{2}} - \log \left(e^{\sin^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)\right)}\right)\right) \cdot R\]
  11. Simplified4.1

    \[\leadsto \left(\frac{\pi}{2} - \color{blue}{\sin^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot R\]
  12. Using strategy rm
  13. Applied asin-acos4.0

    \[\leadsto \left(\frac{\pi}{2} - \color{blue}{\left(\frac{\pi}{2} - \cos^{-1} \left(\left(\cos \phi_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_1 \cdot \cos \lambda_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)}\right) \cdot R\]
  14. Final simplification4.0

    \[\leadsto \left(\frac{\pi}{2} - \left(\frac{\pi}{2} - \cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_2 \cdot \sin \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)\right) \cdot R\]

Reproduce

herbie shell --seed 2019134 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Spherical law of cosines"
  (* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))