\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(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta}{\sqrt[3]{\left(\left(\cos delta - \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) \cdot \left(\mathsf{fma}\left(1, \cos delta, \left(-\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) \cdot \sin \phi_1\right) + \mathsf{fma}\left(-\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), \sin \phi_1, \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)\right)\right) \cdot \left(\cos delta - \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)}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4073475 = lambda1;
double r4073476 = theta;
double r4073477 = sin(r4073476);
double r4073478 = delta;
double r4073479 = sin(r4073478);
double r4073480 = r4073477 * r4073479;
double r4073481 = phi1;
double r4073482 = cos(r4073481);
double r4073483 = r4073480 * r4073482;
double r4073484 = cos(r4073478);
double r4073485 = sin(r4073481);
double r4073486 = r4073485 * r4073484;
double r4073487 = r4073482 * r4073479;
double r4073488 = cos(r4073476);
double r4073489 = r4073487 * r4073488;
double r4073490 = r4073486 + r4073489;
double r4073491 = asin(r4073490);
double r4073492 = sin(r4073491);
double r4073493 = r4073485 * r4073492;
double r4073494 = r4073484 - r4073493;
double r4073495 = atan2(r4073483, r4073494);
double r4073496 = r4073475 + r4073495;
return r4073496;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r4073497 = phi1;
double r4073498 = cos(r4073497);
double r4073499 = delta;
double r4073500 = sin(r4073499);
double r4073501 = r4073498 * r4073500;
double r4073502 = theta;
double r4073503 = sin(r4073502);
double r4073504 = r4073501 * r4073503;
double r4073505 = cos(r4073499);
double r4073506 = cos(r4073502);
double r4073507 = sin(r4073497);
double r4073508 = r4073507 * r4073505;
double r4073509 = fma(r4073506, r4073501, r4073508);
double r4073510 = asin(r4073509);
double r4073511 = sin(r4073510);
double r4073512 = r4073511 * r4073507;
double r4073513 = r4073505 - r4073512;
double r4073514 = 1.0;
double r4073515 = -r4073511;
double r4073516 = r4073515 * r4073507;
double r4073517 = fma(r4073514, r4073505, r4073516);
double r4073518 = fma(r4073515, r4073507, r4073512);
double r4073519 = r4073517 + r4073518;
double r4073520 = r4073513 * r4073519;
double r4073521 = r4073520 * r4073513;
double r4073522 = cbrt(r4073521);
double r4073523 = atan2(r4073504, r4073522);
double r4073524 = lambda1;
double r4073525 = r4073523 + r4073524;
return r4073525;
}



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-cbrt-cube0.2
rmApplied *-un-lft-identity0.2
Applied prod-diff0.2
Final simplification0.2
herbie shell --seed 2019192 +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))))))))))