\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({\left({\sin \phi_1}^{2}\right)}^{0.3333333333333333} \cdot \left(\cos \phi_1 \cdot \left(\cos theta \cdot \sqrt[3]{\sin \phi_1}\right)\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)
(*
(pow (pow (sin phi1) 2.0) 0.3333333333333333)
(* (cos phi1) (* (cos theta) (cbrt (sin phi1))))))))))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) * (pow(pow(sin(phi1), 2.0), 0.3333333333333333) * (cos(phi1) * (cos(theta) * cbrt(sin(phi1))))))));
}



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
Proof
Taylor expanded in phi1 around inf 0.2
Applied associate--r+_binary640.2
Simplified0.1
Proof
Applied add-cube-cbrt_binary640.1
Applied associate-*l*_binary640.1
Simplified0.1
Proof
Taylor expanded in phi1 around inf 0.1
Final simplification0.1
herbie shell --seed 2022004
(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))))))))))