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(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right), \left(\phi_1 - \phi_2\right)\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r11941164 = R;
double r11941165 = lambda1;
double r11941166 = lambda2;
double r11941167 = r11941165 - r11941166;
double r11941168 = phi1;
double r11941169 = phi2;
double r11941170 = r11941168 + r11941169;
double r11941171 = 2.0;
double r11941172 = r11941170 / r11941171;
double r11941173 = cos(r11941172);
double r11941174 = r11941167 * r11941173;
double r11941175 = r11941174 * r11941174;
double r11941176 = r11941168 - r11941169;
double r11941177 = r11941176 * r11941176;
double r11941178 = r11941175 + r11941177;
double r11941179 = sqrt(r11941178);
double r11941180 = r11941164 * r11941179;
return r11941180;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r11941181 = lambda1;
double r11941182 = lambda2;
double r11941183 = r11941181 - r11941182;
double r11941184 = phi2;
double r11941185 = phi1;
double r11941186 = r11941184 + r11941185;
double r11941187 = 2.0;
double r11941188 = r11941186 / r11941187;
double r11941189 = cos(r11941188);
double r11941190 = r11941183 * r11941189;
double r11941191 = r11941185 - r11941184;
double r11941192 = hypot(r11941190, r11941191);
double r11941193 = R;
double r11941194 = r11941192 * r11941193;
return r11941194;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 37.1
Simplified3.7
Final simplification3.7
herbie shell --seed 2019125 +o rules:numerics
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Equirectangular approximation to distance on a great circle"
(* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))))