\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)}
\lambda_1 + \tan^{-1}_* \frac{\sin theta \cdot \left(\sin delta \cdot \cos \phi_1\right)}{\left(\cos \phi_1 \cdot \cos \phi_1\right) \cdot \cos delta - \sin delta \cdot \left(\sin \phi_1 \cdot \left(\cos \phi_1 \cdot \cos theta\right)\right)}
(FPCore (lambda1 phi1 phi2 delta theta)
:precision binary64
(+
lambda1
(atan2
(* (* (sin theta) (sin delta)) (cos phi1))
(-
(cos delta)
(*
(sin phi1)
(sin
(asin
(+
(* (sin phi1) (cos delta))
(* (* (cos phi1) (sin delta)) (cos theta))))))))))(FPCore (lambda1 phi1 phi2 delta theta)
:precision binary64
(+
lambda1
(atan2
(* (sin theta) (* (sin delta) (cos phi1)))
(-
(* (* (cos phi1) (cos phi1)) (cos delta))
(* (sin delta) (* (sin phi1) (* (cos phi1) (cos theta))))))))double code(double lambda1, double phi1, double phi2, double delta, double theta) {
return lambda1 + atan2(((sin(theta) * sin(delta)) * cos(phi1)), (cos(delta) - (sin(phi1) * sin(asin((sin(phi1) * cos(delta)) + ((cos(phi1) * sin(delta)) * cos(theta)))))));
}
double code(double lambda1, double phi1, double phi2, double delta, double theta) {
return lambda1 + atan2((sin(theta) * (sin(delta) * cos(phi1))), (((cos(phi1) * cos(phi1)) * cos(delta)) - (sin(delta) * (sin(phi1) * (cos(phi1) * cos(theta))))));
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.2
Simplified0.2
Taylor expanded in delta around inf 0.2
Applied associate--r+_binary640.1
Simplified0.1
Applied associate-*l*_binary640.1
Final simplification0.1
herbie shell --seed 2022061
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
:precision binary64
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))