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}\;\phi_2 \le -1.3363728798813314 \cdot 10^{+154}:\\
\;\;\;\;\left(-R\right) \cdot \left(\frac{\cos \left(\left(\phi_1 + \phi_2\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_1 + \phi_2\right) \cdot \frac{1}{2}\right)}{\frac{\phi_1}{\lambda_1 \cdot \lambda_2}} + \left(\phi_2 + \frac{\lambda_2 \cdot \left(\cos \left(\left(\phi_1 + \phi_2\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_1 + \phi_2\right) \cdot \frac{1}{2}\right)\right)}{\phi_1} \cdot \frac{\phi_2 \cdot \lambda_1}{\phi_1}\right)\right)\\
\mathbf{elif}\;\phi_2 \le 1.9145520666455147 \cdot 10^{+74}:\\
\;\;\;\;R \cdot \sqrt{\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)}\\
\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 r2102376 = R;
double r2102377 = lambda1;
double r2102378 = lambda2;
double r2102379 = r2102377 - r2102378;
double r2102380 = phi1;
double r2102381 = phi2;
double r2102382 = r2102380 + r2102381;
double r2102383 = 2.0;
double r2102384 = r2102382 / r2102383;
double r2102385 = cos(r2102384);
double r2102386 = r2102379 * r2102385;
double r2102387 = r2102386 * r2102386;
double r2102388 = r2102380 - r2102381;
double r2102389 = r2102388 * r2102388;
double r2102390 = r2102387 + r2102389;
double r2102391 = sqrt(r2102390);
double r2102392 = r2102376 * r2102391;
return r2102392;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r2102393 = phi2;
double r2102394 = -1.3363728798813314e+154;
bool r2102395 = r2102393 <= r2102394;
double r2102396 = R;
double r2102397 = -r2102396;
double r2102398 = phi1;
double r2102399 = r2102398 + r2102393;
double r2102400 = 0.5;
double r2102401 = r2102399 * r2102400;
double r2102402 = cos(r2102401);
double r2102403 = r2102402 * r2102402;
double r2102404 = lambda1;
double r2102405 = lambda2;
double r2102406 = r2102404 * r2102405;
double r2102407 = r2102398 / r2102406;
double r2102408 = r2102403 / r2102407;
double r2102409 = r2102405 * r2102403;
double r2102410 = r2102409 / r2102398;
double r2102411 = r2102393 * r2102404;
double r2102412 = r2102411 / r2102398;
double r2102413 = r2102410 * r2102412;
double r2102414 = r2102393 + r2102413;
double r2102415 = r2102408 + r2102414;
double r2102416 = r2102397 * r2102415;
double r2102417 = 1.9145520666455147e+74;
bool r2102418 = r2102393 <= r2102417;
double r2102419 = r2102398 - r2102393;
double r2102420 = r2102419 * r2102419;
double r2102421 = r2102404 - r2102405;
double r2102422 = 2.0;
double r2102423 = r2102399 / r2102422;
double r2102424 = cos(r2102423);
double r2102425 = r2102421 * r2102424;
double r2102426 = r2102425 * r2102425;
double r2102427 = r2102420 + r2102426;
double r2102428 = sqrt(r2102427);
double r2102429 = r2102396 * r2102428;
double r2102430 = r2102393 - r2102398;
double r2102431 = r2102430 * r2102396;
double r2102432 = r2102418 ? r2102429 : r2102431;
double r2102433 = r2102395 ? r2102416 : r2102432;
return r2102433;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
if phi2 < -1.3363728798813314e+154Initial program 60.9
rmApplied flip--61.0
Applied associate-*l/61.0
Applied associate-*r/61.0
Simplified60.9
Taylor expanded around inf 47.6
Simplified45.7
if -1.3363728798813314e+154 < phi2 < 1.9145520666455147e+74Initial program 31.2
if 1.9145520666455147e+74 < phi2 Initial program 49.4
Taylor expanded around 0 21.2
Final simplification31.0
herbie shell --seed 2019155
(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))))))