Average Error: 16.7 → 3.9
Time: 13.7s
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(\left(\sin \phi_1 \cdot \sin \phi_2 + \cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)\right) - \sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \left(-1 \cdot \lambda_2\right)\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(\left(\sin \phi_1 \cdot \sin \phi_2 + \cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)\right) - \sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21849 = phi1;
        double r21850 = sin(r21849);
        double r21851 = phi2;
        double r21852 = sin(r21851);
        double r21853 = r21850 * r21852;
        double r21854 = cos(r21849);
        double r21855 = cos(r21851);
        double r21856 = r21854 * r21855;
        double r21857 = lambda1;
        double r21858 = lambda2;
        double r21859 = r21857 - r21858;
        double r21860 = cos(r21859);
        double r21861 = r21856 * r21860;
        double r21862 = r21853 + r21861;
        double r21863 = acos(r21862);
        double r21864 = R;
        double r21865 = r21863 * r21864;
        return r21865;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r21866 = phi1;
        double r21867 = sin(r21866);
        double r21868 = phi2;
        double r21869 = sin(r21868);
        double r21870 = r21867 * r21869;
        double r21871 = lambda1;
        double r21872 = cos(r21871);
        double r21873 = cos(r21866);
        double r21874 = cos(r21868);
        double r21875 = lambda2;
        double r21876 = cos(r21875);
        double r21877 = r21874 * r21876;
        double r21878 = r21873 * r21877;
        double r21879 = r21872 * r21878;
        double r21880 = r21870 + r21879;
        double r21881 = sin(r21871);
        double r21882 = -1.0;
        double r21883 = r21882 * r21875;
        double r21884 = sin(r21883);
        double r21885 = r21874 * r21884;
        double r21886 = r21873 * r21885;
        double r21887 = r21881 * r21886;
        double r21888 = r21880 - r21887;
        double r21889 = acos(r21888);
        double r21890 = R;
        double r21891 = r21889 * r21890;
        return r21891;
}

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

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

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

    \[\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(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \sqrt[3]{\sin \lambda_1}\right)} \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot R\]
  8. Applied associate-*l*4.0

    \[\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 \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \left(-\lambda_2\right)\right)}\right)\right) \cdot R\]
  9. Taylor expanded around 0 3.9

    \[\leadsto \color{blue}{\cos^{-1} \left(\left(\sin \phi_1 \cdot \sin \phi_2 + \cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)\right) - \sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \left(-\lambda_2\right)\right)\right)\right)} \cdot R\]
  10. Simplified3.9

    \[\leadsto \color{blue}{\cos^{-1} \left(\left(\sin \phi_1 \cdot \sin \phi_2 + \cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right)\right) - \sin \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \left(-1 \cdot \lambda_2\right)\right)\right)\right)} \cdot R\]
  11. Final simplification3.9

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

Reproduce

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