\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\frac{\left(\frac{\pi}{2} \cdot \frac{\pi}{2} - \sin^{-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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right) \cdot \sin^{-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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)\right) \cdot R}{\frac{\pi}{2} + \sin^{-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 - \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25268 = phi1;
double r25269 = sin(r25268);
double r25270 = phi2;
double r25271 = sin(r25270);
double r25272 = r25269 * r25271;
double r25273 = cos(r25268);
double r25274 = cos(r25270);
double r25275 = r25273 * r25274;
double r25276 = lambda1;
double r25277 = lambda2;
double r25278 = r25276 - r25277;
double r25279 = cos(r25278);
double r25280 = r25275 * r25279;
double r25281 = r25272 + r25280;
double r25282 = acos(r25281);
double r25283 = R;
double r25284 = r25282 * r25283;
return r25284;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r25285 = atan2(1.0, 0.0);
double r25286 = 2.0;
double r25287 = r25285 / r25286;
double r25288 = r25287 * r25287;
double r25289 = phi1;
double r25290 = sin(r25289);
double r25291 = phi2;
double r25292 = sin(r25291);
double r25293 = r25290 * r25292;
double r25294 = cos(r25289);
double r25295 = cos(r25291);
double r25296 = r25294 * r25295;
double r25297 = lambda1;
double r25298 = cos(r25297);
double r25299 = lambda2;
double r25300 = cos(r25299);
double r25301 = r25298 * r25300;
double r25302 = sin(r25297);
double r25303 = -r25299;
double r25304 = sin(r25303);
double r25305 = r25302 * r25304;
double r25306 = r25301 - r25305;
double r25307 = r25296 * r25306;
double r25308 = r25293 + r25307;
double r25309 = asin(r25308);
double r25310 = r25309 * r25309;
double r25311 = r25288 - r25310;
double r25312 = R;
double r25313 = r25311 * r25312;
double r25314 = r25287 + r25309;
double r25315 = r25313 / r25314;
return r25315;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.4
rmApplied sub-neg17.4
Applied cos-sum4.0
Simplified4.0
rmApplied acos-asin4.0
rmApplied flip--4.1
Applied associate-*l/4.2
Final simplification4.2
herbie shell --seed 2020020
(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))