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 r90323 = R;
double r90324 = lambda1;
double r90325 = lambda2;
double r90326 = r90324 - r90325;
double r90327 = phi1;
double r90328 = phi2;
double r90329 = r90327 + r90328;
double r90330 = 2.0;
double r90331 = r90329 / r90330;
double r90332 = cos(r90331);
double r90333 = r90326 * r90332;
double r90334 = r90333 * r90333;
double r90335 = r90327 - r90328;
double r90336 = r90335 * r90335;
double r90337 = r90334 + r90336;
double r90338 = sqrt(r90337);
double r90339 = r90323 * r90338;
return r90339;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r90340 = lambda1;
double r90341 = lambda2;
double r90342 = r90340 - r90341;
double r90343 = phi1;
double r90344 = phi2;
double r90345 = r90343 + r90344;
double r90346 = 2.0;
double r90347 = r90345 / r90346;
double r90348 = cos(r90347);
double r90349 = r90342 * r90348;
double r90350 = r90343 - r90344;
double r90351 = hypot(r90349, r90350);
double r90352 = R;
double r90353 = r90351 * r90352;
return r90353;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 38.9
Simplified3.6
rmApplied *-un-lft-identity3.6
Final simplification3.6
herbie shell --seed 2020036 +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))))))