\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 - \sqrt[3]{{\left(\sin \phi_1 \cdot \sin \left(\left(\sqrt[3]{\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)} \cdot \sqrt[3]{\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)}\right) \cdot \sqrt[3]{\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 r105660 = lambda1;
double r105661 = theta;
double r105662 = sin(r105661);
double r105663 = delta;
double r105664 = sin(r105663);
double r105665 = r105662 * r105664;
double r105666 = phi1;
double r105667 = cos(r105666);
double r105668 = r105665 * r105667;
double r105669 = cos(r105663);
double r105670 = sin(r105666);
double r105671 = r105670 * r105669;
double r105672 = r105667 * r105664;
double r105673 = cos(r105661);
double r105674 = r105672 * r105673;
double r105675 = r105671 + r105674;
double r105676 = asin(r105675);
double r105677 = sin(r105676);
double r105678 = r105670 * r105677;
double r105679 = r105669 - r105678;
double r105680 = atan2(r105668, r105679);
double r105681 = r105660 + r105680;
return r105681;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r105682 = lambda1;
double r105683 = theta;
double r105684 = sin(r105683);
double r105685 = delta;
double r105686 = sin(r105685);
double r105687 = r105684 * r105686;
double r105688 = phi1;
double r105689 = cos(r105688);
double r105690 = r105687 * r105689;
double r105691 = cos(r105685);
double r105692 = sin(r105688);
double r105693 = r105692 * r105691;
double r105694 = r105689 * r105686;
double r105695 = cos(r105683);
double r105696 = r105694 * r105695;
double r105697 = r105693 + r105696;
double r105698 = asin(r105697);
double r105699 = cbrt(r105698);
double r105700 = r105699 * r105699;
double r105701 = r105700 * r105699;
double r105702 = sin(r105701);
double r105703 = r105692 * r105702;
double r105704 = 3.0;
double r105705 = pow(r105703, r105704);
double r105706 = cbrt(r105705);
double r105707 = r105691 - r105706;
double r105708 = atan2(r105690, r105707);
double r105709 = r105682 + r105708;
return r105709;
}



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 cbrt-unprod0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019354 +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))))))))))