Average Error: 38.5 → 32.6
Time: 27.6s
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 r55592 = R;
        double r55593 = lambda1;
        double r55594 = lambda2;
        double r55595 = r55593 - r55594;
        double r55596 = phi1;
        double r55597 = phi2;
        double r55598 = r55596 + r55597;
        double r55599 = 2.0;
        double r55600 = r55598 / r55599;
        double r55601 = cos(r55600);
        double r55602 = r55595 * r55601;
        double r55603 = r55602 * r55602;
        double r55604 = r55596 - r55597;
        double r55605 = r55604 * r55604;
        double r55606 = r55603 + r55605;
        double r55607 = sqrt(r55606);
        double r55608 = r55592 * r55607;
        return r55608;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r55609 = lambda1;
        double r55610 = lambda2;
        double r55611 = r55609 - r55610;
        double r55612 = -5.485072116683907e+154;
        bool r55613 = r55611 <= r55612;
        double r55614 = R;
        double r55615 = 0.5;
        double r55616 = phi2;
        double r55617 = phi1;
        double r55618 = r55616 + r55617;
        double r55619 = r55615 * r55618;
        double r55620 = cos(r55619);
        double r55621 = -1.0;
        double r55622 = r55621 / r55609;
        double r55623 = r55620 / r55622;
        double r55624 = r55614 * r55623;
        double r55625 = 1.0159081511499582e+149;
        bool r55626 = r55611 <= r55625;
        double r55627 = r55617 + r55616;
        double r55628 = 2.0;
        double r55629 = r55627 / r55628;
        double r55630 = cos(r55629);
        double r55631 = r55611 * r55630;
        double r55632 = r55631 * r55631;
        double r55633 = r55617 - r55616;
        double r55634 = r55633 * r55633;
        double r55635 = r55632 + r55634;
        double r55636 = sqrt(r55635);
        double r55637 = r55614 * r55636;
        double r55638 = 1.0;
        double r55639 = r55638 / r55609;
        double r55640 = r55620 / r55639;
        double r55641 = r55614 * r55640;
        double r55642 = r55626 ? r55637 : r55641;
        double r55643 = r55613 ? r55624 : r55642;
        return r55643;
}

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