\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 + \frac{\left(\cos \phi_2 \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \frac{1 - \cos \left(\lambda_2 + \lambda_2\right)}{2} \cdot \left(\sin \lambda_1 \cdot \sin \lambda_1\right)\right)\right) \cdot \cos \phi_1}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26289 = phi1;
double r26290 = sin(r26289);
double r26291 = phi2;
double r26292 = sin(r26291);
double r26293 = r26290 * r26292;
double r26294 = cos(r26289);
double r26295 = cos(r26291);
double r26296 = r26294 * r26295;
double r26297 = lambda1;
double r26298 = lambda2;
double r26299 = r26297 - r26298;
double r26300 = cos(r26299);
double r26301 = r26296 * r26300;
double r26302 = r26293 + r26301;
double r26303 = acos(r26302);
double r26304 = R;
double r26305 = r26303 * r26304;
return r26305;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26306 = phi1;
double r26307 = sin(r26306);
double r26308 = phi2;
double r26309 = sin(r26308);
double r26310 = r26307 * r26309;
double r26311 = cos(r26308);
double r26312 = lambda1;
double r26313 = cos(r26312);
double r26314 = lambda2;
double r26315 = cos(r26314);
double r26316 = r26313 * r26315;
double r26317 = r26316 * r26316;
double r26318 = 1.0;
double r26319 = r26314 + r26314;
double r26320 = cos(r26319);
double r26321 = r26318 - r26320;
double r26322 = 2.0;
double r26323 = r26321 / r26322;
double r26324 = sin(r26312);
double r26325 = r26324 * r26324;
double r26326 = r26323 * r26325;
double r26327 = r26317 - r26326;
double r26328 = r26311 * r26327;
double r26329 = cos(r26306);
double r26330 = r26328 * r26329;
double r26331 = -r26314;
double r26332 = sin(r26331);
double r26333 = r26324 * r26332;
double r26334 = r26316 + r26333;
double r26335 = r26330 / r26334;
double r26336 = r26310 + r26335;
double r26337 = acos(r26336);
double r26338 = R;
double r26339 = r26337 * r26338;
return r26339;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied sub-neg16.8
Applied cos-sum3.8
Simplified3.8
rmApplied flip--3.8
Applied associate-*r/3.8
Simplified3.8
rmApplied sin-mult3.8
Simplified3.8
Final simplification3.8
herbie shell --seed 2019304
(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))