Average Error: 16.9 → 3.9
Time: 37.0s
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 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\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 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21694 = phi1;
        double r21695 = sin(r21694);
        double r21696 = phi2;
        double r21697 = sin(r21696);
        double r21698 = r21695 * r21697;
        double r21699 = cos(r21694);
        double r21700 = cos(r21696);
        double r21701 = r21699 * r21700;
        double r21702 = lambda1;
        double r21703 = lambda2;
        double r21704 = r21702 - r21703;
        double r21705 = cos(r21704);
        double r21706 = r21701 * r21705;
        double r21707 = r21698 + r21706;
        double r21708 = acos(r21707);
        double r21709 = R;
        double r21710 = r21708 * r21709;
        return r21710;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21711 = phi1;
        double r21712 = sin(r21711);
        double r21713 = phi2;
        double r21714 = sin(r21713);
        double r21715 = r21712 * r21714;
        double r21716 = cos(r21711);
        double r21717 = cos(r21713);
        double r21718 = r21716 * r21717;
        double r21719 = lambda1;
        double r21720 = cos(r21719);
        double r21721 = lambda2;
        double r21722 = cos(r21721);
        double r21723 = r21720 * r21722;
        double r21724 = sin(r21719);
        double r21725 = sin(r21721);
        double r21726 = r21724 * r21725;
        double r21727 = 3.0;
        double r21728 = pow(r21726, r21727);
        double r21729 = cbrt(r21728);
        double r21730 = r21723 + r21729;
        double r21731 = r21718 * r21730;
        double r21732 = r21715 + r21731;
        double r21733 = acos(r21732);
        double r21734 = R;
        double r21735 = r21733 * r21734;
        return r21735;
}

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

    \[\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(\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}{\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2}}\right)\right) \cdot R\]
  6. Applied add-cbrt-cube3.9

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

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

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

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

Reproduce

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