\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(\sin \phi_1 \cdot \sin \phi_2 + \frac{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \left(\sin \lambda_1 \cdot \sin \left(-\lambda_2\right)\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27186 = phi1;
double r27187 = sin(r27186);
double r27188 = phi2;
double r27189 = sin(r27188);
double r27190 = r27187 * r27189;
double r27191 = cos(r27186);
double r27192 = cos(r27188);
double r27193 = r27191 * r27192;
double r27194 = lambda1;
double r27195 = lambda2;
double r27196 = r27194 - r27195;
double r27197 = cos(r27196);
double r27198 = r27193 * r27197;
double r27199 = r27190 + r27198;
double r27200 = acos(r27199);
double r27201 = R;
double r27202 = r27200 * r27201;
return r27202;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r27203 = R;
double r27204 = phi1;
double r27205 = sin(r27204);
double r27206 = phi2;
double r27207 = sin(r27206);
double r27208 = r27205 * r27207;
double r27209 = cos(r27204);
double r27210 = cos(r27206);
double r27211 = r27209 * r27210;
double r27212 = lambda1;
double r27213 = cos(r27212);
double r27214 = lambda2;
double r27215 = cos(r27214);
double r27216 = r27213 * r27215;
double r27217 = r27216 * r27216;
double r27218 = sin(r27212);
double r27219 = -r27214;
double r27220 = sin(r27219);
double r27221 = r27218 * r27220;
double r27222 = r27221 * r27221;
double r27223 = r27217 - r27222;
double r27224 = r27211 * r27223;
double r27225 = r27216 + r27221;
double r27226 = r27224 / r27225;
double r27227 = r27208 + r27226;
double r27228 = acos(r27227);
double r27229 = r27203 * r27228;
return r27229;
}



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 sub-neg16.8
Applied cos-sum3.8
Simplified3.8
rmApplied flip--3.8
Applied associate-*r/3.8
rmApplied add-log-exp3.8
Final simplification3.8
herbie shell --seed 2019304
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
:precision binary64
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))