\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 delta\right) \cdot \sin theta}{\cos delta - \log \left(e^{\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right) \cdot \sin \phi_1}\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3457596 = lambda1;
double r3457597 = theta;
double r3457598 = sin(r3457597);
double r3457599 = delta;
double r3457600 = sin(r3457599);
double r3457601 = r3457598 * r3457600;
double r3457602 = phi1;
double r3457603 = cos(r3457602);
double r3457604 = r3457601 * r3457603;
double r3457605 = cos(r3457599);
double r3457606 = sin(r3457602);
double r3457607 = r3457606 * r3457605;
double r3457608 = r3457603 * r3457600;
double r3457609 = cos(r3457597);
double r3457610 = r3457608 * r3457609;
double r3457611 = r3457607 + r3457610;
double r3457612 = asin(r3457611);
double r3457613 = sin(r3457612);
double r3457614 = r3457606 * r3457613;
double r3457615 = r3457605 - r3457614;
double r3457616 = atan2(r3457604, r3457615);
double r3457617 = r3457596 + r3457616;
return r3457617;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3457618 = lambda1;
double r3457619 = phi1;
double r3457620 = cos(r3457619);
double r3457621 = delta;
double r3457622 = sin(r3457621);
double r3457623 = r3457620 * r3457622;
double r3457624 = theta;
double r3457625 = sin(r3457624);
double r3457626 = r3457623 * r3457625;
double r3457627 = cos(r3457621);
double r3457628 = cos(r3457624);
double r3457629 = sin(r3457619);
double r3457630 = r3457629 * r3457627;
double r3457631 = fma(r3457628, r3457623, r3457630);
double r3457632 = asin(r3457631);
double r3457633 = sin(r3457632);
double r3457634 = r3457633 * r3457629;
double r3457635 = exp(r3457634);
double r3457636 = log(r3457635);
double r3457637 = r3457627 - r3457636;
double r3457638 = atan2(r3457626, r3457637);
double r3457639 = r3457618 + r3457638;
return r3457639;
}



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 add-log-exp0.2
Final simplification0.2
herbie shell --seed 2019165 +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))))))))))