Average Error: 37.4 → 32.6
Time: 38.1s
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_1 \le -9.164522153818591 \cdot 10^{+154}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{else}:\\ \;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \sqrt[3]{\log \left(e^{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\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_1 \le -9.164522153818591 \cdot 10^{+154}:\\
\;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\

\mathbf{else}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \sqrt[3]{\log \left(e^{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)}\\

\end{array}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r3629403 = R;
        double r3629404 = lambda1;
        double r3629405 = lambda2;
        double r3629406 = r3629404 - r3629405;
        double r3629407 = phi1;
        double r3629408 = phi2;
        double r3629409 = r3629407 + r3629408;
        double r3629410 = 2.0;
        double r3629411 = r3629409 / r3629410;
        double r3629412 = cos(r3629411);
        double r3629413 = r3629406 * r3629412;
        double r3629414 = r3629413 * r3629413;
        double r3629415 = r3629407 - r3629408;
        double r3629416 = r3629415 * r3629415;
        double r3629417 = r3629414 + r3629416;
        double r3629418 = sqrt(r3629417);
        double r3629419 = r3629403 * r3629418;
        return r3629419;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r3629420 = phi1;
        double r3629421 = -9.164522153818591e+154;
        bool r3629422 = r3629420 <= r3629421;
        double r3629423 = R;
        double r3629424 = phi2;
        double r3629425 = r3629424 - r3629420;
        double r3629426 = r3629423 * r3629425;
        double r3629427 = r3629420 - r3629424;
        double r3629428 = r3629427 * r3629427;
        double r3629429 = lambda1;
        double r3629430 = lambda2;
        double r3629431 = r3629429 - r3629430;
        double r3629432 = r3629420 + r3629424;
        double r3629433 = 2.0;
        double r3629434 = r3629432 / r3629433;
        double r3629435 = cos(r3629434);
        double r3629436 = r3629431 * r3629435;
        double r3629437 = cbrt(r3629435);
        double r3629438 = exp(r3629435);
        double r3629439 = log(r3629438);
        double r3629440 = cbrt(r3629439);
        double r3629441 = r3629437 * r3629440;
        double r3629442 = r3629437 * r3629441;
        double r3629443 = r3629442 * r3629431;
        double r3629444 = r3629436 * r3629443;
        double r3629445 = r3629428 + r3629444;
        double r3629446 = sqrt(r3629445);
        double r3629447 = r3629423 * r3629446;
        double r3629448 = r3629422 ? r3629426 : r3629447;
        return r3629448;
}

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 2 regimes
  2. if phi1 < -9.164522153818591e+154

    1. Initial program 60.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-exp-log61.5

      \[\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}{e^{\log \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Applied add-exp-log61.8

      \[\leadsto R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\color{blue}{e^{\log \left(\lambda_1 - \lambda_2\right)}} \cdot e^{\log \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    5. Applied prod-exp61.8

      \[\leadsto R \cdot \sqrt{\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \color{blue}{e^{\log \left(\lambda_1 - \lambda_2\right) + \log \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    6. Applied add-exp-log61.8

      \[\leadsto R \cdot \sqrt{\color{blue}{e^{\log \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)}} \cdot e^{\log \left(\lambda_1 - \lambda_2\right) + \log \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    7. Applied prod-exp61.8

      \[\leadsto R \cdot \sqrt{\color{blue}{e^{\log \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) + \left(\log \left(\lambda_1 - \lambda_2\right) + \log \left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right)\right)}} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    8. Simplified60.8

      \[\leadsto R \cdot \sqrt{e^{\color{blue}{\log \left(\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)\right)}} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    9. Taylor expanded around 0 15.4

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

    if -9.164522153818591e+154 < phi1

    1. Initial program 34.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. Using strategy rm
    3. Applied add-cube-cbrt34.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}{\left(\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right) \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    4. Using strategy rm
    5. Applied add-log-exp34.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 \left(\left(\sqrt[3]{\color{blue}{\log \left(e^{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}} \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right) \cdot \sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification32.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\phi_1 \le -9.164522153818591 \cdot 10^{+154}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{else}:\\ \;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\right) \cdot \left(\left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)} \cdot \sqrt[3]{\log \left(e^{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right)}\right)\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)}\\ \end{array}\]

Reproduce

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