Average Error: 16.8 → 3.8
Time: 41.7s
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\]
\[\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \frac{\left(\cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \frac{1 - \cos \left(\lambda_2 + \lambda_2\right)}{2} \cdot \left(\sin \lambda_1 \cdot \sin \lambda_1\right)\right)\right) \cdot \cos \phi_1}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\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
\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \frac{\left(\cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \frac{1 - \cos \left(\lambda_2 + \lambda_2\right)}{2} \cdot \left(\sin \lambda_1 \cdot \sin \lambda_1\right)\right)\right) \cdot \cos \phi_1}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26289 = phi1;
        double r26290 = sin(r26289);
        double r26291 = phi2;
        double r26292 = sin(r26291);
        double r26293 = r26290 * r26292;
        double r26294 = cos(r26289);
        double r26295 = cos(r26291);
        double r26296 = r26294 * r26295;
        double r26297 = lambda1;
        double r26298 = lambda2;
        double r26299 = r26297 - r26298;
        double r26300 = cos(r26299);
        double r26301 = r26296 * r26300;
        double r26302 = r26293 + r26301;
        double r26303 = acos(r26302);
        double r26304 = R;
        double r26305 = r26303 * r26304;
        return r26305;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r26306 = phi1;
        double r26307 = sin(r26306);
        double r26308 = phi2;
        double r26309 = sin(r26308);
        double r26310 = r26307 * r26309;
        double r26311 = cos(r26308);
        double r26312 = lambda1;
        double r26313 = cos(r26312);
        double r26314 = lambda2;
        double r26315 = cos(r26314);
        double r26316 = r26313 * r26315;
        double r26317 = r26316 * r26316;
        double r26318 = 1.0;
        double r26319 = r26314 + r26314;
        double r26320 = cos(r26319);
        double r26321 = r26318 - r26320;
        double r26322 = 2.0;
        double r26323 = r26321 / r26322;
        double r26324 = sin(r26312);
        double r26325 = r26324 * r26324;
        double r26326 = r26323 * r26325;
        double r26327 = r26317 - r26326;
        double r26328 = r26311 * r26327;
        double r26329 = cos(r26306);
        double r26330 = r26328 * r26329;
        double r26331 = -r26314;
        double r26332 = sin(r26331);
        double r26333 = r26324 * r26332;
        double r26334 = r26316 + r26333;
        double r26335 = r26330 / r26334;
        double r26336 = r26310 + r26335;
        double r26337 = acos(r26336);
        double r26338 = R;
        double r26339 = r26337 * r26338;
        return r26339;
}

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 16.8

    \[\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 sub-neg16.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \color{blue}{\left(\lambda_1 + \left(-\lambda_2\right)\right)}\right) \cdot R\]
  4. Applied cos-sum3.8

    \[\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 \left(-\lambda_2\right) - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}\right) \cdot R\]
  5. Simplified3.8

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

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \color{blue}{\frac{\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\right) \cdot R\]
  8. Applied associate-*r/3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \color{blue}{\frac{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}\right) \cdot R\]
  9. Simplified3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \frac{\color{blue}{\left(\cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_1\right)\right)\right) \cdot \cos \phi_1}}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}\right) \cdot R\]
  10. Using strategy rm
  11. Applied sin-mult3.8

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \frac{\left(\cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \color{blue}{\frac{\cos \left(\lambda_2 - \lambda_2\right) - \cos \left(\lambda_2 + \lambda_2\right)}{2}} \cdot \left(\sin \lambda_1 \cdot \sin \lambda_1\right)\right)\right) \cdot \cos \phi_1}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}\right) \cdot R\]
  12. Simplified3.8

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

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

Reproduce

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