\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)}\tan^{-1}_* \frac{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{\left(\frac{1}{2} \cdot \cos \left(2 \cdot delta\right) - \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right)\right) + \frac{1}{2}}{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right) + \cos delta}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r5187565 = lambda1;
double r5187566 = theta;
double r5187567 = sin(r5187566);
double r5187568 = delta;
double r5187569 = sin(r5187568);
double r5187570 = r5187567 * r5187569;
double r5187571 = phi1;
double r5187572 = cos(r5187571);
double r5187573 = r5187570 * r5187572;
double r5187574 = cos(r5187568);
double r5187575 = sin(r5187571);
double r5187576 = r5187575 * r5187574;
double r5187577 = r5187572 * r5187569;
double r5187578 = cos(r5187566);
double r5187579 = r5187577 * r5187578;
double r5187580 = r5187576 + r5187579;
double r5187581 = asin(r5187580);
double r5187582 = sin(r5187581);
double r5187583 = r5187575 * r5187582;
double r5187584 = r5187574 - r5187583;
double r5187585 = atan2(r5187573, r5187584);
double r5187586 = r5187565 + r5187585;
return r5187586;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r5187587 = phi1;
double r5187588 = cos(r5187587);
double r5187589 = delta;
double r5187590 = sin(r5187589);
double r5187591 = theta;
double r5187592 = sin(r5187591);
double r5187593 = r5187590 * r5187592;
double r5187594 = r5187588 * r5187593;
double r5187595 = 0.5;
double r5187596 = 2.0;
double r5187597 = r5187596 * r5187589;
double r5187598 = cos(r5187597);
double r5187599 = r5187595 * r5187598;
double r5187600 = sin(r5187587);
double r5187601 = cos(r5187589);
double r5187602 = r5187601 * r5187600;
double r5187603 = cos(r5187591);
double r5187604 = r5187588 * r5187590;
double r5187605 = r5187603 * r5187604;
double r5187606 = r5187602 + r5187605;
double r5187607 = asin(r5187606);
double r5187608 = sin(r5187607);
double r5187609 = r5187600 * r5187608;
double r5187610 = r5187609 * r5187609;
double r5187611 = r5187599 - r5187610;
double r5187612 = r5187611 + r5187595;
double r5187613 = r5187609 + r5187601;
double r5187614 = r5187612 / r5187613;
double r5187615 = atan2(r5187594, r5187614);
double r5187616 = lambda1;
double r5187617 = r5187615 + r5187616;
return r5187617;
}



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
rmApplied sqr-cos0.2
Applied associate--l+0.2
Final simplification0.2
herbie shell --seed 2019163
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))