\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{{\left(\cos delta\right)}^{2} - \left(\sin delta \cdot \left(\sin delta \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left(\cos \phi_1 \cdot \left(\sqrt[3]{{\left({\left(\sin \phi_1\right)}^{3}\right)}^{3}} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right) \cdot 2\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\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 r66002 = lambda1;
double r66003 = theta;
double r66004 = sin(r66003);
double r66005 = delta;
double r66006 = sin(r66005);
double r66007 = r66004 * r66006;
double r66008 = phi1;
double r66009 = cos(r66008);
double r66010 = r66007 * r66009;
double r66011 = cos(r66005);
double r66012 = sin(r66008);
double r66013 = r66012 * r66011;
double r66014 = r66009 * r66006;
double r66015 = cos(r66003);
double r66016 = r66014 * r66015;
double r66017 = r66013 + r66016;
double r66018 = asin(r66017);
double r66019 = sin(r66018);
double r66020 = r66012 * r66019;
double r66021 = r66011 - r66020;
double r66022 = atan2(r66010, r66021);
double r66023 = r66002 + r66022;
return r66023;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r66024 = lambda1;
double r66025 = theta;
double r66026 = sin(r66025);
double r66027 = delta;
double r66028 = sin(r66027);
double r66029 = r66026 * r66028;
double r66030 = phi1;
double r66031 = cos(r66030);
double r66032 = r66029 * r66031;
double r66033 = cos(r66027);
double r66034 = 2.0;
double r66035 = pow(r66033, r66034);
double r66036 = pow(r66031, r66034);
double r66037 = cos(r66025);
double r66038 = pow(r66037, r66034);
double r66039 = sin(r66030);
double r66040 = pow(r66039, r66034);
double r66041 = r66038 * r66040;
double r66042 = r66036 * r66041;
double r66043 = r66028 * r66042;
double r66044 = 3.0;
double r66045 = pow(r66039, r66044);
double r66046 = pow(r66045, r66044);
double r66047 = cbrt(r66046);
double r66048 = r66033 * r66037;
double r66049 = r66047 * r66048;
double r66050 = r66031 * r66049;
double r66051 = r66050 * r66034;
double r66052 = r66043 + r66051;
double r66053 = r66028 * r66052;
double r66054 = 4.0;
double r66055 = pow(r66039, r66054);
double r66056 = r66055 * r66035;
double r66057 = r66053 + r66056;
double r66058 = r66035 - r66057;
double r66059 = r66039 * r66033;
double r66060 = r66031 * r66028;
double r66061 = r66060 * r66037;
double r66062 = r66059 + r66061;
double r66063 = asin(r66062);
double r66064 = sin(r66063);
double r66065 = r66039 * r66064;
double r66066 = r66033 + r66065;
double r66067 = r66058 / r66066;
double r66068 = atan2(r66032, r66067);
double r66069 = r66024 + r66068;
return r66069;
}



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 flip--0.2
Simplified0.2
Taylor expanded around inf 0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019303
(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))))))))))