double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1377547 = phi1;
double r1377548 = sin(r1377547);
double r1377549 = phi2;
double r1377550 = sin(r1377549);
double r1377551 = r1377548 * r1377550;
double r1377552 = cos(r1377547);
double r1377553 = cos(r1377549);
double r1377554 = r1377552 * r1377553;
double r1377555 = lambda1;
double r1377556 = lambda2;
double r1377557 = r1377555 - r1377556;
double r1377558 = cos(r1377557);
double r1377559 = r1377554 * r1377558;
double r1377560 = r1377551 + r1377559;
double r1377561 = acos(r1377560);
double r1377562 = R;
double r1377563 = r1377561 * r1377562;
return r1377563;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r1377564 = phi2;
double r1377565 = cos(r1377564);
double r1377566 = phi1;
double r1377567 = cos(r1377566);
double r1377568 = r1377565 * r1377567;
double r1377569 = lambda1;
double r1377570 = sin(r1377569);
double r1377571 = lambda2;
double r1377572 = sin(r1377571);
double r1377573 = r1377570 * r1377572;
double r1377574 = cos(r1377571);
double r1377575 = cos(r1377569);
double r1377576 = r1377574 * r1377575;
double r1377577 = r1377573 + r1377576;
double r1377578 = sin(r1377564);
double r1377579 = sin(r1377566);
double r1377580 = r1377578 * r1377579;
double r1377581 = fma(r1377568, r1377577, r1377580);
double r1377582 = acos(r1377581);
double r1377583 = exp(r1377582);
double r1377584 = log(r1377583);
double r1377585 = R;
double r1377586 = r1377584 * r1377585;
return r1377586;
}
\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_2 \cdot \cos \phi_1\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2 + \cos \lambda_2 \cdot \cos \lambda_1\right) + \left(\sin \phi_2 \cdot \sin \phi_1\right))_*\right)}\right) \cdot R


Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Initial program 16.7
Simplified16.7
rmApplied cos-diff3.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019101 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))