Average Error: 16.4 → 3.8
Time: 1.4m
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 \log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)}\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 \log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \cos \phi_1\right)\right)}\right)
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2733187 = phi1;
        double r2733188 = sin(r2733187);
        double r2733189 = phi2;
        double r2733190 = sin(r2733189);
        double r2733191 = r2733188 * r2733190;
        double r2733192 = cos(r2733187);
        double r2733193 = cos(r2733189);
        double r2733194 = r2733192 * r2733193;
        double r2733195 = lambda1;
        double r2733196 = lambda2;
        double r2733197 = r2733195 - r2733196;
        double r2733198 = cos(r2733197);
        double r2733199 = r2733194 * r2733198;
        double r2733200 = r2733191 + r2733199;
        double r2733201 = acos(r2733200);
        double r2733202 = R;
        double r2733203 = r2733201 * r2733202;
        return r2733203;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r2733204 = R;
        double r2733205 = phi1;
        double r2733206 = sin(r2733205);
        double r2733207 = phi2;
        double r2733208 = sin(r2733207);
        double r2733209 = r2733206 * r2733208;
        double r2733210 = lambda1;
        double r2733211 = sin(r2733210);
        double r2733212 = lambda2;
        double r2733213 = sin(r2733212);
        double r2733214 = r2733211 * r2733213;
        double r2733215 = cos(r2733212);
        double r2733216 = cos(r2733210);
        double r2733217 = r2733215 * r2733216;
        double r2733218 = r2733214 + r2733217;
        double r2733219 = cos(r2733207);
        double r2733220 = cos(r2733205);
        double r2733221 = r2733219 * r2733220;
        double r2733222 = r2733218 * r2733221;
        double r2733223 = r2733209 + r2733222;
        double r2733224 = acos(r2733223);
        double r2733225 = exp(r2733224);
        double r2733226 = log(r2733225);
        double r2733227 = r2733204 * r2733226;
        return r2733227;
}

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

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

    \[\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. Applied distribute-rgt-in3.7

    \[\leadsto \cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \color{blue}{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)\right)}\right) \cdot R\]
  5. Taylor expanded around -inf 3.7

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

    \[\leadsto \color{blue}{R \cdot \cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2\right)\right)}\]
  7. Using strategy rm
  8. Applied add-cbrt-cube3.8

    \[\leadsto R \cdot \cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \color{blue}{\sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}}\right) \cdot \cos \phi_2\right)\right)\]
  9. Using strategy rm
  10. Applied add-log-exp3.8

    \[\leadsto R \cdot \color{blue}{\log \left(e^{\cos^{-1} \left(\sin \phi_2 \cdot \sin \phi_1 + \cos \phi_1 \cdot \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 + \sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)}\right) \cdot \cos \phi_2\right)\right)}\right)}\]
  11. Simplified3.8

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

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

Reproduce

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