\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{\left(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\frac{\mathsf{fma}\left(1, {\left(\cos delta\right)}^{3}, \left(-{\left(\sin \phi_1\right)}^{3}\right) \cdot {\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)}^{3}\right) + \mathsf{fma}\left(-{\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)}^{3}, {\left(\sin \phi_1\right)}^{3}, {\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right)}^{3} \cdot {\left(\sin \phi_1\right)}^{3}\right)}{\left(\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right) + \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right) \cdot \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r5094241 = lambda1;
double r5094242 = theta;
double r5094243 = sin(r5094242);
double r5094244 = delta;
double r5094245 = sin(r5094244);
double r5094246 = r5094243 * r5094245;
double r5094247 = phi1;
double r5094248 = cos(r5094247);
double r5094249 = r5094246 * r5094248;
double r5094250 = cos(r5094244);
double r5094251 = sin(r5094247);
double r5094252 = r5094251 * r5094250;
double r5094253 = r5094248 * r5094245;
double r5094254 = cos(r5094242);
double r5094255 = r5094253 * r5094254;
double r5094256 = r5094252 + r5094255;
double r5094257 = asin(r5094256);
double r5094258 = sin(r5094257);
double r5094259 = r5094251 * r5094258;
double r5094260 = r5094250 - r5094259;
double r5094261 = atan2(r5094249, r5094260);
double r5094262 = r5094241 + r5094261;
return r5094262;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r5094263 = lambda1;
double r5094264 = phi1;
double r5094265 = cos(r5094264);
double r5094266 = theta;
double r5094267 = sin(r5094266);
double r5094268 = r5094265 * r5094267;
double r5094269 = delta;
double r5094270 = sin(r5094269);
double r5094271 = r5094268 * r5094270;
double r5094272 = 1.0;
double r5094273 = cos(r5094269);
double r5094274 = 3.0;
double r5094275 = pow(r5094273, r5094274);
double r5094276 = sin(r5094264);
double r5094277 = pow(r5094276, r5094274);
double r5094278 = -r5094277;
double r5094279 = cos(r5094266);
double r5094280 = r5094265 * r5094270;
double r5094281 = r5094276 * r5094273;
double r5094282 = fma(r5094279, r5094280, r5094281);
double r5094283 = asin(r5094282);
double r5094284 = sin(r5094283);
double r5094285 = pow(r5094284, r5094274);
double r5094286 = r5094278 * r5094285;
double r5094287 = fma(r5094272, r5094275, r5094286);
double r5094288 = -r5094285;
double r5094289 = r5094285 * r5094277;
double r5094290 = fma(r5094288, r5094277, r5094289);
double r5094291 = r5094287 + r5094290;
double r5094292 = r5094276 * r5094284;
double r5094293 = r5094292 * r5094292;
double r5094294 = r5094292 * r5094273;
double r5094295 = r5094293 + r5094294;
double r5094296 = r5094273 * r5094273;
double r5094297 = r5094295 + r5094296;
double r5094298 = r5094291 / r5094297;
double r5094299 = atan2(r5094271, r5094298);
double r5094300 = r5094263 + r5094299;
return r5094300;
}



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.2
rmApplied flip3--0.2
rmApplied unpow-prod-down0.2
Applied *-un-lft-identity0.2
Applied prod-diff0.2
Final simplification0.2
herbie shell --seed 2019168 +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))))))))))