\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\log \left(e^{\cos^{-1} \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \sin \phi_2 \cdot \sin \phi_1\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r969537 = phi1;
double r969538 = sin(r969537);
double r969539 = phi2;
double r969540 = sin(r969539);
double r969541 = r969538 * r969540;
double r969542 = cos(r969537);
double r969543 = cos(r969539);
double r969544 = r969542 * r969543;
double r969545 = lambda1;
double r969546 = lambda2;
double r969547 = r969545 - r969546;
double r969548 = cos(r969547);
double r969549 = r969544 * r969548;
double r969550 = r969541 + r969549;
double r969551 = acos(r969550);
double r969552 = R;
double r969553 = r969551 * r969552;
return r969553;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r969554 = phi1;
double r969555 = cos(r969554);
double r969556 = phi2;
double r969557 = cos(r969556);
double r969558 = r969555 * r969557;
double r969559 = lambda2;
double r969560 = sin(r969559);
double r969561 = lambda1;
double r969562 = sin(r969561);
double r969563 = r969560 * r969562;
double r969564 = cos(r969559);
double r969565 = cos(r969561);
double r969566 = r969564 * r969565;
double r969567 = r969563 + r969566;
double r969568 = r969558 * r969567;
double r969569 = sin(r969556);
double r969570 = sin(r969554);
double r969571 = r969569 * r969570;
double r969572 = r969568 + r969571;
double r969573 = acos(r969572);
double r969574 = exp(r969573);
double r969575 = log(r969574);
double r969576 = R;
double r969577 = r969575 * r969576;
return r969577;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.8
rmApplied cos-diff3.8
rmApplied add-log-exp3.9
Final simplification3.9
herbie shell --seed 2019130
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))