Average Error: 16.7 → 3.8
Time: 40.6s
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(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\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(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \left(\sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_2 \cdot \sin \lambda_1}\right) + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1146856 = phi1;
        double r1146857 = sin(r1146856);
        double r1146858 = phi2;
        double r1146859 = sin(r1146858);
        double r1146860 = r1146857 * r1146859;
        double r1146861 = cos(r1146856);
        double r1146862 = cos(r1146858);
        double r1146863 = r1146861 * r1146862;
        double r1146864 = lambda1;
        double r1146865 = lambda2;
        double r1146866 = r1146864 - r1146865;
        double r1146867 = cos(r1146866);
        double r1146868 = r1146863 * r1146867;
        double r1146869 = r1146860 + r1146868;
        double r1146870 = acos(r1146869);
        double r1146871 = R;
        double r1146872 = r1146870 * r1146871;
        return r1146872;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r1146873 = R;
        double r1146874 = lambda2;
        double r1146875 = sin(r1146874);
        double r1146876 = lambda1;
        double r1146877 = sin(r1146876);
        double r1146878 = r1146875 * r1146877;
        double r1146879 = cbrt(r1146878);
        double r1146880 = r1146879 * r1146879;
        double r1146881 = r1146879 * r1146880;
        double r1146882 = cos(r1146874);
        double r1146883 = cos(r1146876);
        double r1146884 = r1146882 * r1146883;
        double r1146885 = r1146881 + r1146884;
        double r1146886 = phi1;
        double r1146887 = cos(r1146886);
        double r1146888 = phi2;
        double r1146889 = cos(r1146888);
        double r1146890 = r1146887 * r1146889;
        double r1146891 = r1146885 * r1146890;
        double r1146892 = sin(r1146888);
        double r1146893 = sin(r1146886);
        double r1146894 = r1146892 * r1146893;
        double r1146895 = r1146891 + r1146894;
        double r1146896 = acos(r1146895);
        double r1146897 = r1146873 * r1146896;
        return r1146897;
}

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

    \[\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.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 \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot R\]
  4. Using strategy rm
  5. Applied add-cube-cbrt3.8

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

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

Reproduce

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