\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({\left(\sin delta\right)}^{2} \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(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left(\sin \phi_1\right)}^{4} \cdot {\left(\cos delta\right)}^{2}\right)\right)}{\sin \left(\sqrt[3]{{\left(\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)\right)}^{3}}\right) \cdot \sin \phi_1 + \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r84453 = lambda1;
double r84454 = theta;
double r84455 = sin(r84454);
double r84456 = delta;
double r84457 = sin(r84456);
double r84458 = r84455 * r84457;
double r84459 = phi1;
double r84460 = cos(r84459);
double r84461 = r84458 * r84460;
double r84462 = cos(r84456);
double r84463 = sin(r84459);
double r84464 = r84463 * r84462;
double r84465 = r84460 * r84457;
double r84466 = cos(r84454);
double r84467 = r84465 * r84466;
double r84468 = r84464 + r84467;
double r84469 = asin(r84468);
double r84470 = sin(r84469);
double r84471 = r84463 * r84470;
double r84472 = r84462 - r84471;
double r84473 = atan2(r84461, r84472);
double r84474 = r84453 + r84473;
return r84474;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r84475 = lambda1;
double r84476 = theta;
double r84477 = sin(r84476);
double r84478 = delta;
double r84479 = sin(r84478);
double r84480 = r84477 * r84479;
double r84481 = phi1;
double r84482 = cos(r84481);
double r84483 = r84480 * r84482;
double r84484 = cos(r84478);
double r84485 = 2.0;
double r84486 = pow(r84484, r84485);
double r84487 = pow(r84479, r84485);
double r84488 = pow(r84482, r84485);
double r84489 = cos(r84476);
double r84490 = pow(r84489, r84485);
double r84491 = sin(r84481);
double r84492 = pow(r84491, r84485);
double r84493 = r84490 * r84492;
double r84494 = r84488 * r84493;
double r84495 = r84487 * r84494;
double r84496 = 3.0;
double r84497 = pow(r84491, r84496);
double r84498 = r84484 * r84489;
double r84499 = r84497 * r84498;
double r84500 = r84482 * r84499;
double r84501 = r84479 * r84500;
double r84502 = r84485 * r84501;
double r84503 = 4.0;
double r84504 = pow(r84491, r84503);
double r84505 = r84504 * r84486;
double r84506 = r84502 + r84505;
double r84507 = r84495 + r84506;
double r84508 = r84486 - r84507;
double r84509 = r84482 * r84489;
double r84510 = r84479 * r84509;
double r84511 = r84491 * r84484;
double r84512 = r84510 + r84511;
double r84513 = asin(r84512);
double r84514 = pow(r84513, r84496);
double r84515 = cbrt(r84514);
double r84516 = sin(r84515);
double r84517 = r84516 * r84491;
double r84518 = r84517 + r84484;
double r84519 = r84508 / r84518;
double r84520 = atan2(r84483, r84519);
double r84521 = r84475 + r84520;
return r84521;
}



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