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)}R \cdot \mathsf{hypot}\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right), \phi_1 - \phi_2\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r77233 = R;
double r77234 = lambda1;
double r77235 = lambda2;
double r77236 = r77234 - r77235;
double r77237 = phi1;
double r77238 = phi2;
double r77239 = r77237 + r77238;
double r77240 = 2.0;
double r77241 = r77239 / r77240;
double r77242 = cos(r77241);
double r77243 = r77236 * r77242;
double r77244 = r77243 * r77243;
double r77245 = r77237 - r77238;
double r77246 = r77245 * r77245;
double r77247 = r77244 + r77246;
double r77248 = sqrt(r77247);
double r77249 = r77233 * r77248;
return r77249;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r77250 = R;
double r77251 = lambda1;
double r77252 = lambda2;
double r77253 = r77251 - r77252;
double r77254 = phi1;
double r77255 = phi2;
double r77256 = r77254 + r77255;
double r77257 = 2.0;
double r77258 = r77256 / r77257;
double r77259 = cos(r77258);
double r77260 = r77253 * r77259;
double r77261 = r77254 - r77255;
double r77262 = hypot(r77260, r77261);
double r77263 = r77250 * r77262;
return r77263;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



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