\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 Rdouble 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;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.5
rmApplied cos-diff3.8
rmApplied add-cbrt-cube3.8
Applied add-cbrt-cube3.8
Applied cbrt-unprod3.8
Simplified3.8
rmApplied cbrt-prod3.9
Final simplification3.9
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))