\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}\right)}^{3}} \cdot {\left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\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 r117590 = lambda1;
double r117591 = theta;
double r117592 = sin(r117591);
double r117593 = delta;
double r117594 = sin(r117593);
double r117595 = r117592 * r117594;
double r117596 = phi1;
double r117597 = cos(r117596);
double r117598 = r117595 * r117597;
double r117599 = cos(r117593);
double r117600 = sin(r117596);
double r117601 = r117600 * r117599;
double r117602 = r117597 * r117594;
double r117603 = cos(r117591);
double r117604 = r117602 * r117603;
double r117605 = r117601 + r117604;
double r117606 = asin(r117605);
double r117607 = sin(r117606);
double r117608 = r117600 * r117607;
double r117609 = r117599 - r117608;
double r117610 = atan2(r117598, r117609);
double r117611 = r117590 + r117610;
return r117611;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r117612 = lambda1;
double r117613 = theta;
double r117614 = sin(r117613);
double r117615 = delta;
double r117616 = sin(r117615);
double r117617 = r117614 * r117616;
double r117618 = phi1;
double r117619 = cos(r117618);
double r117620 = r117617 * r117619;
double r117621 = cos(r117615);
double r117622 = 3.0;
double r117623 = pow(r117621, r117622);
double r117624 = sin(r117618);
double r117625 = pow(r117624, r117622);
double r117626 = pow(r117625, r117622);
double r117627 = cbrt(r117626);
double r117628 = cos(r117613);
double r117629 = r117619 * r117628;
double r117630 = r117616 * r117629;
double r117631 = r117624 * r117621;
double r117632 = r117630 + r117631;
double r117633 = pow(r117632, r117622);
double r117634 = r117627 * r117633;
double r117635 = r117623 - r117634;
double r117636 = r117619 * r117616;
double r117637 = r117636 * r117628;
double r117638 = r117631 + r117637;
double r117639 = asin(r117638);
double r117640 = sin(r117639);
double r117641 = r117624 * r117640;
double r117642 = r117641 + r117621;
double r117643 = r117641 * r117642;
double r117644 = r117621 * r117621;
double r117645 = r117643 + r117644;
double r117646 = r117635 / r117645;
double r117647 = atan2(r117620, r117646);
double r117648 = r117612 + r117647;
return r117648;
}



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