Average Error: 16.5 → 3.7
Time: 23.4s
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 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\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
\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 - \left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r23990 = phi1;
        double r23991 = sin(r23990);
        double r23992 = phi2;
        double r23993 = sin(r23992);
        double r23994 = r23991 * r23993;
        double r23995 = cos(r23990);
        double r23996 = cos(r23992);
        double r23997 = r23995 * r23996;
        double r23998 = lambda1;
        double r23999 = lambda2;
        double r24000 = r23998 - r23999;
        double r24001 = cos(r24000);
        double r24002 = r23997 * r24001;
        double r24003 = r23994 + r24002;
        double r24004 = acos(r24003);
        double r24005 = R;
        double r24006 = r24004 * r24005;
        return r24006;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r24007 = phi1;
        double r24008 = sin(r24007);
        double r24009 = phi2;
        double r24010 = sin(r24009);
        double r24011 = r24008 * r24010;
        double r24012 = cos(r24007);
        double r24013 = cos(r24009);
        double r24014 = r24012 * r24013;
        double r24015 = lambda1;
        double r24016 = cos(r24015);
        double r24017 = lambda2;
        double r24018 = cos(r24017);
        double r24019 = r24016 * r24018;
        double r24020 = sin(r24015);
        double r24021 = -r24017;
        double r24022 = sin(r24021);
        double r24023 = cbrt(r24022);
        double r24024 = r24023 * r24023;
        double r24025 = r24020 * r24024;
        double r24026 = r24025 * r24023;
        double r24027 = r24019 - r24026;
        double r24028 = r24014 * r24027;
        double r24029 = r24011 + r24028;
        double r24030 = acos(r24029);
        double r24031 = R;
        double r24032 = r24030 * r24031;
        return r24032;
}

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

    \[\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.5

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

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

    \[\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 add-cube-cbrt3.7

    \[\leadsto \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 \color{blue}{\left(\left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)}\right)\right) \cdot R\]
  8. Applied associate-*r*3.7

    \[\leadsto \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 - \color{blue}{\left(\sin \lambda_1 \cdot \left(\sqrt[3]{\sin \left(-\lambda_2\right)} \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}\right)\right) \cdot \sqrt[3]{\sin \left(-\lambda_2\right)}}\right)\right) \cdot R\]
  9. Final simplification3.7

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

Reproduce

herbie shell --seed 2020042 
(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))