\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{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\left(\log \left(\sqrt{e^{\cos delta}}\right) - \log \left(\sqrt{e^{\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)\right) + \frac{\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)}{2}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85517 = lambda1;
double r85518 = theta;
double r85519 = sin(r85518);
double r85520 = delta;
double r85521 = sin(r85520);
double r85522 = r85519 * r85521;
double r85523 = phi1;
double r85524 = cos(r85523);
double r85525 = r85522 * r85524;
double r85526 = cos(r85520);
double r85527 = sin(r85523);
double r85528 = r85527 * r85526;
double r85529 = r85524 * r85521;
double r85530 = cos(r85518);
double r85531 = r85529 * r85530;
double r85532 = r85528 + r85531;
double r85533 = asin(r85532);
double r85534 = sin(r85533);
double r85535 = r85527 * r85534;
double r85536 = r85526 - r85535;
double r85537 = atan2(r85525, r85536);
double r85538 = r85517 + r85537;
return r85538;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85539 = theta;
double r85540 = sin(r85539);
double r85541 = delta;
double r85542 = sin(r85541);
double r85543 = r85540 * r85542;
double r85544 = phi1;
double r85545 = cos(r85544);
double r85546 = r85543 * r85545;
double r85547 = cos(r85541);
double r85548 = exp(r85547);
double r85549 = sqrt(r85548);
double r85550 = log(r85549);
double r85551 = sin(r85544);
double r85552 = r85551 * r85547;
double r85553 = r85545 * r85542;
double r85554 = cos(r85539);
double r85555 = r85553 * r85554;
double r85556 = r85552 + r85555;
double r85557 = asin(r85556);
double r85558 = sin(r85557);
double r85559 = r85551 * r85558;
double r85560 = exp(r85559);
double r85561 = sqrt(r85560);
double r85562 = log(r85561);
double r85563 = r85550 - r85562;
double r85564 = r85547 - r85559;
double r85565 = 2.0;
double r85566 = r85564 / r85565;
double r85567 = r85563 + r85566;
double r85568 = atan2(r85546, r85567);
double r85569 = lambda1;
double r85570 = r85568 + r85569;
return r85570;
}



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 add-log-exp0.2
Applied add-log-exp0.2
Applied diff-log0.2
Simplified0.2
rmApplied add-sqr-sqrt0.3
Applied log-prod0.2
rmApplied *-un-lft-identity0.2
Applied exp-prod0.2
Applied sqrt-pow10.2
Applied log-pow0.2
Simplified0.2
rmApplied exp-diff0.2
Applied sqrt-div0.2
Applied log-div0.2
Final simplification0.2
herbie shell --seed 2019323
(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))))))))))