\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 RR \cdot \cos^{-1} \left(\sin \lambda_1 \cdot \sqrt[3]{{\left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \sin \lambda_2\right)\right)}^{3}} + \left(\cos \lambda_1 \cdot \left(\cos \phi_1 \cdot \left(\cos \phi_2 \cdot \cos \lambda_2\right)\right) + \sin \phi_1 \cdot \sin \phi_2\right)\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22980 = phi1;
double r22981 = sin(r22980);
double r22982 = phi2;
double r22983 = sin(r22982);
double r22984 = r22981 * r22983;
double r22985 = cos(r22980);
double r22986 = cos(r22982);
double r22987 = r22985 * r22986;
double r22988 = lambda1;
double r22989 = lambda2;
double r22990 = r22988 - r22989;
double r22991 = cos(r22990);
double r22992 = r22987 * r22991;
double r22993 = r22984 + r22992;
double r22994 = acos(r22993);
double r22995 = R;
double r22996 = r22994 * r22995;
return r22996;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22997 = R;
double r22998 = lambda1;
double r22999 = sin(r22998);
double r23000 = phi1;
double r23001 = cos(r23000);
double r23002 = phi2;
double r23003 = cos(r23002);
double r23004 = lambda2;
double r23005 = sin(r23004);
double r23006 = r23003 * r23005;
double r23007 = r23001 * r23006;
double r23008 = 3.0;
double r23009 = pow(r23007, r23008);
double r23010 = cbrt(r23009);
double r23011 = r22999 * r23010;
double r23012 = cos(r22998);
double r23013 = cos(r23004);
double r23014 = r23003 * r23013;
double r23015 = r23001 * r23014;
double r23016 = r23012 * r23015;
double r23017 = sin(r23000);
double r23018 = sin(r23002);
double r23019 = r23017 * r23018;
double r23020 = r23016 + r23019;
double r23021 = r23011 + r23020;
double r23022 = acos(r23021);
double r23023 = r22997 * r23022;
return r23023;
}



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.6
Applied distribute-lft-in3.6
rmApplied add-log-exp3.6
rmApplied pow13.6
Applied log-pow3.6
Simplified3.6
rmApplied add-cbrt-cube3.6
Applied add-cbrt-cube3.6
Applied cbrt-unprod3.6
Applied add-cbrt-cube3.6
Applied cbrt-unprod3.6
Simplified3.6
Final simplification3.6
herbie shell --seed 2019297
(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))