\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(\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 r109006 = lambda1;
double r109007 = theta;
double r109008 = sin(r109007);
double r109009 = delta;
double r109010 = sin(r109009);
double r109011 = r109008 * r109010;
double r109012 = phi1;
double r109013 = cos(r109012);
double r109014 = r109011 * r109013;
double r109015 = cos(r109009);
double r109016 = sin(r109012);
double r109017 = r109016 * r109015;
double r109018 = r109013 * r109010;
double r109019 = cos(r109007);
double r109020 = r109018 * r109019;
double r109021 = r109017 + r109020;
double r109022 = asin(r109021);
double r109023 = sin(r109022);
double r109024 = r109016 * r109023;
double r109025 = r109015 - r109024;
double r109026 = atan2(r109014, r109025);
double r109027 = r109006 + r109026;
return r109027;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r109028 = lambda1;
double r109029 = theta;
double r109030 = sin(r109029);
double r109031 = delta;
double r109032 = sin(r109031);
double r109033 = r109030 * r109032;
double r109034 = phi1;
double r109035 = cos(r109034);
double r109036 = r109033 * r109035;
double r109037 = cos(r109031);
double r109038 = sin(r109034);
double r109039 = r109038 * r109037;
double r109040 = r109035 * r109032;
double r109041 = cos(r109029);
double r109042 = r109040 * r109041;
double r109043 = r109039 + r109042;
double r109044 = asin(r109043);
double r109045 = sin(r109044);
double r109046 = r109038 * r109045;
double r109047 = 3.0;
double r109048 = pow(r109046, r109047);
double r109049 = cbrt(r109048);
double r109050 = r109037 - r109049;
double r109051 = atan2(r109036, r109050);
double r109052 = r109028 + r109051;
return r109052;
}



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 add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019362
(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))))))))))