\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 RR \cdot \cos^{-1} \left(\left(\sqrt[3]{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)} + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1356475 = phi1;
double r1356476 = sin(r1356475);
double r1356477 = phi2;
double r1356478 = sin(r1356477);
double r1356479 = r1356476 * r1356478;
double r1356480 = cos(r1356475);
double r1356481 = cos(r1356477);
double r1356482 = r1356480 * r1356481;
double r1356483 = lambda1;
double r1356484 = lambda2;
double r1356485 = r1356483 - r1356484;
double r1356486 = cos(r1356485);
double r1356487 = r1356482 * r1356486;
double r1356488 = r1356479 + r1356487;
double r1356489 = acos(r1356488);
double r1356490 = R;
double r1356491 = r1356489 * r1356490;
return r1356491;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1356492 = R;
double r1356493 = lambda2;
double r1356494 = sin(r1356493);
double r1356495 = lambda1;
double r1356496 = sin(r1356495);
double r1356497 = r1356494 * r1356496;
double r1356498 = r1356497 * r1356497;
double r1356499 = r1356497 * r1356498;
double r1356500 = cbrt(r1356499);
double r1356501 = cos(r1356493);
double r1356502 = cos(r1356495);
double r1356503 = r1356501 * r1356502;
double r1356504 = r1356500 + r1356503;
double r1356505 = phi1;
double r1356506 = cos(r1356505);
double r1356507 = phi2;
double r1356508 = cos(r1356507);
double r1356509 = r1356506 * r1356508;
double r1356510 = r1356504 * r1356509;
double r1356511 = sin(r1356507);
double r1356512 = sin(r1356505);
double r1356513 = r1356511 * r1356512;
double r1356514 = r1356510 + r1356513;
double r1356515 = acos(r1356514);
double r1356516 = r1356492 * r1356515;
return r1356516;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.6
rmApplied cos-diff3.9
rmApplied add-cbrt-cube3.9
Applied add-cbrt-cube3.9
Applied cbrt-unprod3.9
Simplified3.9
Final simplification3.9
herbie shell --seed 2019179
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))