Average Error: 13.3 → 13.3
Time: 8.9s
Precision: binary64
\[\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{\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{\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{\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)
double code(double lat2, double lon2, double lon1, double lat1) {
	return ((double) atan(((double) (((double) (((double) cos(lat2)) * ((double) sin(((double) (lon2 - lon1)))))) / ((double) (((double) (((double) cos(lat1)) * ((double) sin(lat2)))) - ((double) (((double) (((double) sin(lat1)) * ((double) cos(lat2)))) * ((double) cos(((double) (lon2 - lon1))))))))))));
}
double code(double lat2, double lon2, double lon1, double lat1) {
	return ((double) atan(((double) (((double) (((double) cos(lat2)) * ((double) sin(((double) (lon2 - lon1)))))) / ((double) (((double) (((double) cos(lat1)) * ((double) sin(lat2)))) - ((double) (((double) (((double) sin(lat1)) * ((double) cos(lat2)))) * ((double) cos(((double) (lon2 - lon1))))))))))));
}

Error

Bits error versus lat2

Bits error versus lon2

Bits error versus lon1

Bits error versus lat1

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 13.3

    \[\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. Final simplification13.3

    \[\leadsto \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)\]

Reproduce

herbie shell --seed 2020153 
(FPCore (lat2 lon2 lon1 lat1)
  :name "(atan (/ (* (cos lat2) (sin (- lon2 lon1))) (- (* (cos lat1) (sin lat2)) (* (* (sin lat1) (cos lat2)) (cos (- lon2 lon1))))))"
  :precision binary64
  (atan (/ (* (cos lat2) (sin (- lon2 lon1))) (- (* (cos lat1) (sin lat2)) (* (* (sin lat1) (cos lat2)) (cos (- lon2 lon1)))))))