\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 e^{\log \left(\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1 + \log \left(e^{\sin \lambda_2 \cdot \sin \lambda_1}\right)\right) + \sin \phi_2 \cdot \sin \phi_1\right)\right)}double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1130376 = phi1;
double r1130377 = sin(r1130376);
double r1130378 = phi2;
double r1130379 = sin(r1130378);
double r1130380 = r1130377 * r1130379;
double r1130381 = cos(r1130376);
double r1130382 = cos(r1130378);
double r1130383 = r1130381 * r1130382;
double r1130384 = lambda1;
double r1130385 = lambda2;
double r1130386 = r1130384 - r1130385;
double r1130387 = cos(r1130386);
double r1130388 = r1130383 * r1130387;
double r1130389 = r1130380 + r1130388;
double r1130390 = acos(r1130389);
double r1130391 = R;
double r1130392 = r1130390 * r1130391;
return r1130392;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1130393 = R;
double r1130394 = phi1;
double r1130395 = cos(r1130394);
double r1130396 = phi2;
double r1130397 = cos(r1130396);
double r1130398 = r1130395 * r1130397;
double r1130399 = lambda2;
double r1130400 = cos(r1130399);
double r1130401 = lambda1;
double r1130402 = cos(r1130401);
double r1130403 = r1130400 * r1130402;
double r1130404 = sin(r1130399);
double r1130405 = sin(r1130401);
double r1130406 = r1130404 * r1130405;
double r1130407 = exp(r1130406);
double r1130408 = log(r1130407);
double r1130409 = r1130403 + r1130408;
double r1130410 = r1130398 * r1130409;
double r1130411 = sin(r1130396);
double r1130412 = sin(r1130394);
double r1130413 = r1130411 * r1130412;
double r1130414 = r1130410 + r1130413;
double r1130415 = acos(r1130414);
double r1130416 = log(r1130415);
double r1130417 = exp(r1130416);
double r1130418 = r1130393 * r1130417;
return r1130418;
}



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.9
rmApplied add-log-exp4.0
rmApplied add-exp-log4.0
Final simplification4.0
herbie shell --seed 2019112
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))