Average Error: 16.7 → 3.6
Time: 13.2s
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\]
\[\log \left(e^{e^{\log \left(\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\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
\log \left(e^{e^{\log \left(\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)\right)}}\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r22919 = phi1;
        double r22920 = sin(r22919);
        double r22921 = phi2;
        double r22922 = sin(r22921);
        double r22923 = r22920 * r22922;
        double r22924 = cos(r22919);
        double r22925 = cos(r22921);
        double r22926 = r22924 * r22925;
        double r22927 = lambda1;
        double r22928 = lambda2;
        double r22929 = r22927 - r22928;
        double r22930 = cos(r22929);
        double r22931 = r22926 * r22930;
        double r22932 = r22923 + r22931;
        double r22933 = acos(r22932);
        double r22934 = R;
        double r22935 = r22933 * r22934;
        return r22935;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r22936 = phi1;
        double r22937 = sin(r22936);
        double r22938 = phi2;
        double r22939 = sin(r22938);
        double r22940 = r22937 * r22939;
        double r22941 = cos(r22936);
        double r22942 = cos(r22938);
        double r22943 = r22941 * r22942;
        double r22944 = lambda1;
        double r22945 = cos(r22944);
        double r22946 = lambda2;
        double r22947 = cos(r22946);
        double r22948 = r22945 * r22947;
        double r22949 = sin(r22944);
        double r22950 = sin(r22946);
        double r22951 = r22949 * r22950;
        double r22952 = exp(r22951);
        double r22953 = log(r22952);
        double r22954 = r22948 + r22953;
        double r22955 = r22943 * r22954;
        double r22956 = r22940 + r22955;
        double r22957 = acos(r22956);
        double r22958 = log(r22957);
        double r22959 = exp(r22958);
        double r22960 = exp(r22959);
        double r22961 = log(r22960);
        double r22962 = R;
        double r22963 = r22961 * r22962;
        return r22963;
}

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.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-log-exp3.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}{\log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)}\right)\right) \cdot R\]
  6. Using strategy rm
  7. Applied add-log-exp3.6

    \[\leadsto \color{blue}{\log \left(e^{\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)}\right)} \cdot R\]
  8. Using strategy rm
  9. Applied add-exp-log3.6

    \[\leadsto \log \left(e^{\color{blue}{e^{\log \left(\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 + \log \left(e^{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)\right)}}}\right) \cdot R\]
  10. Final simplification3.6

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

Reproduce

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