\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{\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta}{\cos delta - \left(\cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right) + \cos delta \cdot \sin \phi_1\right) \cdot \sin \phi_1} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4708952 = lambda1;
double r4708953 = theta;
double r4708954 = sin(r4708953);
double r4708955 = delta;
double r4708956 = sin(r4708955);
double r4708957 = r4708954 * r4708956;
double r4708958 = phi1;
double r4708959 = cos(r4708958);
double r4708960 = r4708957 * r4708959;
double r4708961 = cos(r4708955);
double r4708962 = sin(r4708958);
double r4708963 = r4708962 * r4708961;
double r4708964 = r4708959 * r4708956;
double r4708965 = cos(r4708953);
double r4708966 = r4708964 * r4708965;
double r4708967 = r4708963 + r4708966;
double r4708968 = asin(r4708967);
double r4708969 = sin(r4708968);
double r4708970 = r4708962 * r4708969;
double r4708971 = r4708961 - r4708970;
double r4708972 = atan2(r4708960, r4708971);
double r4708973 = r4708952 + r4708972;
return r4708973;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4708974 = phi1;
double r4708975 = cos(r4708974);
double r4708976 = delta;
double r4708977 = sin(r4708976);
double r4708978 = r4708975 * r4708977;
double r4708979 = theta;
double r4708980 = sin(r4708979);
double r4708981 = r4708978 * r4708980;
double r4708982 = cos(r4708976);
double r4708983 = cos(r4708979);
double r4708984 = r4708983 * r4708978;
double r4708985 = sin(r4708974);
double r4708986 = r4708982 * r4708985;
double r4708987 = r4708984 + r4708986;
double r4708988 = r4708987 * r4708985;
double r4708989 = r4708982 - r4708988;
double r4708990 = atan2(r4708981, r4708989);
double r4708991 = lambda1;
double r4708992 = r4708990 + r4708991;
return r4708992;
}



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
Taylor expanded around -inf 0.2
Simplified0.2
rmApplied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2019149
(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))))))))))