\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(\sqrt[3]{{\left(\sin \phi_1 \cdot \sin \phi_2\right)}^{3}} + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2 - \sqrt[3]{{\left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)}^{3}}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27219 = phi1;
double r27220 = sin(r27219);
double r27221 = phi2;
double r27222 = sin(r27221);
double r27223 = r27220 * r27222;
double r27224 = cos(r27219);
double r27225 = cos(r27221);
double r27226 = r27224 * r27225;
double r27227 = lambda1;
double r27228 = lambda2;
double r27229 = r27227 - r27228;
double r27230 = cos(r27229);
double r27231 = r27226 * r27230;
double r27232 = r27223 + r27231;
double r27233 = acos(r27232);
double r27234 = R;
double r27235 = r27233 * r27234;
return r27235;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27236 = phi1;
double r27237 = sin(r27236);
double r27238 = phi2;
double r27239 = sin(r27238);
double r27240 = r27237 * r27239;
double r27241 = 3.0;
double r27242 = pow(r27240, r27241);
double r27243 = cbrt(r27242);
double r27244 = cos(r27236);
double r27245 = cos(r27238);
double r27246 = r27244 * r27245;
double r27247 = lambda1;
double r27248 = cos(r27247);
double r27249 = lambda2;
double r27250 = cos(r27249);
double r27251 = r27248 * r27250;
double r27252 = sin(r27247);
double r27253 = -r27249;
double r27254 = sin(r27253);
double r27255 = r27252 * r27254;
double r27256 = pow(r27255, r27241);
double r27257 = cbrt(r27256);
double r27258 = r27251 - r27257;
double r27259 = r27246 * r27258;
double r27260 = r27243 + r27259;
double r27261 = acos(r27260);
double r27262 = R;
double r27263 = r27261 * r27262;
return r27263;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.3
rmApplied sub-neg17.3
Applied cos-sum4.1
Simplified4.1
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.1
Simplified4.1
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.1
Simplified4.1
Final simplification4.1
herbie shell --seed 2020047
(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))