\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 \log \left(e^{\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)}\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r2074265 = phi1;
double r2074266 = sin(r2074265);
double r2074267 = phi2;
double r2074268 = sin(r2074267);
double r2074269 = r2074266 * r2074268;
double r2074270 = cos(r2074265);
double r2074271 = cos(r2074267);
double r2074272 = r2074270 * r2074271;
double r2074273 = lambda1;
double r2074274 = lambda2;
double r2074275 = r2074273 - r2074274;
double r2074276 = cos(r2074275);
double r2074277 = r2074272 * r2074276;
double r2074278 = r2074269 + r2074277;
double r2074279 = acos(r2074278);
double r2074280 = R;
double r2074281 = r2074279 * r2074280;
return r2074281;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r2074282 = R;
double r2074283 = phi1;
double r2074284 = cos(r2074283);
double r2074285 = phi2;
double r2074286 = cos(r2074285);
double r2074287 = r2074284 * r2074286;
double r2074288 = lambda1;
double r2074289 = cos(r2074288);
double r2074290 = lambda2;
double r2074291 = cos(r2074290);
double r2074292 = r2074289 * r2074291;
double r2074293 = sin(r2074288);
double r2074294 = sin(r2074290);
double r2074295 = r2074293 * r2074294;
double r2074296 = r2074292 + r2074295;
double r2074297 = r2074287 * r2074296;
double r2074298 = sin(r2074285);
double r2074299 = sin(r2074283);
double r2074300 = r2074298 * r2074299;
double r2074301 = exp(r2074300);
double r2074302 = log(r2074301);
double r2074303 = r2074297 + r2074302;
double r2074304 = acos(r2074303);
double r2074305 = exp(r2074304);
double r2074306 = log(r2074305);
double r2074307 = r2074282 * r2074306;
return r2074307;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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