Average Error: 16.5 → 3.9
Time: 56.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(\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 + \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\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(\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 + \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right) \cdot R
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r5351288 = phi1;
        double r5351289 = sin(r5351288);
        double r5351290 = phi2;
        double r5351291 = sin(r5351290);
        double r5351292 = r5351289 * r5351291;
        double r5351293 = cos(r5351288);
        double r5351294 = cos(r5351290);
        double r5351295 = r5351293 * r5351294;
        double r5351296 = lambda1;
        double r5351297 = lambda2;
        double r5351298 = r5351296 - r5351297;
        double r5351299 = cos(r5351298);
        double r5351300 = r5351295 * r5351299;
        double r5351301 = r5351292 + r5351300;
        double r5351302 = acos(r5351301);
        double r5351303 = R;
        double r5351304 = r5351302 * r5351303;
        return r5351304;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r5351305 = phi1;
        double r5351306 = sin(r5351305);
        double r5351307 = phi2;
        double r5351308 = sin(r5351307);
        double r5351309 = r5351306 * r5351308;
        double r5351310 = cos(r5351305);
        double r5351311 = cos(r5351307);
        double r5351312 = r5351310 * r5351311;
        double r5351313 = lambda1;
        double r5351314 = cos(r5351313);
        double r5351315 = lambda2;
        double r5351316 = cos(r5351315);
        double r5351317 = r5351314 * r5351316;
        double r5351318 = sin(r5351313);
        double r5351319 = sin(r5351315);
        double r5351320 = r5351318 * r5351319;
        double r5351321 = r5351320 * r5351320;
        double r5351322 = cbrt(r5351321);
        double r5351323 = cbrt(r5351320);
        double r5351324 = r5351322 * r5351323;
        double r5351325 = r5351317 + r5351324;
        double r5351326 = r5351312 * r5351325;
        double r5351327 = r5351309 + r5351326;
        double r5351328 = acos(r5351327);
        double r5351329 = R;
        double r5351330 = r5351328 * r5351329;
        return r5351330;
}

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

    \[\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-cbrt-cube3.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 + \sin \lambda_1 \cdot \color{blue}{\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2}}\right)\right) \cdot R\]
  6. Applied add-cbrt-cube3.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}{\sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1}} \cdot \sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2}\right)\right) \cdot R\]
  7. Applied cbrt-unprod3.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}{\sqrt[3]{\left(\left(\sin \lambda_1 \cdot \sin \lambda_1\right) \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_2\right) \cdot \sin \lambda_2\right)}}\right)\right) \cdot R\]
  8. Simplified3.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 + \sqrt[3]{\color{blue}{\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)\right) \cdot R\]
  9. Using strategy rm
  10. Applied cbrt-prod3.9

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

    \[\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 + \sqrt[3]{\left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right) \cdot R\]

Reproduce

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