\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)}\tan^{-1}_* \frac{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\log \left(e^{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \sin delta \cdot \left(\cos theta \cdot \cos \phi_1\right)\right)\right)}\right)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1663747 = lambda1;
double r1663748 = theta;
double r1663749 = sin(r1663748);
double r1663750 = delta;
double r1663751 = sin(r1663750);
double r1663752 = r1663749 * r1663751;
double r1663753 = phi1;
double r1663754 = cos(r1663753);
double r1663755 = r1663752 * r1663754;
double r1663756 = cos(r1663750);
double r1663757 = sin(r1663753);
double r1663758 = r1663757 * r1663756;
double r1663759 = r1663754 * r1663751;
double r1663760 = cos(r1663748);
double r1663761 = r1663759 * r1663760;
double r1663762 = r1663758 + r1663761;
double r1663763 = asin(r1663762);
double r1663764 = sin(r1663763);
double r1663765 = r1663757 * r1663764;
double r1663766 = r1663756 - r1663765;
double r1663767 = atan2(r1663755, r1663766);
double r1663768 = r1663747 + r1663767;
return r1663768;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1663769 = phi1;
double r1663770 = cos(r1663769);
double r1663771 = delta;
double r1663772 = sin(r1663771);
double r1663773 = theta;
double r1663774 = sin(r1663773);
double r1663775 = r1663772 * r1663774;
double r1663776 = r1663770 * r1663775;
double r1663777 = cos(r1663771);
double r1663778 = sin(r1663769);
double r1663779 = r1663777 * r1663778;
double r1663780 = cos(r1663773);
double r1663781 = r1663780 * r1663770;
double r1663782 = r1663772 * r1663781;
double r1663783 = r1663779 + r1663782;
double r1663784 = asin(r1663783);
double r1663785 = sin(r1663784);
double r1663786 = r1663778 * r1663785;
double r1663787 = r1663777 - r1663786;
double r1663788 = exp(r1663787);
double r1663789 = log(r1663788);
double r1663790 = atan2(r1663776, r1663789);
double r1663791 = lambda1;
double r1663792 = r1663790 + r1663791;
return r1663792;
}



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-log-exp0.2
Applied add-log-exp0.2
Applied diff-log0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019154
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))