\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}{\sqrt[3]{\frac{{\left(\cos delta \cdot \cos delta + \left(-{\left(\sin \phi_1\right)}^{2}\right) \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \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)\right)\right)}^{3}}{{\left(\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)\right)}^{3}}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r215686 = lambda1;
double r215687 = theta;
double r215688 = sin(r215687);
double r215689 = delta;
double r215690 = sin(r215689);
double r215691 = r215688 * r215690;
double r215692 = phi1;
double r215693 = cos(r215692);
double r215694 = r215691 * r215693;
double r215695 = cos(r215689);
double r215696 = sin(r215692);
double r215697 = r215696 * r215695;
double r215698 = r215693 * r215690;
double r215699 = cos(r215687);
double r215700 = r215698 * r215699;
double r215701 = r215697 + r215700;
double r215702 = asin(r215701);
double r215703 = sin(r215702);
double r215704 = r215696 * r215703;
double r215705 = r215695 - r215704;
double r215706 = atan2(r215694, r215705);
double r215707 = r215686 + r215706;
return r215707;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r215708 = lambda1;
double r215709 = theta;
double r215710 = sin(r215709);
double r215711 = delta;
double r215712 = sin(r215711);
double r215713 = r215710 * r215712;
double r215714 = phi1;
double r215715 = cos(r215714);
double r215716 = r215713 * r215715;
double r215717 = cos(r215711);
double r215718 = r215717 * r215717;
double r215719 = sin(r215714);
double r215720 = 2.0;
double r215721 = pow(r215719, r215720);
double r215722 = -r215721;
double r215723 = r215719 * r215717;
double r215724 = r215715 * r215712;
double r215725 = cos(r215709);
double r215726 = r215724 * r215725;
double r215727 = r215723 + r215726;
double r215728 = asin(r215727);
double r215729 = sin(r215728);
double r215730 = r215729 * r215729;
double r215731 = r215722 * r215730;
double r215732 = r215718 + r215731;
double r215733 = 3.0;
double r215734 = pow(r215732, r215733);
double r215735 = r215719 * r215729;
double r215736 = r215717 + r215735;
double r215737 = pow(r215736, r215733);
double r215738 = r215734 / r215737;
double r215739 = cbrt(r215738);
double r215740 = atan2(r215716, r215739);
double r215741 = r215708 + r215740;
return r215741;
}



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
Simplified0.2
rmApplied flip--0.2
Applied cube-div0.2
rmApplied sub-neg0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020060
(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))))))))))