\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(\log \left(e^{\sin \phi_1 \cdot \sin \phi_2}\right) + \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 Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21424 = phi1;
double r21425 = sin(r21424);
double r21426 = phi2;
double r21427 = sin(r21426);
double r21428 = r21425 * r21427;
double r21429 = cos(r21424);
double r21430 = cos(r21426);
double r21431 = r21429 * r21430;
double r21432 = lambda1;
double r21433 = lambda2;
double r21434 = r21432 - r21433;
double r21435 = cos(r21434);
double r21436 = r21431 * r21435;
double r21437 = r21428 + r21436;
double r21438 = acos(r21437);
double r21439 = R;
double r21440 = r21438 * r21439;
return r21440;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r21441 = phi1;
double r21442 = sin(r21441);
double r21443 = phi2;
double r21444 = sin(r21443);
double r21445 = r21442 * r21444;
double r21446 = exp(r21445);
double r21447 = log(r21446);
double r21448 = cos(r21441);
double r21449 = cos(r21443);
double r21450 = r21448 * r21449;
double r21451 = lambda1;
double r21452 = cos(r21451);
double r21453 = lambda2;
double r21454 = cos(r21453);
double r21455 = r21452 * r21454;
double r21456 = sin(r21451);
double r21457 = -r21453;
double r21458 = sin(r21457);
double r21459 = r21456 * r21458;
double r21460 = r21455 - r21459;
double r21461 = r21450 * r21460;
double r21462 = r21447 + r21461;
double r21463 = acos(r21462);
double r21464 = R;
double r21465 = r21463 * r21464;
return r21465;
}



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 sub-neg16.7
Applied cos-sum3.8
Simplified3.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2020003
(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))