\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{{\left(\cos delta\right)}^{3} - \left(\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(\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)\right)\right) \cdot \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)\right) \cdot \left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin \phi_1\right)}{\mathsf{fma}\left(\sin \phi_1 \cdot \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), \mathsf{fma}\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), \sin \phi_1, \cos delta\right), \cos delta \cdot \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r67583 = lambda1;
double r67584 = theta;
double r67585 = sin(r67584);
double r67586 = delta;
double r67587 = sin(r67586);
double r67588 = r67585 * r67587;
double r67589 = phi1;
double r67590 = cos(r67589);
double r67591 = r67588 * r67590;
double r67592 = cos(r67586);
double r67593 = sin(r67589);
double r67594 = r67593 * r67592;
double r67595 = r67590 * r67587;
double r67596 = cos(r67584);
double r67597 = r67595 * r67596;
double r67598 = r67594 + r67597;
double r67599 = asin(r67598);
double r67600 = sin(r67599);
double r67601 = r67593 * r67600;
double r67602 = r67592 - r67601;
double r67603 = atan2(r67591, r67602);
double r67604 = r67583 + r67603;
return r67604;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r67605 = lambda1;
double r67606 = theta;
double r67607 = sin(r67606);
double r67608 = delta;
double r67609 = sin(r67608);
double r67610 = r67607 * r67609;
double r67611 = phi1;
double r67612 = cos(r67611);
double r67613 = r67610 * r67612;
double r67614 = cos(r67608);
double r67615 = 3.0;
double r67616 = pow(r67614, r67615);
double r67617 = cos(r67606);
double r67618 = r67612 * r67617;
double r67619 = sin(r67611);
double r67620 = r67619 * r67614;
double r67621 = fma(r67609, r67618, r67620);
double r67622 = asin(r67621);
double r67623 = sin(r67622);
double r67624 = r67623 * r67623;
double r67625 = r67624 * r67623;
double r67626 = r67619 * r67619;
double r67627 = r67626 * r67619;
double r67628 = r67625 * r67627;
double r67629 = r67616 - r67628;
double r67630 = r67619 * r67623;
double r67631 = fma(r67623, r67619, r67614);
double r67632 = r67614 * r67614;
double r67633 = fma(r67630, r67631, r67632);
double r67634 = r67629 / r67633;
double r67635 = atan2(r67613, r67634);
double r67636 = r67605 + r67635;
return r67636;
}



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 flip3--0.2
Simplified0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied rem-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019305 +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))))))))))