\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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\frac{\cos delta \cdot \cos delta - \mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right) \cdot \sin \phi_1\right)\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right) \cdot \sin \phi_1\right)\right)}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right) \cdot \sin \phi_1\right)\right) + \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1490655 = lambda1;
double r1490656 = theta;
double r1490657 = sin(r1490656);
double r1490658 = delta;
double r1490659 = sin(r1490658);
double r1490660 = r1490657 * r1490659;
double r1490661 = phi1;
double r1490662 = cos(r1490661);
double r1490663 = r1490660 * r1490662;
double r1490664 = cos(r1490658);
double r1490665 = sin(r1490661);
double r1490666 = r1490665 * r1490664;
double r1490667 = r1490662 * r1490659;
double r1490668 = cos(r1490656);
double r1490669 = r1490667 * r1490668;
double r1490670 = r1490666 + r1490669;
double r1490671 = asin(r1490670);
double r1490672 = sin(r1490671);
double r1490673 = r1490665 * r1490672;
double r1490674 = r1490664 - r1490673;
double r1490675 = atan2(r1490663, r1490674);
double r1490676 = r1490655 + r1490675;
return r1490676;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1490677 = lambda1;
double r1490678 = phi1;
double r1490679 = cos(r1490678);
double r1490680 = theta;
double r1490681 = sin(r1490680);
double r1490682 = r1490679 * r1490681;
double r1490683 = delta;
double r1490684 = sin(r1490683);
double r1490685 = r1490682 * r1490684;
double r1490686 = cos(r1490683);
double r1490687 = r1490686 * r1490686;
double r1490688 = cos(r1490680);
double r1490689 = r1490679 * r1490684;
double r1490690 = sin(r1490678);
double r1490691 = r1490686 * r1490690;
double r1490692 = fma(r1490688, r1490689, r1490691);
double r1490693 = asin(r1490692);
double r1490694 = sin(r1490693);
double r1490695 = r1490694 * r1490690;
double r1490696 = log1p(r1490695);
double r1490697 = expm1(r1490696);
double r1490698 = r1490697 * r1490697;
double r1490699 = r1490687 - r1490698;
double r1490700 = r1490697 + r1490686;
double r1490701 = r1490699 / r1490700;
double r1490702 = atan2(r1490685, r1490701);
double r1490703 = r1490677 + r1490702;
return r1490703;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.2
rmApplied expm1-log1p-u0.2
rmApplied flip--0.2
Final simplification0.2
herbie shell --seed 2019155 +o rules:numerics
(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))))))))))