R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\mathsf{hypot}\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right), \phi_1 - \phi_2\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r68262 = R;
double r68263 = lambda1;
double r68264 = lambda2;
double r68265 = r68263 - r68264;
double r68266 = phi1;
double r68267 = phi2;
double r68268 = r68266 + r68267;
double r68269 = 2.0;
double r68270 = r68268 / r68269;
double r68271 = cos(r68270);
double r68272 = r68265 * r68271;
double r68273 = r68272 * r68272;
double r68274 = r68266 - r68267;
double r68275 = r68274 * r68274;
double r68276 = r68273 + r68275;
double r68277 = sqrt(r68276);
double r68278 = r68262 * r68277;
return r68278;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r68279 = lambda1;
double r68280 = lambda2;
double r68281 = r68279 - r68280;
double r68282 = phi1;
double r68283 = phi2;
double r68284 = r68282 + r68283;
double r68285 = 2.0;
double r68286 = r68284 / r68285;
double r68287 = cos(r68286);
double r68288 = r68281 * r68287;
double r68289 = r68282 - r68283;
double r68290 = hypot(r68288, r68289);
double r68291 = R;
double r68292 = r68290 * r68291;
return r68292;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 38.8
Simplified3.6
rmApplied *-un-lft-identity3.6
Final simplification3.6
herbie shell --seed 2019326 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Equirectangular approximation to distance on a great circle"
:precision binary64
(* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))))