\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)}\tan^{-1}_* \frac{\left(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\mathsf{fma}\left(1, \cos delta, \left(-\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)\right) \cdot \sin \phi_1\right) + \mathsf{fma}\left(-\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right), \sin \phi_1, \sin \left(\frac{\pi}{2} - \cos^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right) \cdot \sin \phi_1\right)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4125539 = lambda1;
double r4125540 = theta;
double r4125541 = sin(r4125540);
double r4125542 = delta;
double r4125543 = sin(r4125542);
double r4125544 = r4125541 * r4125543;
double r4125545 = phi1;
double r4125546 = cos(r4125545);
double r4125547 = r4125544 * r4125546;
double r4125548 = cos(r4125542);
double r4125549 = sin(r4125545);
double r4125550 = r4125549 * r4125548;
double r4125551 = r4125546 * r4125543;
double r4125552 = cos(r4125540);
double r4125553 = r4125551 * r4125552;
double r4125554 = r4125550 + r4125553;
double r4125555 = asin(r4125554);
double r4125556 = sin(r4125555);
double r4125557 = r4125549 * r4125556;
double r4125558 = r4125548 - r4125557;
double r4125559 = atan2(r4125547, r4125558);
double r4125560 = r4125539 + r4125559;
return r4125560;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4125561 = phi1;
double r4125562 = cos(r4125561);
double r4125563 = theta;
double r4125564 = sin(r4125563);
double r4125565 = r4125562 * r4125564;
double r4125566 = delta;
double r4125567 = sin(r4125566);
double r4125568 = r4125565 * r4125567;
double r4125569 = 1.0;
double r4125570 = cos(r4125566);
double r4125571 = cos(r4125563);
double r4125572 = r4125562 * r4125567;
double r4125573 = sin(r4125561);
double r4125574 = r4125570 * r4125573;
double r4125575 = fma(r4125571, r4125572, r4125574);
double r4125576 = asin(r4125575);
double r4125577 = sin(r4125576);
double r4125578 = -r4125577;
double r4125579 = r4125578 * r4125573;
double r4125580 = fma(r4125569, r4125570, r4125579);
double r4125581 = atan2(1.0, 0.0);
double r4125582 = 2.0;
double r4125583 = r4125581 / r4125582;
double r4125584 = acos(r4125575);
double r4125585 = r4125583 - r4125584;
double r4125586 = sin(r4125585);
double r4125587 = r4125586 * r4125573;
double r4125588 = fma(r4125578, r4125573, r4125587);
double r4125589 = r4125580 + r4125588;
double r4125590 = atan2(r4125568, r4125589);
double r4125591 = lambda1;
double r4125592 = r4125590 + r4125591;
return r4125592;
}



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 *-un-lft-identity0.2
Applied prod-diff0.2
rmApplied asin-acos0.2
Final simplification0.2
herbie shell --seed 2019158 +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))))))))))