\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 Re^{\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 \lambda_2\right)\right)\right)} \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21334 = phi1;
double r21335 = sin(r21334);
double r21336 = phi2;
double r21337 = sin(r21336);
double r21338 = r21335 * r21337;
double r21339 = cos(r21334);
double r21340 = cos(r21336);
double r21341 = r21339 * r21340;
double r21342 = lambda1;
double r21343 = lambda2;
double r21344 = r21342 - r21343;
double r21345 = cos(r21344);
double r21346 = r21341 * r21345;
double r21347 = r21338 + r21346;
double r21348 = acos(r21347);
double r21349 = R;
double r21350 = r21348 * r21349;
return r21350;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21351 = phi1;
double r21352 = sin(r21351);
double r21353 = phi2;
double r21354 = sin(r21353);
double r21355 = r21352 * r21354;
double r21356 = cos(r21351);
double r21357 = cos(r21353);
double r21358 = r21356 * r21357;
double r21359 = lambda1;
double r21360 = cos(r21359);
double r21361 = lambda2;
double r21362 = cos(r21361);
double r21363 = r21360 * r21362;
double r21364 = sin(r21359);
double r21365 = sin(r21361);
double r21366 = r21364 * r21365;
double r21367 = r21363 + r21366;
double r21368 = r21358 * r21367;
double r21369 = r21355 + r21368;
double r21370 = acos(r21369);
double r21371 = log(r21370);
double r21372 = exp(r21371);
double r21373 = R;
double r21374 = r21372 * r21373;
return r21374;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.7
rmApplied cos-diff3.9
rmApplied add-exp-log3.9
Final simplification3.9
herbie shell --seed 2019199
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))