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 r86433 = R;
double r86434 = lambda1;
double r86435 = lambda2;
double r86436 = r86434 - r86435;
double r86437 = phi1;
double r86438 = phi2;
double r86439 = r86437 + r86438;
double r86440 = 2.0;
double r86441 = r86439 / r86440;
double r86442 = cos(r86441);
double r86443 = r86436 * r86442;
double r86444 = r86443 * r86443;
double r86445 = r86437 - r86438;
double r86446 = r86445 * r86445;
double r86447 = r86444 + r86446;
double r86448 = sqrt(r86447);
double r86449 = r86433 * r86448;
return r86449;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r86450 = lambda1;
double r86451 = lambda2;
double r86452 = r86450 - r86451;
double r86453 = phi1;
double r86454 = phi2;
double r86455 = r86453 + r86454;
double r86456 = 2.0;
double r86457 = r86455 / r86456;
double r86458 = cos(r86457);
double r86459 = r86452 * r86458;
double r86460 = r86453 - r86454;
double r86461 = hypot(r86459, r86460);
double r86462 = R;
double r86463 = r86461 * r86462;
return r86463;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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