\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} - \mathsf{fma}\left({\left(\sin \phi_1\right)}^{4}, {\left(\cos delta\right)}^{2}, \sin delta \cdot \left(\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 + \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)\right)\right)}{\mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\sin \phi_1, \cos delta, \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right), \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r74230 = lambda1;
double r74231 = theta;
double r74232 = sin(r74231);
double r74233 = delta;
double r74234 = sin(r74233);
double r74235 = r74232 * r74234;
double r74236 = phi1;
double r74237 = cos(r74236);
double r74238 = r74235 * r74237;
double r74239 = cos(r74233);
double r74240 = sin(r74236);
double r74241 = r74240 * r74239;
double r74242 = r74237 * r74234;
double r74243 = cos(r74231);
double r74244 = r74242 * r74243;
double r74245 = r74241 + r74244;
double r74246 = asin(r74245);
double r74247 = sin(r74246);
double r74248 = r74240 * r74247;
double r74249 = r74239 - r74248;
double r74250 = atan2(r74238, r74249);
double r74251 = r74230 + r74250;
return r74251;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r74252 = lambda1;
double r74253 = theta;
double r74254 = sin(r74253);
double r74255 = delta;
double r74256 = sin(r74255);
double r74257 = r74254 * r74256;
double r74258 = phi1;
double r74259 = cos(r74258);
double r74260 = r74257 * r74259;
double r74261 = cos(r74255);
double r74262 = 2.0;
double r74263 = pow(r74261, r74262);
double r74264 = sin(r74258);
double r74265 = 4.0;
double r74266 = pow(r74264, r74265);
double r74267 = 3.0;
double r74268 = pow(r74264, r74267);
double r74269 = pow(r74268, r74267);
double r74270 = cbrt(r74269);
double r74271 = cos(r74253);
double r74272 = r74261 * r74271;
double r74273 = r74270 * r74272;
double r74274 = r74259 * r74273;
double r74275 = r74274 * r74262;
double r74276 = pow(r74259, r74262);
double r74277 = pow(r74271, r74262);
double r74278 = pow(r74264, r74262);
double r74279 = r74277 * r74278;
double r74280 = r74276 * r74279;
double r74281 = r74256 * r74280;
double r74282 = r74275 + r74281;
double r74283 = r74256 * r74282;
double r74284 = fma(r74266, r74263, r74283);
double r74285 = r74263 - r74284;
double r74286 = r74259 * r74256;
double r74287 = r74286 * r74271;
double r74288 = fma(r74264, r74261, r74287);
double r74289 = asin(r74288);
double r74290 = sin(r74289);
double r74291 = fma(r74264, r74290, r74261);
double r74292 = r74285 / r74291;
double r74293 = atan2(r74260, r74292);
double r74294 = r74252 + r74293;
return r74294;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.2
rmApplied flip--0.2
Simplified0.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 +o rules:numerics
(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))))))))))