\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)}^{3} - \sqrt[3]{{\left({\left(\sin \phi_1\right)}^{3} \cdot {\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)}^{3}\right)}^{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) \cdot \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) + \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r101265 = lambda1;
double r101266 = theta;
double r101267 = sin(r101266);
double r101268 = delta;
double r101269 = sin(r101268);
double r101270 = r101267 * r101269;
double r101271 = phi1;
double r101272 = cos(r101271);
double r101273 = r101270 * r101272;
double r101274 = cos(r101268);
double r101275 = sin(r101271);
double r101276 = r101275 * r101274;
double r101277 = r101272 * r101269;
double r101278 = cos(r101266);
double r101279 = r101277 * r101278;
double r101280 = r101276 + r101279;
double r101281 = asin(r101280);
double r101282 = sin(r101281);
double r101283 = r101275 * r101282;
double r101284 = r101274 - r101283;
double r101285 = atan2(r101273, r101284);
double r101286 = r101265 + r101285;
return r101286;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r101287 = lambda1;
double r101288 = theta;
double r101289 = sin(r101288);
double r101290 = delta;
double r101291 = sin(r101290);
double r101292 = r101289 * r101291;
double r101293 = phi1;
double r101294 = cos(r101293);
double r101295 = r101292 * r101294;
double r101296 = cos(r101290);
double r101297 = 3.0;
double r101298 = pow(r101296, r101297);
double r101299 = sin(r101293);
double r101300 = pow(r101299, r101297);
double r101301 = cos(r101288);
double r101302 = r101294 * r101301;
double r101303 = r101291 * r101302;
double r101304 = r101299 * r101296;
double r101305 = r101303 + r101304;
double r101306 = pow(r101305, r101297);
double r101307 = r101300 * r101306;
double r101308 = pow(r101307, r101297);
double r101309 = cbrt(r101308);
double r101310 = r101298 - r101309;
double r101311 = r101294 * r101291;
double r101312 = r101311 * r101301;
double r101313 = r101304 + r101312;
double r101314 = asin(r101313);
double r101315 = sin(r101314);
double r101316 = r101299 * r101315;
double r101317 = r101316 + r101296;
double r101318 = r101316 * r101317;
double r101319 = r101296 * r101296;
double r101320 = r101318 + r101319;
double r101321 = r101310 / r101320;
double r101322 = atan2(r101295, r101321);
double r101323 = r101287 + r101322;
return r101323;
}



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