\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(\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) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r499524 = phi1;
double r499525 = sin(r499524);
double r499526 = phi2;
double r499527 = sin(r499526);
double r499528 = r499525 * r499527;
double r499529 = cos(r499524);
double r499530 = cos(r499526);
double r499531 = r499529 * r499530;
double r499532 = lambda1;
double r499533 = lambda2;
double r499534 = r499532 - r499533;
double r499535 = cos(r499534);
double r499536 = r499531 * r499535;
double r499537 = r499528 + r499536;
double r499538 = acos(r499537);
double r499539 = R;
double r499540 = r499538 * r499539;
return r499540;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r499541 = phi1;
double r499542 = cos(r499541);
double r499543 = phi2;
double r499544 = cos(r499543);
double r499545 = r499542 * r499544;
double r499546 = lambda2;
double r499547 = cos(r499546);
double r499548 = lambda1;
double r499549 = cos(r499548);
double r499550 = r499547 * r499549;
double r499551 = sin(r499546);
double r499552 = sin(r499548);
double r499553 = r499551 * r499552;
double r499554 = exp(r499553);
double r499555 = log(r499554);
double r499556 = r499550 + r499555;
double r499557 = r499545 * r499556;
double r499558 = sin(r499543);
double r499559 = sin(r499541);
double r499560 = r499558 * r499559;
double r499561 = r499557 + r499560;
double r499562 = acos(r499561);
double r499563 = R;
double r499564 = r499562 * r499563;
return r499564;
}



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.6
rmApplied add-log-exp3.6
Final simplification3.6
herbie shell --seed 2019151
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))