\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_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \lambda_2\right) + \log \left(e^{\sin \phi_2 \cdot \sin \phi_1}\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r424572 = phi1;
double r424573 = sin(r424572);
double r424574 = phi2;
double r424575 = sin(r424574);
double r424576 = r424573 * r424575;
double r424577 = cos(r424572);
double r424578 = cos(r424574);
double r424579 = r424577 * r424578;
double r424580 = lambda1;
double r424581 = lambda2;
double r424582 = r424580 - r424581;
double r424583 = cos(r424582);
double r424584 = r424579 * r424583;
double r424585 = r424576 + r424584;
double r424586 = acos(r424585);
double r424587 = R;
double r424588 = r424586 * r424587;
return r424588;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r424589 = phi1;
double r424590 = cos(r424589);
double r424591 = phi2;
double r424592 = cos(r424591);
double r424593 = r424590 * r424592;
double r424594 = lambda1;
double r424595 = cos(r424594);
double r424596 = lambda2;
double r424597 = cos(r424596);
double r424598 = r424595 * r424597;
double r424599 = sin(r424594);
double r424600 = sin(r424596);
double r424601 = r424599 * r424600;
double r424602 = r424598 + r424601;
double r424603 = r424593 * r424602;
double r424604 = sin(r424591);
double r424605 = sin(r424589);
double r424606 = r424604 * r424605;
double r424607 = exp(r424606);
double r424608 = log(r424607);
double r424609 = r424603 + r424608;
double r424610 = acos(r424609);
double r424611 = R;
double r424612 = r424610 * r424611;
return r424612;
}



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