\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)}{\cos delta - \log \left(e^{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)}\right)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4648882 = lambda1;
double r4648883 = theta;
double r4648884 = sin(r4648883);
double r4648885 = delta;
double r4648886 = sin(r4648885);
double r4648887 = r4648884 * r4648886;
double r4648888 = phi1;
double r4648889 = cos(r4648888);
double r4648890 = r4648887 * r4648889;
double r4648891 = cos(r4648885);
double r4648892 = sin(r4648888);
double r4648893 = r4648892 * r4648891;
double r4648894 = r4648889 * r4648886;
double r4648895 = cos(r4648883);
double r4648896 = r4648894 * r4648895;
double r4648897 = r4648893 + r4648896;
double r4648898 = asin(r4648897);
double r4648899 = sin(r4648898);
double r4648900 = r4648892 * r4648899;
double r4648901 = r4648891 - r4648900;
double r4648902 = atan2(r4648890, r4648901);
double r4648903 = r4648882 + r4648902;
return r4648903;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4648904 = phi1;
double r4648905 = cos(r4648904);
double r4648906 = delta;
double r4648907 = sin(r4648906);
double r4648908 = theta;
double r4648909 = sin(r4648908);
double r4648910 = r4648907 * r4648909;
double r4648911 = r4648905 * r4648910;
double r4648912 = cos(r4648906);
double r4648913 = sin(r4648904);
double r4648914 = r4648912 * r4648913;
double r4648915 = cos(r4648908);
double r4648916 = r4648905 * r4648907;
double r4648917 = r4648915 * r4648916;
double r4648918 = r4648914 + r4648917;
double r4648919 = asin(r4648918);
double r4648920 = sin(r4648919);
double r4648921 = r4648913 * r4648920;
double r4648922 = exp(r4648921);
double r4648923 = log(r4648922);
double r4648924 = r4648912 - r4648923;
double r4648925 = atan2(r4648911, r4648924);
double r4648926 = lambda1;
double r4648927 = r4648925 + r4648926;
return r4648927;
}



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
Final simplification0.2
herbie shell --seed 2019165
(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))))))))))