\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{\frac{\frac{{\left(\cos delta\right)}^{3}}{\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)}}{\frac{\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)}{\cos delta}} - \frac{\frac{{\left(\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}}{\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)}}{\frac{\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)}{\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)}}}{\frac{{\left(\cos delta\right)}^{2}}{\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)} + \frac{{\left(\sin \phi_1\right)}^{2} \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)}{\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)}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r140681 = lambda1;
double r140682 = theta;
double r140683 = sin(r140682);
double r140684 = delta;
double r140685 = sin(r140684);
double r140686 = r140683 * r140685;
double r140687 = phi1;
double r140688 = cos(r140687);
double r140689 = r140686 * r140688;
double r140690 = cos(r140684);
double r140691 = sin(r140687);
double r140692 = r140691 * r140690;
double r140693 = r140688 * r140685;
double r140694 = cos(r140682);
double r140695 = r140693 * r140694;
double r140696 = r140692 + r140695;
double r140697 = asin(r140696);
double r140698 = sin(r140697);
double r140699 = r140691 * r140698;
double r140700 = r140690 - r140699;
double r140701 = atan2(r140689, r140700);
double r140702 = r140681 + r140701;
return r140702;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r140703 = lambda1;
double r140704 = theta;
double r140705 = sin(r140704);
double r140706 = delta;
double r140707 = sin(r140706);
double r140708 = r140705 * r140707;
double r140709 = phi1;
double r140710 = cos(r140709);
double r140711 = r140708 * r140710;
double r140712 = cos(r140706);
double r140713 = 3.0;
double r140714 = pow(r140712, r140713);
double r140715 = sin(r140709);
double r140716 = r140715 * r140712;
double r140717 = r140710 * r140707;
double r140718 = cos(r140704);
double r140719 = r140717 * r140718;
double r140720 = r140716 + r140719;
double r140721 = asin(r140720);
double r140722 = sin(r140721);
double r140723 = r140715 * r140722;
double r140724 = r140712 + r140723;
double r140725 = r140714 / r140724;
double r140726 = r140724 / r140712;
double r140727 = r140725 / r140726;
double r140728 = pow(r140723, r140713);
double r140729 = r140728 / r140724;
double r140730 = r140724 / r140723;
double r140731 = r140729 / r140730;
double r140732 = r140727 - r140731;
double r140733 = 2.0;
double r140734 = pow(r140712, r140733);
double r140735 = r140734 / r140724;
double r140736 = pow(r140715, r140733);
double r140737 = r140722 * r140722;
double r140738 = r140736 * r140737;
double r140739 = r140738 / r140724;
double r140740 = r140735 + r140739;
double r140741 = r140732 / r140740;
double r140742 = atan2(r140711, r140741);
double r140743 = r140703 + r140742;
return r140743;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.1
rmApplied flip--0.2
Simplified0.2
rmApplied div-sub0.2
Simplified0.2
rmApplied flip--0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020047
(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))))))))))