Average Error: 16.5 → 3.6
Time: 35.3s
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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \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 + \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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21811 = phi1;
        double r21812 = sin(r21811);
        double r21813 = phi2;
        double r21814 = sin(r21813);
        double r21815 = r21812 * r21814;
        double r21816 = cos(r21811);
        double r21817 = cos(r21813);
        double r21818 = r21816 * r21817;
        double r21819 = lambda1;
        double r21820 = lambda2;
        double r21821 = r21819 - r21820;
        double r21822 = cos(r21821);
        double r21823 = r21818 * r21822;
        double r21824 = r21815 + r21823;
        double r21825 = acos(r21824);
        double r21826 = R;
        double r21827 = r21825 * r21826;
        return r21827;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21828 = phi1;
        double r21829 = sin(r21828);
        double r21830 = phi2;
        double r21831 = sin(r21830);
        double r21832 = r21829 * r21831;
        double r21833 = cos(r21828);
        double r21834 = cos(r21830);
        double r21835 = r21833 * r21834;
        double r21836 = lambda1;
        double r21837 = cos(r21836);
        double r21838 = lambda2;
        double r21839 = cos(r21838);
        double r21840 = r21837 * r21839;
        double r21841 = sin(r21836);
        double r21842 = sin(r21838);
        double r21843 = cbrt(r21842);
        double r21844 = r21843 * r21843;
        double r21845 = r21841 * r21844;
        double r21846 = r21845 * r21843;
        double r21847 = r21840 + r21846;
        double r21848 = r21835 * r21847;
        double r21849 = r21832 + r21848;
        double r21850 = acos(r21849);
        double r21851 = R;
        double r21852 = r21850 * r21851;
        return r21852;
}

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 cos-diff3.6

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

    \[\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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_2}\right)}\right)\right) \cdot R\]
  6. Applied associate-*r*3.6

    \[\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 \lambda_2} \cdot \sqrt[3]{\sin \lambda_2}\right)\right) \cdot \sqrt[3]{\sin \lambda_2}}\right)\right) \cdot R\]
  7. Final simplification3.6

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

Reproduce

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