Average Error: 37.3 → 32.2
Time: 31.9s
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 2.511829003669043 \cdot 10^{+124}:\\ \;\;\;\;\sqrt{\left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)} \cdot R\\ \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 2.511829003669043 \cdot 10^{+124}:\\
\;\;\;\;\sqrt{\left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)} \cdot R\\

\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 r4682149 = R;
        double r4682150 = lambda1;
        double r4682151 = lambda2;
        double r4682152 = r4682150 - r4682151;
        double r4682153 = phi1;
        double r4682154 = phi2;
        double r4682155 = r4682153 + r4682154;
        double r4682156 = 2.0;
        double r4682157 = r4682155 / r4682156;
        double r4682158 = cos(r4682157);
        double r4682159 = r4682152 * r4682158;
        double r4682160 = r4682159 * r4682159;
        double r4682161 = r4682153 - r4682154;
        double r4682162 = r4682161 * r4682161;
        double r4682163 = r4682160 + r4682162;
        double r4682164 = sqrt(r4682163);
        double r4682165 = r4682149 * r4682164;
        return r4682165;
}

double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r4682166 = phi2;
        double r4682167 = 2.511829003669043e+124;
        bool r4682168 = r4682166 <= r4682167;
        double r4682169 = phi1;
        double r4682170 = r4682166 + r4682169;
        double r4682171 = 2.0;
        double r4682172 = r4682170 / r4682171;
        double r4682173 = cos(r4682172);
        double r4682174 = lambda1;
        double r4682175 = lambda2;
        double r4682176 = r4682174 - r4682175;
        double r4682177 = r4682173 * r4682176;
        double r4682178 = r4682173 * r4682173;
        double r4682179 = r4682173 * r4682178;
        double r4682180 = cbrt(r4682179);
        double r4682181 = r4682180 * r4682176;
        double r4682182 = r4682177 * r4682181;
        double r4682183 = r4682169 - r4682166;
        double r4682184 = r4682183 * r4682183;
        double r4682185 = r4682182 + r4682184;
        double r4682186 = sqrt(r4682185);
        double r4682187 = R;
        double r4682188 = r4682186 * r4682187;
        double r4682189 = r4682166 - r4682169;
        double r4682190 = r4682187 * r4682189;
        double r4682191 = r4682168 ? r4682188 : r4682190;
        return r4682191;
}

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 < 2.511829003669043e+124

    1. Initial program 34.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. Using strategy rm
    3. Applied add-cbrt-cube34.3

      \[\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}{\sqrt[3]{\left(\cos \left(\frac{\phi_1 + \phi_2}{2}\right) \cdot \cos \left(\frac{\phi_1 + \phi_2}{2}\right)\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 2.511829003669043e+124 < phi2

    1. Initial program 56.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 0 18.9

      \[\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 2.511829003669043 \cdot 10^{+124}:\\ \;\;\;\;\sqrt{\left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\lambda_1 - \lambda_2\right)\right) \cdot \left(\sqrt[3]{\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \left(\cos \left(\frac{\phi_2 + \phi_1}{2}\right) \cdot \cos \left(\frac{\phi_2 + \phi_1}{2}\right)\right)} \cdot \left(\lambda_1 - \lambda_2\right)\right) + \left(\phi_1 - \phi_2\right) \cdot \left(\phi_1 - \phi_2\right)} \cdot R\\ \mathbf{else}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \end{array}\]

Reproduce

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