\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(\mathsf{fma}\left(\sin \phi_1, \sin \phi_2, \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \lambda_2\right)}^{3}}\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25430 = phi1;
double r25431 = sin(r25430);
double r25432 = phi2;
double r25433 = sin(r25432);
double r25434 = r25431 * r25433;
double r25435 = cos(r25430);
double r25436 = cos(r25432);
double r25437 = r25435 * r25436;
double r25438 = lambda1;
double r25439 = lambda2;
double r25440 = r25438 - r25439;
double r25441 = cos(r25440);
double r25442 = r25437 * r25441;
double r25443 = r25434 + r25442;
double r25444 = acos(r25443);
double r25445 = R;
double r25446 = r25444 * r25445;
return r25446;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25447 = phi1;
double r25448 = sin(r25447);
double r25449 = phi2;
double r25450 = sin(r25449);
double r25451 = cos(r25447);
double r25452 = cos(r25449);
double r25453 = r25451 * r25452;
double r25454 = lambda2;
double r25455 = cos(r25454);
double r25456 = lambda1;
double r25457 = cos(r25456);
double r25458 = r25455 * r25457;
double r25459 = sin(r25456);
double r25460 = sin(r25454);
double r25461 = r25459 * r25460;
double r25462 = 3.0;
double r25463 = pow(r25461, r25462);
double r25464 = cbrt(r25463);
double r25465 = r25458 + r25464;
double r25466 = r25453 * r25465;
double r25467 = fma(r25448, r25450, r25466);
double r25468 = acos(r25467);
double r25469 = R;
double r25470 = r25468 * r25469;
return r25470;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 16.3
Simplified16.3
rmApplied cos-diff3.7
Simplified3.7
Simplified3.7
rmApplied add-cbrt-cube3.7
Applied add-cbrt-cube3.7
Applied cbrt-unprod3.7
Simplified3.7
Final simplification3.7
herbie shell --seed 2019325 +o rules:numerics
(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))