Average Error: 39.1 → 29.5
Time: 42.8s
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 -2.44512800894886 \cdot 10^{146}:\\ \;\;\;\;R \cdot \left(\lambda_2 - \lambda_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 9.2572239940457903 \cdot 10^{150}:\\ \;\;\;\;R \cdot \sqrt{\left({\lambda_1}^{2} \cdot \left({\left(\sin \left(0.5 \cdot \phi_2\right)\right)}^{2} \cdot {\left(\sin \left(0.5 \cdot \phi_1\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \phi_1\right)\right)}^{2} \cdot {\left(\cos \left(0.5 \cdot \phi_2\right)\right)}^{2}\right) + \left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} - 2 \cdot \left(\cos \left(0.5 \cdot \phi_1\right) \cdot \left(\sin \left(0.5 \cdot \phi_1\right) \cdot \left(\cos \left(0.5 \cdot \phi_2\right) \cdot \left(\sin \left(0.5 \cdot \phi_2\right) \cdot {\lambda_1}^{2}\right)\right)\right) + \lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \left(\lambda_1 - \lambda_2\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}\;\lambda_1 - \lambda_2 \le -2.44512800894886 \cdot 10^{146}:\\
\;\;\;\;R \cdot \left(\lambda_2 - \lambda_1\right)\\

\mathbf{elif}\;\lambda_1 - \lambda_2 \le 9.2572239940457903 \cdot 10^{150}:\\
\;\;\;\;R \cdot \sqrt{\left({\lambda_1}^{2} \cdot \left({\left(\sin \left(0.5 \cdot \phi_2\right)\right)}^{2} \cdot {\left(\sin \left(0.5 \cdot \phi_1\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \phi_1\right)\right)}^{2} \cdot {\left(\cos \left(0.5 \cdot \phi_2\right)\right)}^{2}\right) + \left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} - 2 \cdot \left(\cos \left(0.5 \cdot \phi_1\right) \cdot \left(\sin \left(0.5 \cdot \phi_1\right) \cdot \left(\cos \left(0.5 \cdot \phi_2\right) \cdot \left(\sin \left(0.5 \cdot \phi_2\right) \cdot {\lambda_1}^{2}\right)\right)\right) + \lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\\

\mathbf{else}:\\
\;\;\;\;R \cdot \left(\lambda_1 - \lambda_2\right)\\

\end{array}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r91536 = R;
        double r91537 = lambda1;
        double r91538 = lambda2;
        double r91539 = r91537 - r91538;
        double r91540 = phi1;
        double r91541 = phi2;
        double r91542 = r91540 + r91541;
        double r91543 = 2.0;
        double r91544 = r91542 / r91543;
        double r91545 = cos(r91544);
        double r91546 = r91539 * r91545;
        double r91547 = r91546 * r91546;
        double r91548 = r91540 - r91541;
        double r91549 = r91548 * r91548;
        double r91550 = r91547 + r91549;
        double r91551 = sqrt(r91550);
        double r91552 = r91536 * r91551;
        return r91552;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r91553 = lambda1;
        double r91554 = lambda2;
        double r91555 = r91553 - r91554;
        double r91556 = -2.44512800894886e+146;
        bool r91557 = r91555 <= r91556;
        double r91558 = R;
        double r91559 = r91554 - r91553;
        double r91560 = r91558 * r91559;
        double r91561 = 9.25722399404579e+150;
        bool r91562 = r91555 <= r91561;
        double r91563 = 2.0;
        double r91564 = pow(r91553, r91563);
        double r91565 = 0.5;
        double r91566 = phi2;
        double r91567 = r91565 * r91566;
        double r91568 = sin(r91567);
        double r91569 = pow(r91568, r91563);
        double r91570 = phi1;
        double r91571 = r91565 * r91570;
        double r91572 = sin(r91571);
        double r91573 = pow(r91572, r91563);
        double r91574 = r91569 * r91573;
        double r91575 = cos(r91571);
        double r91576 = pow(r91575, r91563);
        double r91577 = cos(r91567);
        double r91578 = pow(r91577, r91563);
        double r91579 = r91576 * r91578;
        double r91580 = r91574 + r91579;
        double r91581 = r91564 * r91580;
        double r91582 = pow(r91554, r91563);
        double r91583 = r91566 + r91570;
        double r91584 = r91565 * r91583;
        double r91585 = cos(r91584);
        double r91586 = pow(r91585, r91563);
        double r91587 = r91582 * r91586;
        double r91588 = r91568 * r91564;
        double r91589 = r91577 * r91588;
        double r91590 = r91572 * r91589;
        double r91591 = r91575 * r91590;
        double r91592 = r91586 * r91553;
        double r91593 = r91554 * r91592;
        double r91594 = r91591 + r91593;
        double r91595 = r91563 * r91594;
        double r91596 = r91587 - r91595;
        double r91597 = r91581 + r91596;
        double r91598 = r91570 - r91566;
        double r91599 = r91598 * r91598;
        double r91600 = r91597 + r91599;
        double r91601 = sqrt(r91600);
        double r91602 = r91558 * r91601;
        double r91603 = r91558 * r91555;
        double r91604 = r91562 ? r91602 : r91603;
        double r91605 = r91557 ? r91560 : r91604;
        return r91605;
}

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) < -2.44512800894886e+146

    1. Initial program 62.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. Taylor expanded around inf 62.1

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot {\lambda_1}^{2}\right) - 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)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    3. Using strategy rm
    4. Applied distribute-lft-in62.1

      \[\leadsto R \cdot \sqrt{\left(\left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} + {\left(\cos \color{blue}{\left(0.5 \cdot \phi_2 + 0.5 \cdot \phi_1\right)}\right)}^{2} \cdot {\lambda_1}^{2}\right) - 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)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    5. Applied cos-sum62.0

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

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

      \[\leadsto R \cdot \sqrt{\color{blue}{\left({\lambda_1}^{2} \cdot \left({\left(\sin \left(0.5 \cdot \phi_2\right)\right)}^{2} \cdot {\left(\sin \left(0.5 \cdot \phi_1\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \phi_1\right)\right)}^{2} \cdot {\left(\cos \left(0.5 \cdot \phi_2\right)\right)}^{2}\right) + \left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} - 2 \cdot \left(\cos \left(0.5 \cdot \phi_1\right) \cdot \left(\sin \left(0.5 \cdot \phi_1\right) \cdot \left(\cos \left(0.5 \cdot \phi_2\right) \cdot \left(\sin \left(0.5 \cdot \phi_2\right) \cdot {\lambda_1}^{2}\right)\right)\right) + \lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)\right)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    8. Taylor expanded around 0 40.4

      \[\leadsto R \cdot \color{blue}{\left(\lambda_2 - \lambda_1\right)}\]

    if -2.44512800894886e+146 < (- lambda1 lambda2) < 9.25722399404579e+150

    1. Initial program 23.5

      \[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 23.5

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot {\lambda_1}^{2}\right) - 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)\right)} + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    3. Using strategy rm
    4. Applied distribute-lft-in23.5

      \[\leadsto R \cdot \sqrt{\left(\left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} + {\left(\cos \color{blue}{\left(0.5 \cdot \phi_2 + 0.5 \cdot \phi_1\right)}\right)}^{2} \cdot {\lambda_1}^{2}\right) - 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)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\]
    5. Applied cos-sum23.1

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

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

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

    if 9.25722399404579e+150 < (- lambda1 lambda2)

    1. Initial program 63.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 inf 63.3

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

      \[\leadsto R \cdot \color{blue}{\left(\lambda_1 - \lambda_2\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification29.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 - \lambda_2 \le -2.44512800894886 \cdot 10^{146}:\\ \;\;\;\;R \cdot \left(\lambda_2 - \lambda_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 9.2572239940457903 \cdot 10^{150}:\\ \;\;\;\;R \cdot \sqrt{\left({\lambda_1}^{2} \cdot \left({\left(\sin \left(0.5 \cdot \phi_2\right)\right)}^{2} \cdot {\left(\sin \left(0.5 \cdot \phi_1\right)\right)}^{2} + {\left(\cos \left(0.5 \cdot \phi_1\right)\right)}^{2} \cdot {\left(\cos \left(0.5 \cdot \phi_2\right)\right)}^{2}\right) + \left({\lambda_2}^{2} \cdot {\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} - 2 \cdot \left(\cos \left(0.5 \cdot \phi_1\right) \cdot \left(\sin \left(0.5 \cdot \phi_1\right) \cdot \left(\cos \left(0.5 \cdot \phi_2\right) \cdot \left(\sin \left(0.5 \cdot \phi_2\right) \cdot {\lambda_1}^{2}\right)\right)\right) + \lambda_2 \cdot \left({\left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right)}^{2} \cdot \lambda_1\right)\right)\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot \left(\lambda_1 - \lambda_2\right)\\ \end{array}\]

Reproduce

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