Average Error: 37.5 → 31.4
Time: 2.6m
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 -5.617892162166607 \cdot 10^{+147}:\\ \;\;\;\;\left(-R\right) \cdot \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} \cdot \frac{\phi_2}{\phi_1} + \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} + \phi_2\right)\right)\\ \mathbf{elif}\;\phi_2 \le 2.8688588231103195 \cdot 10^{-32}:\\ \;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - 2 \cdot \lambda_2\right) \cdot \lambda_1 + \lambda_2 \cdot \lambda_2\right) \cdot \left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\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}\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 -5.617892162166607 \cdot 10^{+147}:\\
\;\;\;\;\left(-R\right) \cdot \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} \cdot \frac{\phi_2}{\phi_1} + \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} + \phi_2\right)\right)\\

\mathbf{elif}\;\phi_2 \le 2.8688588231103195 \cdot 10^{-32}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - 2 \cdot \lambda_2\right) \cdot \lambda_1 + \lambda_2 \cdot \lambda_2\right) \cdot \left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\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 r33214915 = R;
        double r33214916 = lambda1;
        double r33214917 = lambda2;
        double r33214918 = r33214916 - r33214917;
        double r33214919 = phi1;
        double r33214920 = phi2;
        double r33214921 = r33214919 + r33214920;
        double r33214922 = 2.0;
        double r33214923 = r33214921 / r33214922;
        double r33214924 = cos(r33214923);
        double r33214925 = r33214918 * r33214924;
        double r33214926 = r33214925 * r33214925;
        double r33214927 = r33214919 - r33214920;
        double r33214928 = r33214927 * r33214927;
        double r33214929 = r33214926 + r33214928;
        double r33214930 = sqrt(r33214929);
        double r33214931 = r33214915 * r33214930;
        return r33214931;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r33214932 = phi2;
        double r33214933 = -5.617892162166607e+147;
        bool r33214934 = r33214932 <= r33214933;
        double r33214935 = R;
        double r33214936 = -r33214935;
        double r33214937 = phi1;
        double r33214938 = r33214932 + r33214937;
        double r33214939 = 0.5;
        double r33214940 = r33214938 * r33214939;
        double r33214941 = cos(r33214940);
        double r33214942 = r33214941 * r33214941;
        double r33214943 = lambda2;
        double r33214944 = r33214942 * r33214943;
        double r33214945 = lambda1;
        double r33214946 = r33214937 / r33214945;
        double r33214947 = r33214944 / r33214946;
        double r33214948 = r33214932 / r33214937;
        double r33214949 = r33214947 * r33214948;
        double r33214950 = r33214947 + r33214932;
        double r33214951 = r33214949 + r33214950;
        double r33214952 = r33214936 * r33214951;
        double r33214953 = 2.8688588231103195e-32;
        bool r33214954 = r33214932 <= r33214953;
        double r33214955 = r33214937 - r33214932;
        double r33214956 = r33214955 * r33214955;
        double r33214957 = 2.0;
        double r33214958 = r33214957 * r33214943;
        double r33214959 = r33214945 - r33214958;
        double r33214960 = r33214959 * r33214945;
        double r33214961 = r33214943 * r33214943;
        double r33214962 = r33214960 + r33214961;
        double r33214963 = r33214962 * r33214942;
        double r33214964 = r33214956 + r33214963;
        double r33214965 = sqrt(r33214964);
        double r33214966 = r33214935 * r33214965;
        double r33214967 = r33214932 - r33214937;
        double r33214968 = r33214935 * r33214967;
        double r33214969 = r33214954 ? r33214966 : r33214968;
        double r33214970 = r33214934 ? r33214952 : r33214969;
        return r33214970;
}

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 < -5.617892162166607e+147

    1. Initial program 59.6

      \[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 inf 59.6

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left({\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2} \cdot {\lambda_1}^{2} + {\lambda_2}^{2} \cdot {\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2}\right) - 2 \cdot \left(\lambda_1 \cdot \left(\lambda_2 \cdot {\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    3. Simplified59.6

      \[\leadsto R \cdot \sqrt{\color{blue}{\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) \cdot \left(\lambda_2 \cdot \lambda_2 + \lambda_1 \cdot \left(\lambda_1 - \lambda_2 \cdot 2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Taylor expanded around inf 44.7

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

      \[\leadsto R \cdot \color{blue}{\left(-\left(\left(\frac{\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) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} + \phi_2\right) + \frac{\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) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} \cdot \frac{\phi_2}{\phi_1}\right)\right)}\]

    if -5.617892162166607e+147 < phi2 < 2.8688588231103195e-32

    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. Taylor expanded around inf 30.9

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left({\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2} \cdot {\lambda_1}^{2} + {\lambda_2}^{2} \cdot {\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2}\right) - 2 \cdot \left(\lambda_1 \cdot \left(\lambda_2 \cdot {\left(\cos \left(\frac{1}{2} \cdot \left(\phi_1 + \phi_2\right)\right)\right)}^{2}\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    3. Simplified30.9

      \[\leadsto R \cdot \sqrt{\color{blue}{\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) \cdot \left(\lambda_2 \cdot \lambda_2 + \lambda_1 \cdot \left(\lambda_1 - \lambda_2 \cdot 2\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]

    if 2.8688588231103195e-32 < phi2

    1. Initial program 44.0

      \[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 insert-posit1646.1

      \[\leadsto R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\left(\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\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)}\]
    4. Taylor expanded around 0 28.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_2 \le -5.617892162166607 \cdot 10^{+147}:\\ \;\;\;\;\left(-R\right) \cdot \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} \cdot \frac{\phi_2}{\phi_1} + \left(\frac{\left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right) \cdot \lambda_2}{\frac{\phi_1}{\lambda_1}} + \phi_2\right)\right)\\ \mathbf{elif}\;\phi_2 \le 2.8688588231103195 \cdot 10^{-32}:\\ \;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - 2 \cdot \lambda_2\right) \cdot \lambda_1 + \lambda_2 \cdot \lambda_2\right) \cdot \left(\cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right) \cdot \cos \left(\left(\phi_2 + \phi_1\right) \cdot \frac{1}{2}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019119 
(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))))))