Average Error: 39.5 → 36.5
Time: 15.0s
Precision: binary64
\[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 -1.62151504566423888 \cdot 10^{267}:\\ \;\;\;\;R \cdot \left(\frac{\phi_2 \cdot \left(\lambda_2 \cdot \phi_1\right)}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot {\lambda_1}^{2}} + \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_2 + \frac{\phi_2 \cdot \phi_1}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_1}\right)\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.10665397936539901 \cdot 10^{194}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.6125633002313201 \cdot 10^{157}:\\ \;\;\;\;R \cdot \left(\frac{\phi_2 \cdot \left(\lambda_2 \cdot \phi_1\right)}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot {\lambda_1}^{2}} + \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_2 + \frac{\phi_2 \cdot \phi_1}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_1}\right)\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.5446267051363834 \cdot 10^{-25}:\\ \;\;\;\;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)}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -4.3397747049107311 \cdot 10^{-153}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 4.9470093953262324 \cdot 10^{151}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot e^{\log \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right) - \left(-\log \lambda_1\right)}\\ \end{array}\]

Error

Bits error versus R

Bits error versus lambda1

Bits error versus lambda2

Bits error versus phi1

Bits error versus phi2

Derivation

  1. Split input into 4 regimes
  2. if (- lambda1 lambda2) < -1.62151504566423888e267 or -2.10665397936539901e194 < (- lambda1 lambda2) < -2.6125633002313201e157

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

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

    if -1.62151504566423888e267 < (- lambda1 lambda2) < -2.10665397936539901e194 or -2.5446267051363834e-25 < (- lambda1 lambda2) < -4.3397747049107311e-153

    1. Initial program 44.9

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

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

    if -2.6125633002313201e157 < (- lambda1 lambda2) < -2.5446267051363834e-25 or -4.3397747049107311e-153 < (- lambda1 lambda2) < 4.9470093953262324e151

    1. Initial program 24.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)}\]

    if 4.9470093953262324e151 < (- lambda1 lambda2)

    1. Initial program 63.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. Using strategy rm
    3. Applied add-exp-log63.5

      \[\leadsto R \cdot \color{blue}{e^{\log \left(\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)}\right)}}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt63.5

      \[\leadsto R \cdot e^{\color{blue}{\sqrt{\log \left(\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)}\right)} \cdot \sqrt{\log \left(\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)}\right)}}}\]
    6. Applied exp-prod63.5

      \[\leadsto R \cdot \color{blue}{{\left(e^{\sqrt{\log \left(\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)}\right)}}\right)}^{\left(\sqrt{\log \left(\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)}\right)}\right)}}\]
    7. Taylor expanded around inf 50.3

      \[\leadsto R \cdot \color{blue}{e^{\log \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right) - \log \left(\frac{1}{\lambda_1}\right)}}\]
    8. Simplified50.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\lambda_1 - \lambda_2 \le -1.62151504566423888 \cdot 10^{267}:\\ \;\;\;\;R \cdot \left(\frac{\phi_2 \cdot \left(\lambda_2 \cdot \phi_1\right)}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot {\lambda_1}^{2}} + \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_2 + \frac{\phi_2 \cdot \phi_1}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_1}\right)\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.10665397936539901 \cdot 10^{194}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.6125633002313201 \cdot 10^{157}:\\ \;\;\;\;R \cdot \left(\frac{\phi_2 \cdot \left(\lambda_2 \cdot \phi_1\right)}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot {\lambda_1}^{2}} + \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_2 + \frac{\phi_2 \cdot \phi_1}{\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right) \cdot \lambda_1}\right)\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -2.5446267051363834 \cdot 10^{-25}:\\ \;\;\;\;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)}\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le -4.3397747049107311 \cdot 10^{-153}:\\ \;\;\;\;R \cdot \left(\phi_2 - \phi_1\right)\\ \mathbf{elif}\;\lambda_1 - \lambda_2 \le 4.9470093953262324 \cdot 10^{151}:\\ \;\;\;\;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)}\\ \mathbf{else}:\\ \;\;\;\;R \cdot e^{\log \left(\cos \left(0.5 \cdot \left(\phi_2 + \phi_1\right)\right)\right) - \left(-\log \lambda_1\right)}\\ \end{array}\]

Reproduce

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