Average Error: 39.1 → 37.7
Time: 1.5m
Precision: 64
\[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}\]
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;
}

Error

Bits error versus R

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if lambda2 < -2.4779403317554257e+223 or -3.198787512097014e+178 < lambda2 < -1.342595736819271e+154

    1. Initial program 64.0

      \[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)}\]
    2. Using strategy rm
    3. Applied associate-*r*64.0

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt64.0

      \[\leadsto R \cdot \sqrt{\left(\left(\color{blue}{\left(\left(\sqrt[3]{\lambda_1 - \lambda_2} \cdot \sqrt[3]{\lambda_1 - \lambda_2}\right) \cdot \sqrt[3]{\lambda_1 - \lambda_2}\right)} \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    6. Applied associate-*l*64.0

      \[\leadsto R \cdot \sqrt{\left(\color{blue}{\left(\left(\sqrt[3]{\lambda_1 - \lambda_2} \cdot \sqrt[3]{\lambda_1 - \lambda_2}\right) \cdot \left(\sqrt[3]{\lambda_1 - \lambda_2} \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right)\right)} \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    7. Taylor expanded around inf 50.1

      \[\leadsto R \cdot \color{blue}{\left(-\left(\frac{\phi_1 \cdot \phi_2}{\cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right) \cdot \lambda_1} + \left(\lambda_2 \cdot \cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right) + \frac{\lambda_2 \cdot \left(\phi_1 \cdot \phi_2\right)}{\cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right) \cdot {\lambda_1}^{2}}\right)\right)\right)}\]
    8. Simplified49.0

      \[\leadsto R \cdot \color{blue}{\left(-\left(\left(\frac{\phi_1}{\cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right)} \cdot \frac{\phi_2}{\lambda_1} + \lambda_2 \cdot \cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right)\right) + \frac{\lambda_2}{\cos \left(0.5 \cdot \left(\phi_1 + \phi_2\right)\right)} \cdot \frac{\phi_1 \cdot \phi_2}{\lambda_1 \cdot \lambda_1}\right)\right)}\]

    if -2.4779403317554257e+223 < lambda2 < -3.198787512097014e+178 or -4.16714048268465e-24 < lambda2 < -1.7692204660992532e-87 or 1.1659851827648714e+126 < lambda2

    1. Initial program 53.0

      \[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)}\]
    2. Taylor expanded around 0 51.2

      \[\leadsto R \cdot \color{blue}{\left(\phi_2 - \phi_1\right)}\]

    if -1.342595736819271e+154 < lambda2 < -4.16714048268465e-24 or -1.7692204660992532e-87 < lambda2 < 1.1659851827648714e+126

    1. Initial program 32.3

      \[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)}\]
    2. Using strategy rm
    3. Applied associate-*r*32.3

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2.0}\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification37.7

    \[\leadsto \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}\]

Reproduce

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))))))