Average Error: 0.4 → 0.4
Time: 31.5s
Precision: 64
Internal precision: 384
\[\tan^{-1} \left(\frac{\cos lat2 \cdot \sin \left(lon2 - lon1\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
\[\tan^{-1} \left(\frac{\sin lon2 \cdot \left(\cos lon1 \cdot \cos lat2\right) + \cos lat2 \cdot \left(\cos lon2 \cdot \sin \left(-lon1\right)\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]

Error

Bits error versus lat1

Bits error versus lat2

Bits error versus lon1

Bits error versus lon2

Derivation

  1. Initial program 0.4

    \[\tan^{-1} \left(\frac{\cos lat2 \cdot \sin \left(lon2 - lon1\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
  2. Using strategy rm
  3. Applied sub-neg 0.4

    \[\leadsto \tan^{-1} \left(\frac{\cos lat2 \cdot \sin \color{blue}{\left(lon2 + \left(-lon1\right)\right)}}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
  4. Applied sin-sum 0.4

    \[\leadsto \tan^{-1} \left(\frac{\cos lat2 \cdot \color{blue}{\left(\sin lon2 \cdot \cos \left(-lon1\right) + \cos lon2 \cdot \sin \left(-lon1\right)\right)}}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
  5. Applied distribute-lft-in 0.4

    \[\leadsto \tan^{-1} \left(\frac{\color{blue}{\cos lat2 \cdot \left(\sin lon2 \cdot \cos \left(-lon1\right)\right) + \cos lat2 \cdot \left(\cos lon2 \cdot \sin \left(-lon1\right)\right)}}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
  6. Applied simplify 0.4

    \[\leadsto \tan^{-1} \left(\frac{\color{blue}{\sin lon2 \cdot \left(\cos lon1 \cdot \cos lat2\right)} + \cos lat2 \cdot \left(\cos lon2 \cdot \sin \left(-lon1\right)\right)}{\cos lat1 \cdot \sin lat2 - \left(\sin lat1 \cdot \cos lat2\right) \cdot \cos \left(lon2 - lon1\right)}\right)\]
  7. Removed slow pow expressions

Runtime

Time bar (total: 31.5s) Debug log

Please include this information when filing a bug report:

herbie shell --seed '#(3052192724 3812927732 3686175817 630908657 2373248591 511094450)'
(FPCore (lat1 lat2 lon1 lon2)
  :name "azimuth"
  :pre (and (<= 0 lat1 0.4) (<= 0.5 lat2 1) (<= 0 lon1 3.14159265) (<= -3.14159265 lon2 -0.5))
  (atan (/ (* (cos lat2) (sin (- lon2 lon1))) (- (* (cos lat1) (sin lat2)) (* (* (sin lat1) (cos lat2)) (cos (- lon2 lon1)))))))