\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{\mathsf{expm1}\left(\mathsf{log1p}\left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta\right)\right)}{\frac{\cos delta \cdot \cos delta - \sqrt[3]{\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right)\right) \cdot \left(\left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right)\right) \cdot \left(\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right)\right)\right)}}{\mathsf{log1p}\left(\mathsf{expm1}\left(\sin \phi_1 \cdot \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)\right)\right) + \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3215465 = lambda1;
double r3215466 = theta;
double r3215467 = sin(r3215466);
double r3215468 = delta;
double r3215469 = sin(r3215468);
double r3215470 = r3215467 * r3215469;
double r3215471 = phi1;
double r3215472 = cos(r3215471);
double r3215473 = r3215470 * r3215472;
double r3215474 = cos(r3215468);
double r3215475 = sin(r3215471);
double r3215476 = r3215475 * r3215474;
double r3215477 = r3215472 * r3215469;
double r3215478 = cos(r3215466);
double r3215479 = r3215477 * r3215478;
double r3215480 = r3215476 + r3215479;
double r3215481 = asin(r3215480);
double r3215482 = sin(r3215481);
double r3215483 = r3215475 * r3215482;
double r3215484 = r3215474 - r3215483;
double r3215485 = atan2(r3215473, r3215484);
double r3215486 = r3215465 + r3215485;
return r3215486;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3215487 = lambda1;
double r3215488 = phi1;
double r3215489 = cos(r3215488);
double r3215490 = delta;
double r3215491 = sin(r3215490);
double r3215492 = r3215489 * r3215491;
double r3215493 = theta;
double r3215494 = sin(r3215493);
double r3215495 = r3215492 * r3215494;
double r3215496 = log1p(r3215495);
double r3215497 = expm1(r3215496);
double r3215498 = cos(r3215490);
double r3215499 = r3215498 * r3215498;
double r3215500 = sin(r3215488);
double r3215501 = cos(r3215493);
double r3215502 = r3215500 * r3215498;
double r3215503 = fma(r3215501, r3215492, r3215502);
double r3215504 = asin(r3215503);
double r3215505 = sin(r3215504);
double r3215506 = r3215500 * r3215505;
double r3215507 = expm1(r3215506);
double r3215508 = log1p(r3215507);
double r3215509 = r3215508 * r3215508;
double r3215510 = r3215509 * r3215509;
double r3215511 = r3215509 * r3215510;
double r3215512 = cbrt(r3215511);
double r3215513 = r3215499 - r3215512;
double r3215514 = r3215508 + r3215498;
double r3215515 = r3215513 / r3215514;
double r3215516 = atan2(r3215497, r3215515);
double r3215517 = r3215487 + r3215516;
return r3215517;
}



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 log1p-expm1-u0.2
rmApplied expm1-log1p-u0.2
rmApplied flip--0.2
rmApplied add-cbrt-cube0.2
Final simplification0.2
herbie shell --seed 2019172 +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))))))))))