Average Error: 38.5 → 32.6
Time: 27.3s
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}\;\lambda_1 - \lambda_2 \le -5.485072116683906760810748866048419583343 \cdot 10^{154}:\\ \;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{-1}{\lambda_1}}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 1.015908151149958197110468381283702293902 \cdot 10^{149}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{1}{\lambda_1}}\\ \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}\;\lambda_1 - \lambda_2 \le -5.485072116683906760810748866048419583343 \cdot 10^{154}:\\
\;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{-1}{\lambda_1}}\\

\mathbf{elif}\;\lambda_1 - \lambda_2 \le 1.015908151149958197110468381283702293902 \cdot 10^{149}:\\
\;\;\;\;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)}\\

\mathbf{else}:\\
\;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{1}{\lambda_1}}\\

\end{array}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r71601 = R;
        double r71602 = lambda1;
        double r71603 = lambda2;
        double r71604 = r71602 - r71603;
        double r71605 = phi1;
        double r71606 = phi2;
        double r71607 = r71605 + r71606;
        double r71608 = 2.0;
        double r71609 = r71607 / r71608;
        double r71610 = cos(r71609);
        double r71611 = r71604 * r71610;
        double r71612 = r71611 * r71611;
        double r71613 = r71605 - r71606;
        double r71614 = r71613 * r71613;
        double r71615 = r71612 + r71614;
        double r71616 = sqrt(r71615);
        double r71617 = r71601 * r71616;
        return r71617;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r71618 = lambda1;
        double r71619 = lambda2;
        double r71620 = r71618 - r71619;
        double r71621 = -5.485072116683907e+154;
        bool r71622 = r71620 <= r71621;
        double r71623 = R;
        double r71624 = 0.5;
        double r71625 = phi2;
        double r71626 = phi1;
        double r71627 = r71625 + r71626;
        double r71628 = r71624 * r71627;
        double r71629 = cos(r71628);
        double r71630 = -1.0;
        double r71631 = r71630 / r71618;
        double r71632 = r71629 / r71631;
        double r71633 = r71623 * r71632;
        double r71634 = 1.0159081511499582e+149;
        bool r71635 = r71620 <= r71634;
        double r71636 = r71626 + r71625;
        double r71637 = 2.0;
        double r71638 = r71636 / r71637;
        double r71639 = cos(r71638);
        double r71640 = r71620 * r71639;
        double r71641 = r71640 * r71640;
        double r71642 = r71626 - r71625;
        double r71643 = r71642 * r71642;
        double r71644 = r71641 + r71643;
        double r71645 = sqrt(r71644);
        double r71646 = r71623 * r71645;
        double r71647 = 1.0;
        double r71648 = r71647 / r71618;
        double r71649 = r71629 / r71648;
        double r71650 = r71623 * r71649;
        double r71651 = r71635 ? r71646 : r71650;
        double r71652 = r71622 ? r71633 : r71651;
        return r71652;
}

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 (- lambda1 lambda2) < -5.485072116683907e+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}\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-exp-log64.0

      \[\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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    4. Using strategy rm
    5. Applied pow164.0

      \[\leadsto R \cdot e^{\log \color{blue}{\left({\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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}^{1}\right)}}\]
    6. Applied log-pow64.0

      \[\leadsto R \cdot e^{\color{blue}{1 \cdot \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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    7. Applied exp-prod64.0

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

      \[\leadsto R \cdot {\color{blue}{e}}^{\left(\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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)\right)}\]
    9. Taylor expanded around -inf 49.7

      \[\leadsto R \cdot \color{blue}{e^{\log \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right) - \log \left(\frac{-1}{\lambda_1}\right)}}\]
    10. Simplified47.7

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

    if -5.485072116683907e+154 < (- lambda1 lambda2) < 1.0159081511499582e+149

    1. Initial program 23.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)}\]

    if 1.0159081511499582e+149 < (- lambda1 lambda2)

    1. Initial program 63.1

      \[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-exp-log63.2

      \[\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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    4. Using strategy rm
    5. Applied pow163.2

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

      \[\leadsto R \cdot e^{\color{blue}{1 \cdot \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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)}}\]
    7. Applied exp-prod63.2

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

      \[\leadsto R \cdot {\color{blue}{e}}^{\left(\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 \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\right)\right)}\]
    9. Taylor expanded around inf 50.6

      \[\leadsto R \cdot \color{blue}{e^{\log \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right) - \log \left(\frac{1}{\lambda_1}\right)}}\]
    10. Simplified48.5

      \[\leadsto R \cdot \color{blue}{\frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{1}{\lambda_1}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification32.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 - \lambda_2 \le -5.485072116683906760810748866048419583343 \cdot 10^{154}:\\ \;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{-1}{\lambda_1}}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 1.015908151149958197110468381283702293902 \cdot 10^{149}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \frac{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)}{\frac{1}{\lambda_1}}\\ \end{array}\]

Reproduce

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