\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\sqrt[3]{\log \left(\frac{e^{\cos delta}}{e^{\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(\left(\cos delta - \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(\cos delta - \left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \cos delta + \left(\left(\cos \phi_1 \cdot \sin \phi_1\right) \cdot \cos theta\right) \cdot \sin delta\right)\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1957519 = lambda1;
double r1957520 = theta;
double r1957521 = sin(r1957520);
double r1957522 = delta;
double r1957523 = sin(r1957522);
double r1957524 = r1957521 * r1957523;
double r1957525 = phi1;
double r1957526 = cos(r1957525);
double r1957527 = r1957524 * r1957526;
double r1957528 = cos(r1957522);
double r1957529 = sin(r1957525);
double r1957530 = r1957529 * r1957528;
double r1957531 = r1957526 * r1957523;
double r1957532 = cos(r1957520);
double r1957533 = r1957531 * r1957532;
double r1957534 = r1957530 + r1957533;
double r1957535 = asin(r1957534);
double r1957536 = sin(r1957535);
double r1957537 = r1957529 * r1957536;
double r1957538 = r1957528 - r1957537;
double r1957539 = atan2(r1957527, r1957538);
double r1957540 = r1957519 + r1957539;
return r1957540;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r1957541 = lambda1;
double r1957542 = phi1;
double r1957543 = cos(r1957542);
double r1957544 = delta;
double r1957545 = sin(r1957544);
double r1957546 = theta;
double r1957547 = sin(r1957546);
double r1957548 = r1957545 * r1957547;
double r1957549 = r1957543 * r1957548;
double r1957550 = cos(r1957544);
double r1957551 = exp(r1957550);
double r1957552 = sin(r1957542);
double r1957553 = r1957550 * r1957552;
double r1957554 = cos(r1957546);
double r1957555 = r1957543 * r1957545;
double r1957556 = r1957554 * r1957555;
double r1957557 = r1957553 + r1957556;
double r1957558 = asin(r1957557);
double r1957559 = sin(r1957558);
double r1957560 = r1957552 * r1957559;
double r1957561 = exp(r1957560);
double r1957562 = r1957551 / r1957561;
double r1957563 = log(r1957562);
double r1957564 = r1957550 - r1957560;
double r1957565 = r1957552 * r1957552;
double r1957566 = r1957565 * r1957550;
double r1957567 = r1957543 * r1957552;
double r1957568 = r1957567 * r1957554;
double r1957569 = r1957568 * r1957545;
double r1957570 = r1957566 + r1957569;
double r1957571 = r1957550 - r1957570;
double r1957572 = r1957564 * r1957571;
double r1957573 = r1957563 * r1957572;
double r1957574 = cbrt(r1957573);
double r1957575 = atan2(r1957549, r1957574);
double r1957576 = r1957541 + r1957575;
return r1957576;
}



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-cbrt-cube0.2
rmApplied add-log-exp0.2
Applied add-log-exp0.2
Applied diff-log0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019155
(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))))))))))