R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\begin{array}{l}
\mathbf{if}\;\lambda_2 \le -2.4779403317554257 \cdot 10^{+223}:\\
\;\;\;\;\left(\left(\frac{\phi_2}{\lambda_1} \cdot \frac{\phi_1}{\cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right)} + \cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right) \cdot \lambda_2\right) + \frac{\lambda_2}{\cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right)} \cdot \frac{\phi_2 \cdot \phi_1}{\lambda_1 \cdot \lambda_1}\right) \cdot \left(-R\right)\\
\mathbf{elif}\;\lambda_2 \le -3.198787512097014 \cdot 10^{+178}:\\
\;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\
\mathbf{elif}\;\lambda_2 \le -1.342595736819271 \cdot 10^{+154}:\\
\;\;\;\;\left(\left(\frac{\phi_2}{\lambda_1} \cdot \frac{\phi_1}{\cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right)} + \cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right) \cdot \lambda_2\right) + \frac{\lambda_2}{\cos \left(\left(\phi_2 + \phi_1\right) \cdot 0.5\right)} \cdot \frac{\phi_2 \cdot \phi_1}{\lambda_1 \cdot \lambda_1}\right) \cdot \left(-R\right)\\
\mathbf{elif}\;\lambda_2 \le -4.16714048268465 \cdot 10^{-24}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \cos \left(\frac{\phi_2 + \phi_1}{2.0}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2.0}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)\right)}\\
\mathbf{elif}\;\lambda_2 \le -1.7692204660992532 \cdot 10^{-87}:\\
\;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\
\mathbf{elif}\;\lambda_2 \le 1.1659851827648714 \cdot 10^{+126}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \cos \left(\frac{\phi_2 + \phi_1}{2.0}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2.0}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\
\end{array}double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r6061688 = R;
double r6061689 = lambda1;
double r6061690 = lambda2;
double r6061691 = r6061689 - r6061690;
double r6061692 = phi1;
double r6061693 = phi2;
double r6061694 = r6061692 + r6061693;
double r6061695 = 2.0;
double r6061696 = r6061694 / r6061695;
double r6061697 = cos(r6061696);
double r6061698 = r6061691 * r6061697;
double r6061699 = r6061698 * r6061698;
double r6061700 = r6061692 - r6061693;
double r6061701 = r6061700 * r6061700;
double r6061702 = r6061699 + r6061701;
double r6061703 = sqrt(r6061702);
double r6061704 = r6061688 * r6061703;
return r6061704;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r6061705 = lambda2;
double r6061706 = -2.4779403317554257e+223;
bool r6061707 = r6061705 <= r6061706;
double r6061708 = phi2;
double r6061709 = lambda1;
double r6061710 = r6061708 / r6061709;
double r6061711 = phi1;
double r6061712 = r6061708 + r6061711;
double r6061713 = 0.5;
double r6061714 = r6061712 * r6061713;
double r6061715 = cos(r6061714);
double r6061716 = r6061711 / r6061715;
double r6061717 = r6061710 * r6061716;
double r6061718 = r6061715 * r6061705;
double r6061719 = r6061717 + r6061718;
double r6061720 = r6061705 / r6061715;
double r6061721 = r6061708 * r6061711;
double r6061722 = r6061709 * r6061709;
double r6061723 = r6061721 / r6061722;
double r6061724 = r6061720 * r6061723;
double r6061725 = r6061719 + r6061724;
double r6061726 = R;
double r6061727 = -r6061726;
double r6061728 = r6061725 * r6061727;
double r6061729 = -3.198787512097014e+178;
bool r6061730 = r6061705 <= r6061729;
double r6061731 = r6061708 - r6061711;
double r6061732 = r6061726 * r6061731;
double r6061733 = -1.342595736819271e+154;
bool r6061734 = r6061705 <= r6061733;
double r6061735 = -4.16714048268465e-24;
bool r6061736 = r6061705 <= r6061735;
double r6061737 = r6061711 - r6061708;
double r6061738 = r6061737 * r6061737;
double r6061739 = 2.0;
double r6061740 = r6061712 / r6061739;
double r6061741 = cos(r6061740);
double r6061742 = r6061709 - r6061705;
double r6061743 = r6061741 * r6061742;
double r6061744 = r6061742 * r6061743;
double r6061745 = r6061741 * r6061744;
double r6061746 = r6061738 + r6061745;
double r6061747 = sqrt(r6061746);
double r6061748 = r6061726 * r6061747;
double r6061749 = -1.7692204660992532e-87;
bool r6061750 = r6061705 <= r6061749;
double r6061751 = 1.1659851827648714e+126;
bool r6061752 = r6061705 <= r6061751;
double r6061753 = r6061752 ? r6061748 : r6061732;
double r6061754 = r6061750 ? r6061732 : r6061753;
double r6061755 = r6061736 ? r6061748 : r6061754;
double r6061756 = r6061734 ? r6061728 : r6061755;
double r6061757 = r6061730 ? r6061732 : r6061756;
double r6061758 = r6061707 ? r6061728 : r6061757;
return r6061758;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
if lambda2 < -2.4779403317554257e+223 or -3.198787512097014e+178 < lambda2 < -1.342595736819271e+154Initial program 64.0
rmApplied associate-*r*64.0
rmApplied add-cube-cbrt64.0
Applied associate-*l*64.0
Taylor expanded around inf 50.1
Simplified49.0
if -2.4779403317554257e+223 < lambda2 < -3.198787512097014e+178 or -4.16714048268465e-24 < lambda2 < -1.7692204660992532e-87 or 1.1659851827648714e+126 < lambda2 Initial program 53.0
Taylor expanded around 0 51.2
if -1.342595736819271e+154 < lambda2 < -4.16714048268465e-24 or -1.7692204660992532e-87 < lambda2 < 1.1659851827648714e+126Initial program 32.3
rmApplied associate-*r*32.3
Final simplification37.7
herbie shell --seed 2019165
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Equirectangular approximation to distance on a great circle"
(* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0)))) (* (- phi1 phi2) (- phi1 phi2))))))