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)}\begin{array}{l}
\mathbf{if}\;\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \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) \le 1.2409429388989084 \cdot 10^{+304}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\sqrt[3]{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \left(\left(\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right) \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\phi_2 - \phi_1\right) \cdot R\\
\end{array}double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r4113229 = R;
double r4113230 = lambda1;
double r4113231 = lambda2;
double r4113232 = r4113230 - r4113231;
double r4113233 = phi1;
double r4113234 = phi2;
double r4113235 = r4113233 + r4113234;
double r4113236 = 2.0;
double r4113237 = r4113235 / r4113236;
double r4113238 = cos(r4113237);
double r4113239 = r4113232 * r4113238;
double r4113240 = r4113239 * r4113239;
double r4113241 = r4113233 - r4113234;
double r4113242 = r4113241 * r4113241;
double r4113243 = r4113240 + r4113242;
double r4113244 = sqrt(r4113243);
double r4113245 = r4113229 * r4113244;
return r4113245;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r4113246 = phi1;
double r4113247 = phi2;
double r4113248 = r4113246 - r4113247;
double r4113249 = r4113248 * r4113248;
double r4113250 = lambda1;
double r4113251 = lambda2;
double r4113252 = r4113250 - r4113251;
double r4113253 = r4113246 + r4113247;
double r4113254 = 2.0;
double r4113255 = r4113253 / r4113254;
double r4113256 = cos(r4113255);
double r4113257 = r4113252 * r4113256;
double r4113258 = r4113257 * r4113257;
double r4113259 = r4113249 + r4113258;
double r4113260 = 1.2409429388989084e+304;
bool r4113261 = r4113259 <= r4113260;
double r4113262 = R;
double r4113263 = r4113256 * r4113256;
double r4113264 = r4113263 * r4113256;
double r4113265 = cbrt(r4113264);
double r4113266 = r4113265 * r4113252;
double r4113267 = cbrt(r4113256);
double r4113268 = r4113267 * r4113267;
double r4113269 = r4113268 * r4113267;
double r4113270 = r4113269 * r4113252;
double r4113271 = r4113266 * r4113270;
double r4113272 = r4113249 + r4113271;
double r4113273 = sqrt(r4113272);
double r4113274 = r4113262 * r4113273;
double r4113275 = r4113247 - r4113246;
double r4113276 = r4113275 * r4113262;
double r4113277 = r4113261 ? r4113274 : r4113276;
return r4113277;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
if (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))) < 1.2409429388989084e+304Initial program 1.9
rmApplied add-cube-cbrt1.9
rmApplied add-cbrt-cube2.0
if 1.2409429388989084e+304 < (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))) Initial program 60.3
Taylor expanded around 0 47.3
Final simplification29.2
herbie shell --seed 2019149
(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))))))