\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_2 \cdot \sin \phi_1 + \frac{\cos \phi_2 \cdot \cos \phi_1}{\frac{\left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)}}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r657330 = phi1;
double r657331 = sin(r657330);
double r657332 = phi2;
double r657333 = sin(r657332);
double r657334 = r657331 * r657333;
double r657335 = cos(r657330);
double r657336 = cos(r657332);
double r657337 = r657335 * r657336;
double r657338 = lambda1;
double r657339 = lambda2;
double r657340 = r657338 - r657339;
double r657341 = cos(r657340);
double r657342 = r657337 * r657341;
double r657343 = r657334 + r657342;
double r657344 = acos(r657343);
double r657345 = R;
double r657346 = r657344 * r657345;
return r657346;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r657347 = phi2;
double r657348 = sin(r657347);
double r657349 = phi1;
double r657350 = sin(r657349);
double r657351 = r657348 * r657350;
double r657352 = cos(r657347);
double r657353 = cos(r657349);
double r657354 = r657352 * r657353;
double r657355 = lambda2;
double r657356 = sin(r657355);
double r657357 = lambda1;
double r657358 = sin(r657357);
double r657359 = r657356 * r657358;
double r657360 = r657359 * r657359;
double r657361 = cos(r657355);
double r657362 = cos(r657357);
double r657363 = r657361 * r657362;
double r657364 = r657363 * r657359;
double r657365 = r657360 - r657364;
double r657366 = r657363 * r657363;
double r657367 = r657365 + r657366;
double r657368 = r657359 * r657360;
double r657369 = r657366 * r657363;
double r657370 = r657368 + r657369;
double r657371 = r657367 / r657370;
double r657372 = r657354 / r657371;
double r657373 = r657351 + r657372;
double r657374 = acos(r657373);
double r657375 = R;
double r657376 = r657374 * r657375;
return r657376;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied cos-diff4.1
rmApplied flip3-+4.1
Applied associate-*r/4.1
Simplified4.1
rmApplied associate-/l*4.1
Final simplification4.1
herbie shell --seed 2019153
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))