Average Error: 38.4 → 31.1
Time: 15.4s
Precision: 64
\[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 -2.532482870032777712481534020967673709226 \cdot 10^{148}:\\ \;\;\;\;R \cdot \left(-\left(\phi_2 + \left(\frac{\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)}{\phi_1} + \frac{\phi_2 \cdot \left(\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)}{{\phi_1}^{2}}\right)\right)\right)\\ \mathbf{elif}\;\phi_2 \le 1.497503616333916239536784580188459111671 \cdot 10^{74}:\\ \;\;\;\;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 \sqrt[3]{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\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}\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 -2.532482870032777712481534020967673709226 \cdot 10^{148}:\\
\;\;\;\;R \cdot \left(-\left(\phi_2 + \left(\frac{\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)}{\phi_1} + \frac{\phi_2 \cdot \left(\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)}{{\phi_1}^{2}}\right)\right)\right)\\

\mathbf{elif}\;\phi_2 \le 1.497503616333916239536784580188459111671 \cdot 10^{74}:\\
\;\;\;\;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 \sqrt[3]{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\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 r72779 = R;
        double r72780 = lambda1;
        double r72781 = lambda2;
        double r72782 = r72780 - r72781;
        double r72783 = phi1;
        double r72784 = phi2;
        double r72785 = r72783 + r72784;
        double r72786 = 2.0;
        double r72787 = r72785 / r72786;
        double r72788 = cos(r72787);
        double r72789 = r72782 * r72788;
        double r72790 = r72789 * r72789;
        double r72791 = r72783 - r72784;
        double r72792 = r72791 * r72791;
        double r72793 = r72790 + r72792;
        double r72794 = sqrt(r72793);
        double r72795 = r72779 * r72794;
        return r72795;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r72796 = phi2;
        double r72797 = -2.5324828700327777e+148;
        bool r72798 = r72796 <= r72797;
        double r72799 = R;
        double r72800 = lambda2;
        double r72801 = 0.5;
        double r72802 = phi1;
        double r72803 = r72796 + r72802;
        double r72804 = r72801 * r72803;
        double r72805 = cos(r72804);
        double r72806 = 2.0;
        double r72807 = pow(r72805, r72806);
        double r72808 = lambda1;
        double r72809 = r72807 * r72808;
        double r72810 = r72800 * r72809;
        double r72811 = r72810 / r72802;
        double r72812 = r72796 * r72810;
        double r72813 = pow(r72802, r72806);
        double r72814 = r72812 / r72813;
        double r72815 = r72811 + r72814;
        double r72816 = r72796 + r72815;
        double r72817 = -r72816;
        double r72818 = r72799 * r72817;
        double r72819 = 1.4975036163339162e+74;
        bool r72820 = r72796 <= r72819;
        double r72821 = r72808 - r72800;
        double r72822 = r72802 + r72796;
        double r72823 = 2.0;
        double r72824 = r72822 / r72823;
        double r72825 = cos(r72824);
        double r72826 = r72821 * r72825;
        double r72827 = 3.0;
        double r72828 = pow(r72825, r72827);
        double r72829 = cbrt(r72828);
        double r72830 = r72821 * r72829;
        double r72831 = r72826 * r72830;
        double r72832 = r72802 - r72796;
        double r72833 = r72832 * r72832;
        double r72834 = r72831 + r72833;
        double r72835 = sqrt(r72834);
        double r72836 = r72799 * r72835;
        double r72837 = r72796 - r72802;
        double r72838 = r72799 * r72837;
        double r72839 = r72820 ? r72836 : r72838;
        double r72840 = r72798 ? r72818 : r72839;
        return r72840;
}

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 phi2 < -2.5324828700327777e+148

    1. Initial program 62.7

      \[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)}\]
    2. Using strategy rm
    3. Applied add-cbrt-cube62.7

      \[\leadsto 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 \color{blue}{\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)}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Simplified62.7

      \[\leadsto 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 \sqrt[3]{\color{blue}{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    5. Using strategy rm
    6. Applied add-exp-log62.8

      \[\leadsto R \cdot \color{blue}{e^{\log \left(\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 \sqrt[3]{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    7. Simplified62.8

      \[\leadsto R \cdot e^{\color{blue}{\log \left(\sqrt{{\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}^{6} \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    8. Taylor expanded around inf 45.3

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

    if -2.5324828700327777e+148 < phi2 < 1.4975036163339162e+74

    1. Initial program 30.8

      \[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)}\]
    2. Using strategy rm
    3. Applied add-cbrt-cube30.9

      \[\leadsto 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 \color{blue}{\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)}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Simplified30.9

      \[\leadsto 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 \sqrt[3]{\color{blue}{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]

    if 1.4975036163339162e+74 < phi2

    1. Initial program 53.3

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

      \[\leadsto R \cdot \color{blue}{\left(\phi_2 - \phi_1\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification31.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \le -2.532482870032777712481534020967673709226 \cdot 10^{148}:\\ \;\;\;\;R \cdot \left(-\left(\phi_2 + \left(\frac{\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)}{\phi_1} + \frac{\phi_2 \cdot \left(\lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)}{{\phi_1}^{2}}\right)\right)\right)\\ \mathbf{elif}\;\phi_2 \le 1.497503616333916239536784580188459111671 \cdot 10^{74}:\\ \;\;\;\;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 \sqrt[3]{{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}^{3}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019350 
(FPCore (R lambda1 lambda2 phi1 phi2)
  :name "Equirectangular approximation to distance on a great circle"
  :precision binary64
  (* R (sqrt (+ (* (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2))) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2)))) (* (- phi1 phi2) (- phi1 phi2))))))