\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}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \sqrt[3]{{\left(\cos \phi_1 \cdot \left(\cos theta \cdot \sin delta\right)\right)}^{3}}\right)\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r117684 = lambda1;
double r117685 = theta;
double r117686 = sin(r117685);
double r117687 = delta;
double r117688 = sin(r117687);
double r117689 = r117686 * r117688;
double r117690 = phi1;
double r117691 = cos(r117690);
double r117692 = r117689 * r117691;
double r117693 = cos(r117687);
double r117694 = sin(r117690);
double r117695 = r117694 * r117693;
double r117696 = r117691 * r117688;
double r117697 = cos(r117685);
double r117698 = r117696 * r117697;
double r117699 = r117695 + r117698;
double r117700 = asin(r117699);
double r117701 = sin(r117700);
double r117702 = r117694 * r117701;
double r117703 = r117693 - r117702;
double r117704 = atan2(r117692, r117703);
double r117705 = r117684 + r117704;
return r117705;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r117706 = lambda1;
double r117707 = theta;
double r117708 = sin(r117707);
double r117709 = delta;
double r117710 = sin(r117709);
double r117711 = r117708 * r117710;
double r117712 = phi1;
double r117713 = cos(r117712);
double r117714 = r117711 * r117713;
double r117715 = cos(r117709);
double r117716 = sin(r117712);
double r117717 = r117716 * r117715;
double r117718 = cos(r117707);
double r117719 = r117718 * r117710;
double r117720 = r117713 * r117719;
double r117721 = 3.0;
double r117722 = pow(r117720, r117721);
double r117723 = cbrt(r117722);
double r117724 = r117717 + r117723;
double r117725 = asin(r117724);
double r117726 = sin(r117725);
double r117727 = r117716 * r117726;
double r117728 = r117715 - r117727;
double r117729 = atan2(r117714, r117728);
double r117730 = r117706 + r117729;
return r117730;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019353 +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))))))))))