\lambda_1 + \tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)}\lambda_1 + \tan^{-1}_* \frac{\sin delta \cdot \left(\sin theta \cdot \cos \phi_1\right)}{\frac{{\left(\mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}^{3} - {\left({\left(\sin \phi_1\right)}^{2} \cdot \cos delta\right)}^{3}}{\mathsf{fma}\left(\mathsf{fma}\left(\cos delta, {\left(\sin \phi_1\right)}^{2}, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right), {\left(\sin \phi_1\right)}^{2} \cdot \cos delta, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right) \cdot \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r127265 = lambda1;
double r127266 = theta;
double r127267 = sin(r127266);
double r127268 = delta;
double r127269 = sin(r127268);
double r127270 = r127267 * r127269;
double r127271 = phi1;
double r127272 = cos(r127271);
double r127273 = r127270 * r127272;
double r127274 = cos(r127268);
double r127275 = sin(r127271);
double r127276 = r127275 * r127274;
double r127277 = r127272 * r127269;
double r127278 = cos(r127266);
double r127279 = r127277 * r127278;
double r127280 = r127276 + r127279;
double r127281 = asin(r127280);
double r127282 = sin(r127281);
double r127283 = r127275 * r127282;
double r127284 = r127274 - r127283;
double r127285 = atan2(r127273, r127284);
double r127286 = r127265 + r127285;
return r127286;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r127287 = lambda1;
double r127288 = delta;
double r127289 = sin(r127288);
double r127290 = theta;
double r127291 = sin(r127290);
double r127292 = phi1;
double r127293 = cos(r127292);
double r127294 = r127291 * r127293;
double r127295 = r127289 * r127294;
double r127296 = sin(r127292);
double r127297 = -r127296;
double r127298 = cos(r127290);
double r127299 = r127298 * r127289;
double r127300 = r127299 * r127293;
double r127301 = cos(r127288);
double r127302 = fma(r127297, r127300, r127301);
double r127303 = 3.0;
double r127304 = pow(r127302, r127303);
double r127305 = 2.0;
double r127306 = pow(r127296, r127305);
double r127307 = r127306 * r127301;
double r127308 = pow(r127307, r127303);
double r127309 = r127304 - r127308;
double r127310 = fma(r127301, r127306, r127302);
double r127311 = r127302 * r127302;
double r127312 = fma(r127310, r127307, r127311);
double r127313 = r127309 / r127312;
double r127314 = atan2(r127295, r127313);
double r127315 = r127287 + r127314;
return r127315;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.1
Taylor expanded around inf 0.1
Simplified0.2
rmApplied fma-udef0.2
Applied distribute-lft-in0.2
Applied associate--r+0.2
Simplified0.2
rmApplied associate-*r*0.2
Simplified0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))