\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 r72323 = lambda1;
double r72324 = theta;
double r72325 = sin(r72324);
double r72326 = delta;
double r72327 = sin(r72326);
double r72328 = r72325 * r72327;
double r72329 = phi1;
double r72330 = cos(r72329);
double r72331 = r72328 * r72330;
double r72332 = cos(r72326);
double r72333 = sin(r72329);
double r72334 = r72333 * r72332;
double r72335 = r72330 * r72327;
double r72336 = cos(r72324);
double r72337 = r72335 * r72336;
double r72338 = r72334 + r72337;
double r72339 = asin(r72338);
double r72340 = sin(r72339);
double r72341 = r72333 * r72340;
double r72342 = r72332 - r72341;
double r72343 = atan2(r72331, r72342);
double r72344 = r72323 + r72343;
return r72344;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r72345 = lambda1;
double r72346 = theta;
double r72347 = sin(r72346);
double r72348 = delta;
double r72349 = sin(r72348);
double r72350 = r72347 * r72349;
double r72351 = phi1;
double r72352 = cos(r72351);
double r72353 = r72350 * r72352;
double r72354 = cos(r72348);
double r72355 = 2.0;
double r72356 = pow(r72354, r72355);
double r72357 = pow(r72352, r72355);
double r72358 = cos(r72346);
double r72359 = pow(r72358, r72355);
double r72360 = sin(r72351);
double r72361 = pow(r72360, r72355);
double r72362 = r72359 * r72361;
double r72363 = r72357 * r72362;
double r72364 = r72349 * r72363;
double r72365 = 3.0;
double r72366 = pow(r72360, r72365);
double r72367 = pow(r72366, r72365);
double r72368 = cbrt(r72367);
double r72369 = r72354 * r72358;
double r72370 = r72368 * r72369;
double r72371 = r72352 * r72370;
double r72372 = r72371 * r72355;
double r72373 = r72364 + r72372;
double r72374 = r72349 * r72373;
double r72375 = 4.0;
double r72376 = pow(r72360, r72375);
double r72377 = r72376 * r72356;
double r72378 = r72374 + r72377;
double r72379 = r72356 - r72378;
double r72380 = r72360 * r72354;
double r72381 = r72352 * r72349;
double r72382 = r72381 * r72358;
double r72383 = r72380 + r72382;
double r72384 = asin(r72383);
double r72385 = sin(r72384);
double r72386 = r72360 * r72385;
double r72387 = r72354 + r72386;
double r72388 = r72379 / r72387;
double r72389 = atan2(r72353, r72388);
double r72390 = r72345 + r72389;
return r72390;
}



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))))))))))