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 r73908 = R;
double r73909 = lambda1;
double r73910 = lambda2;
double r73911 = r73909 - r73910;
double r73912 = phi1;
double r73913 = phi2;
double r73914 = r73912 + r73913;
double r73915 = 2.0;
double r73916 = r73914 / r73915;
double r73917 = cos(r73916);
double r73918 = r73911 * r73917;
double r73919 = r73918 * r73918;
double r73920 = r73912 - r73913;
double r73921 = r73920 * r73920;
double r73922 = r73919 + r73921;
double r73923 = sqrt(r73922);
double r73924 = r73908 * r73923;
return r73924;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r73925 = R;
double r73926 = lambda1;
double r73927 = lambda2;
double r73928 = r73926 - r73927;
double r73929 = phi1;
double r73930 = phi2;
double r73931 = r73929 + r73930;
double r73932 = 2.0;
double r73933 = r73931 / r73932;
double r73934 = cos(r73933);
double r73935 = r73928 * r73934;
double r73936 = r73929 - r73930;
double r73937 = hypot(r73935, r73936);
double r73938 = r73925 * r73937;
return r73938;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 39.2
Simplified3.8
rmApplied *-commutative3.8
Final simplification3.8
herbie shell --seed 2019323 +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))))))