\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}{\cos delta - \sin \phi_1 \cdot \sin \left(\log \left(e^{\sin^{-1} \left(\left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1 + \sin \phi_1 \cdot \cos delta\right)}\right)\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r60451 = lambda1;
double r60452 = theta;
double r60453 = sin(r60452);
double r60454 = delta;
double r60455 = sin(r60454);
double r60456 = r60453 * r60455;
double r60457 = phi1;
double r60458 = cos(r60457);
double r60459 = r60456 * r60458;
double r60460 = cos(r60454);
double r60461 = sin(r60457);
double r60462 = r60461 * r60460;
double r60463 = r60458 * r60455;
double r60464 = cos(r60452);
double r60465 = r60463 * r60464;
double r60466 = r60462 + r60465;
double r60467 = asin(r60466);
double r60468 = sin(r60467);
double r60469 = r60461 * r60468;
double r60470 = r60460 - r60469;
double r60471 = atan2(r60459, r60470);
double r60472 = r60451 + r60471;
return r60472;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r60473 = lambda1;
double r60474 = phi1;
double r60475 = cos(r60474);
double r60476 = theta;
double r60477 = sin(r60476);
double r60478 = r60475 * r60477;
double r60479 = delta;
double r60480 = sin(r60479);
double r60481 = r60478 * r60480;
double r60482 = cos(r60479);
double r60483 = sin(r60474);
double r60484 = cos(r60476);
double r60485 = r60484 * r60480;
double r60486 = r60485 * r60475;
double r60487 = r60483 * r60482;
double r60488 = r60486 + r60487;
double r60489 = asin(r60488);
double r60490 = exp(r60489);
double r60491 = log(r60490);
double r60492 = sin(r60491);
double r60493 = r60483 * r60492;
double r60494 = r60482 - r60493;
double r60495 = atan2(r60481, r60494);
double r60496 = r60473 + r60495;
return r60496;
}



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
Simplified0.2
rmApplied add-log-exp0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019196
(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))))))))))