\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(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \left(\left(\sqrt[3]{\sin \lambda_1} \cdot \sqrt[3]{\sin \lambda_1}\right) \cdot \left(\sqrt[3]{\sin \lambda_1} \cdot \sin \lambda_2\right)\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right)\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r23337 = phi1;
double r23338 = sin(r23337);
double r23339 = phi2;
double r23340 = sin(r23339);
double r23341 = r23338 * r23340;
double r23342 = cos(r23337);
double r23343 = cos(r23339);
double r23344 = r23342 * r23343;
double r23345 = lambda1;
double r23346 = lambda2;
double r23347 = r23345 - r23346;
double r23348 = cos(r23347);
double r23349 = r23344 * r23348;
double r23350 = r23341 + r23349;
double r23351 = acos(r23350);
double r23352 = R;
double r23353 = r23351 * r23352;
return r23353;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r23354 = phi1;
double r23355 = sin(r23354);
double r23356 = phi2;
double r23357 = sin(r23356);
double r23358 = r23355 * r23357;
double r23359 = lambda1;
double r23360 = cos(r23359);
double r23361 = lambda2;
double r23362 = cos(r23361);
double r23363 = r23360 * r23362;
double r23364 = cos(r23354);
double r23365 = cos(r23356);
double r23366 = r23364 * r23365;
double r23367 = r23363 * r23366;
double r23368 = sin(r23359);
double r23369 = cbrt(r23368);
double r23370 = r23369 * r23369;
double r23371 = sin(r23361);
double r23372 = r23369 * r23371;
double r23373 = r23370 * r23372;
double r23374 = r23373 * r23366;
double r23375 = r23367 + r23374;
double r23376 = r23358 + r23375;
double r23377 = acos(r23376);
double r23378 = R;
double r23379 = r23377 * r23378;
return r23379;
}



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.8
Applied distribute-lft-in3.8
Simplified3.8
Simplified3.8
rmApplied add-cube-cbrt3.8
Applied associate-*l*3.8
Final simplification3.8
herbie shell --seed 2019212
(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))