\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 RR \cdot \cos^{-1} \left(\left(\cos \lambda_2 \cdot \cos \lambda_1 - \sin \left(-\lambda_2\right) \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \left(\log \left(\sqrt{e^{\sin \phi_2 \cdot \sin \phi_1}}\right) + \log \left(\sqrt{e^{\sin \phi_2 \cdot \sin \phi_1}}\right)\right)\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22084 = phi1;
double r22085 = sin(r22084);
double r22086 = phi2;
double r22087 = sin(r22086);
double r22088 = r22085 * r22087;
double r22089 = cos(r22084);
double r22090 = cos(r22086);
double r22091 = r22089 * r22090;
double r22092 = lambda1;
double r22093 = lambda2;
double r22094 = r22092 - r22093;
double r22095 = cos(r22094);
double r22096 = r22091 * r22095;
double r22097 = r22088 + r22096;
double r22098 = acos(r22097);
double r22099 = R;
double r22100 = r22098 * r22099;
return r22100;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r22101 = R;
double r22102 = lambda2;
double r22103 = cos(r22102);
double r22104 = lambda1;
double r22105 = cos(r22104);
double r22106 = r22103 * r22105;
double r22107 = -r22102;
double r22108 = sin(r22107);
double r22109 = sin(r22104);
double r22110 = r22108 * r22109;
double r22111 = r22106 - r22110;
double r22112 = phi1;
double r22113 = cos(r22112);
double r22114 = phi2;
double r22115 = cos(r22114);
double r22116 = r22113 * r22115;
double r22117 = r22111 * r22116;
double r22118 = sin(r22114);
double r22119 = sin(r22112);
double r22120 = r22118 * r22119;
double r22121 = exp(r22120);
double r22122 = sqrt(r22121);
double r22123 = log(r22122);
double r22124 = r22123 + r22123;
double r22125 = r22117 + r22124;
double r22126 = acos(r22125);
double r22127 = r22101 * r22126;
return r22127;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.6
Simplified16.6
rmApplied sub-neg16.6
Applied cos-sum3.5
Simplified3.5
Simplified3.5
rmApplied add-log-exp3.6
rmApplied add-sqr-sqrt3.6
Applied log-prod3.6
Simplified3.6
Simplified3.6
Final simplification3.6
herbie shell --seed 2019195
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))