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



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 sub-neg16.5
Applied cos-sum3.7
Simplified3.7
rmApplied add-cube-cbrt3.7
Applied associate-*r*3.7
Final simplification3.7
herbie shell --seed 2020042
(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))