Average Error: 39.5 → 37.3
Time: 30.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 \le -6.214547549450306169998240250610611825087 \cdot 10^{127}:\\ \;\;\;\;\left(\lambda_2 - \lambda_1\right) \cdot R\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \left(\log \left(e^{\cos \left(\frac{\phi_1 + \phi_2}{2}\right)}\right) \cdot \left(\left(\lambda_1 - \lambda_2\right) \cdot \left(\lambda_2 + \lambda_1\right)\right)\right)}{\lambda_2 + \lambda_1} \cdot \left(\lambda_1 - \lambda_2\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)} \cdot R\\ \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 \le -6.214547549450306169998240250610611825087 \cdot 10^{127}:\\
\;\;\;\;\left(\lambda_2 - \lambda_1\right) \cdot R\\

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

\end{array}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r113969 = R;
        double r113970 = lambda1;
        double r113971 = lambda2;
        double r113972 = r113970 - r113971;
        double r113973 = phi1;
        double r113974 = phi2;
        double r113975 = r113973 + r113974;
        double r113976 = 2.0;
        double r113977 = r113975 / r113976;
        double r113978 = cos(r113977);
        double r113979 = r113972 * r113978;
        double r113980 = r113979 * r113979;
        double r113981 = r113973 - r113974;
        double r113982 = r113981 * r113981;
        double r113983 = r113980 + r113982;
        double r113984 = sqrt(r113983);
        double r113985 = r113969 * r113984;
        return r113985;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r113986 = lambda1;
        double r113987 = -6.214547549450306e+127;
        bool r113988 = r113986 <= r113987;
        double r113989 = lambda2;
        double r113990 = r113989 - r113986;
        double r113991 = R;
        double r113992 = r113990 * r113991;
        double r113993 = phi1;
        double r113994 = phi2;
        double r113995 = r113993 + r113994;
        double r113996 = 2.0;
        double r113997 = r113995 / r113996;
        double r113998 = cos(r113997);
        double r113999 = exp(r113998);
        double r114000 = log(r113999);
        double r114001 = r113986 - r113989;
        double r114002 = r113989 + r113986;
        double r114003 = r114001 * r114002;
        double r114004 = r114000 * r114003;
        double r114005 = r113998 * r114004;
        double r114006 = r114005 / r114002;
        double r114007 = r114006 * r114001;
        double r114008 = r113993 - r113994;
        double r114009 = r114008 * r114008;
        double r114010 = r114007 + r114009;
        double r114011 = sqrt(r114010);
        double r114012 = r114011 * r113991;
        double r114013 = r113988 ? r113992 : r114012;
        return r114013;
}

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 lambda1 < -6.214547549450306e+127

    1. Initial program 60.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. Simplified60.0

      \[\leadsto \color{blue}{\sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot R}\]
    3. Taylor expanded around 0 43.0

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

    if -6.214547549450306e+127 < lambda1

    1. Initial program 36.4

      \[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. Simplified36.4

      \[\leadsto \color{blue}{\sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\left(\lambda_1 - \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot R}\]
    3. Using strategy rm
    4. Applied flip--36.4

      \[\leadsto \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \left(\left(\color{blue}{\frac{\lambda_1 \cdot \lambda_1 - \lambda_2 \cdot \lambda_2}{\lambda_1 + \lambda_2}} \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot R\]
    5. Applied associate-*l/36.4

      \[\leadsto \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \left(\color{blue}{\frac{\left(\lambda_1 \cdot \lambda_1 - \lambda_2 \cdot \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)}{\lambda_1 + \lambda_2}} \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot R\]
    6. Applied associate-*l/36.4

      \[\leadsto \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \color{blue}{\frac{\left(\left(\lambda_1 \cdot \lambda_1 - \lambda_2 \cdot \lambda_2\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)}{\lambda_1 + \lambda_2}}} \cdot R\]
    7. Simplified36.4

      \[\leadsto \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \frac{\color{blue}{\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\left(\lambda_2 + \lambda_1\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)\right)}}{\lambda_1 + \lambda_2}} \cdot R\]
    8. Using strategy rm
    9. Applied add-log-exp36.4

      \[\leadsto \sqrt{\left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right) + \left(\lambda_1 - \lambda_2\right) \cdot \frac{\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\color{blue}{\log \left(e^{\cos \left(\frac{\phi_2 + \phi_1}{2}\right)}\right)} \cdot \left(\left(\lambda_2 + \lambda_1\right) \cdot \left(\lambda_1 - \lambda_2\right)\right)\right)}{\lambda_1 + \lambda_2}} \cdot R\]
  3. Recombined 2 regimes into one program.
  4. Final simplification37.3

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

Reproduce

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