Average Error: 17.0 → 3.9
Time: 51.8s
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\]
\[R \cdot \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) + \sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_2 \cdot \sin \phi_1\right)\right)}\right)\]
\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
R \cdot \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) + \sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_2 \cdot \sin \phi_1\right)\right)}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r865518 = phi1;
        double r865519 = sin(r865518);
        double r865520 = phi2;
        double r865521 = sin(r865520);
        double r865522 = r865519 * r865521;
        double r865523 = cos(r865518);
        double r865524 = cos(r865520);
        double r865525 = r865523 * r865524;
        double r865526 = lambda1;
        double r865527 = lambda2;
        double r865528 = r865526 - r865527;
        double r865529 = cos(r865528);
        double r865530 = r865525 * r865529;
        double r865531 = r865522 + r865530;
        double r865532 = acos(r865531);
        double r865533 = R;
        double r865534 = r865532 * r865533;
        return r865534;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r865535 = R;
        double r865536 = phi2;
        double r865537 = cos(r865536);
        double r865538 = phi1;
        double r865539 = cos(r865538);
        double r865540 = r865537 * r865539;
        double r865541 = lambda1;
        double r865542 = sin(r865541);
        double r865543 = lambda2;
        double r865544 = sin(r865543);
        double r865545 = r865542 * r865544;
        double r865546 = cos(r865541);
        double r865547 = cos(r865543);
        double r865548 = r865546 * r865547;
        double r865549 = r865545 + r865548;
        double r865550 = r865540 * r865549;
        double r865551 = sin(r865536);
        double r865552 = sin(r865538);
        double r865553 = r865551 * r865552;
        double r865554 = r865553 * r865553;
        double r865555 = r865553 * r865554;
        double r865556 = cbrt(r865555);
        double r865557 = r865550 + r865556;
        double r865558 = acos(r865557);
        double r865559 = r865535 * r865558;
        return r865559;
}

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.0

    \[\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-diff3.9

    \[\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-cbrt-cube3.9

    \[\leadsto \cos^{-1} \left(\color{blue}{\sqrt[3]{\left(\left(\sin \phi_1 \cdot \sin \phi_2\right) \cdot \left(\sin \phi_1 \cdot \sin \phi_2\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \phi_2\right)}} + \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) \cdot R\]
  6. Final simplification3.9

    \[\leadsto R \cdot \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) + \sqrt[3]{\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\left(\sin \phi_2 \cdot \sin \phi_1\right) \cdot \left(\sin \phi_2 \cdot \sin \phi_1\right)\right)}\right)\]

Reproduce

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