Average Error: 16.8 → 3.5
Time: 14.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\]
\[e^{\log \left({\left(\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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}\right)\right)}^{1}\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
e^{\log \left({\left(\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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}\right)\right)}^{1}\right)} \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r24223 = phi1;
        double r24224 = sin(r24223);
        double r24225 = phi2;
        double r24226 = sin(r24225);
        double r24227 = r24224 * r24226;
        double r24228 = cos(r24223);
        double r24229 = cos(r24225);
        double r24230 = r24228 * r24229;
        double r24231 = lambda1;
        double r24232 = lambda2;
        double r24233 = r24231 - r24232;
        double r24234 = cos(r24233);
        double r24235 = r24230 * r24234;
        double r24236 = r24227 + r24235;
        double r24237 = acos(r24236);
        double r24238 = R;
        double r24239 = r24237 * r24238;
        return r24239;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r24240 = phi1;
        double r24241 = sin(r24240);
        double r24242 = phi2;
        double r24243 = sin(r24242);
        double r24244 = r24241 * r24243;
        double r24245 = cos(r24240);
        double r24246 = cos(r24242);
        double r24247 = r24245 * r24246;
        double r24248 = lambda1;
        double r24249 = cos(r24248);
        double r24250 = lambda2;
        double r24251 = cos(r24250);
        double r24252 = r24249 * r24251;
        double r24253 = sin(r24248);
        double r24254 = -r24250;
        double r24255 = sin(r24254);
        double r24256 = r24253 * r24255;
        double r24257 = r24252 - r24256;
        double r24258 = r24247 * r24257;
        double r24259 = r24244 + r24258;
        double r24260 = acos(r24259);
        double r24261 = exp(r24260);
        double r24262 = log(r24261);
        double r24263 = 1.0;
        double r24264 = pow(r24262, r24263);
        double r24265 = log(r24264);
        double r24266 = exp(r24265);
        double r24267 = R;
        double r24268 = r24266 * r24267;
        return r24268;
}

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

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

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

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

    \[\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-exp-log3.5

    \[\leadsto \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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)\right)}} \cdot R\]
  8. Using strategy rm
  9. Applied add-log-exp3.5

    \[\leadsto e^{\log \color{blue}{\left(\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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}\right)\right)}} \cdot R\]
  10. Using strategy rm
  11. Applied pow13.5

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

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

Reproduce

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