\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(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{\mathsf{fma}\left(\cos delta, \cos delta, -{\left(\sin \phi_1\right)}^{2} \cdot \left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)\right) \cdot \sin \left(\left(\sqrt[3]{\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)} \cdot \sqrt[3]{\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)}\right) \cdot \sqrt[3]{\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)}\right)\right)\right)}{\mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)\right), \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r73406 = lambda1;
double r73407 = theta;
double r73408 = sin(r73407);
double r73409 = delta;
double r73410 = sin(r73409);
double r73411 = r73408 * r73410;
double r73412 = phi1;
double r73413 = cos(r73412);
double r73414 = r73411 * r73413;
double r73415 = cos(r73409);
double r73416 = sin(r73412);
double r73417 = r73416 * r73415;
double r73418 = r73413 * r73410;
double r73419 = cos(r73407);
double r73420 = r73418 * r73419;
double r73421 = r73417 + r73420;
double r73422 = asin(r73421);
double r73423 = sin(r73422);
double r73424 = r73416 * r73423;
double r73425 = r73415 - r73424;
double r73426 = atan2(r73414, r73425);
double r73427 = r73406 + r73426;
return r73427;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r73428 = lambda1;
double r73429 = theta;
double r73430 = sin(r73429);
double r73431 = delta;
double r73432 = sin(r73431);
double r73433 = r73430 * r73432;
double r73434 = phi1;
double r73435 = cos(r73434);
double r73436 = r73433 * r73435;
double r73437 = cos(r73431);
double r73438 = sin(r73434);
double r73439 = 2.0;
double r73440 = pow(r73438, r73439);
double r73441 = cos(r73429);
double r73442 = r73435 * r73441;
double r73443 = r73438 * r73437;
double r73444 = fma(r73432, r73442, r73443);
double r73445 = asin(r73444);
double r73446 = sin(r73445);
double r73447 = cbrt(r73445);
double r73448 = r73447 * r73447;
double r73449 = r73448 * r73447;
double r73450 = sin(r73449);
double r73451 = r73446 * r73450;
double r73452 = r73440 * r73451;
double r73453 = -r73452;
double r73454 = fma(r73437, r73437, r73453);
double r73455 = fma(r73438, r73446, r73437);
double r73456 = r73454 / r73455;
double r73457 = atan2(r73436, r73456);
double r73458 = r73428 + r73457;
return r73458;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied flip--0.2
Simplified0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019350 +o rules:numerics
(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))))))))))