Average Error: 37.3 → 32.2
Time: 5.1m
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 7.191645331488462 \cdot 10^{+104}:\\ \;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}\right) \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}}\right)\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\lambda_1 - \lambda_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 7.191645331488462 \cdot 10^{+104}:\\
\;\;\;\;R \cdot \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}\right) \cdot \sqrt[3]{\left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)} \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}\right) \cdot \sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}}\right)\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\lambda_1 - \lambda_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 r9660584 = R;
        double r9660585 = lambda1;
        double r9660586 = lambda2;
        double r9660587 = r9660585 - r9660586;
        double r9660588 = phi1;
        double r9660589 = phi2;
        double r9660590 = r9660588 + r9660589;
        double r9660591 = 2.0;
        double r9660592 = r9660590 / r9660591;
        double r9660593 = cos(r9660592);
        double r9660594 = r9660587 * r9660593;
        double r9660595 = r9660594 * r9660594;
        double r9660596 = r9660588 - r9660589;
        double r9660597 = r9660596 * r9660596;
        double r9660598 = r9660595 + r9660597;
        double r9660599 = sqrt(r9660598);
        double r9660600 = r9660584 * r9660599;
        return r9660600;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r9660601 = phi2;
        double r9660602 = 7.191645331488462e+104;
        bool r9660603 = r9660601 <= r9660602;
        double r9660604 = R;
        double r9660605 = phi1;
        double r9660606 = r9660605 - r9660601;
        double r9660607 = r9660606 * r9660606;
        double r9660608 = lambda1;
        double r9660609 = lambda2;
        double r9660610 = r9660608 - r9660609;
        double r9660611 = r9660601 + r9660605;
        double r9660612 = 2.0;
        double r9660613 = r9660611 / r9660612;
        double r9660614 = cos(r9660613);
        double r9660615 = cbrt(r9660614);
        double r9660616 = r9660615 * r9660615;
        double r9660617 = r9660616 * r9660615;
        double r9660618 = cbrt(r9660617);
        double r9660619 = r9660616 * r9660618;
        double r9660620 = r9660610 * r9660619;
        double r9660621 = r9660614 * r9660610;
        double r9660622 = r9660620 * r9660621;
        double r9660623 = r9660607 + r9660622;
        double r9660624 = sqrt(r9660623);
        double r9660625 = r9660604 * r9660624;
        double r9660626 = r9660601 - r9660605;
        double r9660627 = r9660604 * r9660626;
        double r9660628 = r9660603 ? r9660625 : r9660627;
        return r9660628;
}

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 phi2 < 7.191645331488462e+104

    1. Initial program 34.7

      \[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-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 \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]{\color{blue}{\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)}\]

    if 7.191645331488462e+104 < phi2

    1. Initial program 52.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-cbrt52.6

      \[\leadsto R \cdot \sqrt{\color{blue}{\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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) \cdot \sqrt[3]{\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)}\]
    4. Taylor expanded around 0 17.6

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

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

Reproduce

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