\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(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} - {\left(\sin \phi_1\right)}^{3} \cdot {\left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)}^{3}}{\mathsf{fma}\left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)\right), \mathsf{fma}\left(\sin \left(\sin^{-1} \left(\mathsf{fma}\left(\sin delta, \cos \phi_1 \cdot \cos theta, \sin \phi_1 \cdot \cos delta\right)\right)\right), \sin \phi_1, \cos delta\right), \cos delta \cdot \cos delta\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91358 = lambda1;
double r91359 = theta;
double r91360 = sin(r91359);
double r91361 = delta;
double r91362 = sin(r91361);
double r91363 = r91360 * r91362;
double r91364 = phi1;
double r91365 = cos(r91364);
double r91366 = r91363 * r91365;
double r91367 = cos(r91361);
double r91368 = sin(r91364);
double r91369 = r91368 * r91367;
double r91370 = r91365 * r91362;
double r91371 = cos(r91359);
double r91372 = r91370 * r91371;
double r91373 = r91369 + r91372;
double r91374 = asin(r91373);
double r91375 = sin(r91374);
double r91376 = r91368 * r91375;
double r91377 = r91367 - r91376;
double r91378 = atan2(r91366, r91377);
double r91379 = r91358 + r91378;
return r91379;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91380 = lambda1;
double r91381 = theta;
double r91382 = sin(r91381);
double r91383 = delta;
double r91384 = sin(r91383);
double r91385 = r91382 * r91384;
double r91386 = phi1;
double r91387 = cos(r91386);
double r91388 = r91385 * r91387;
double r91389 = cos(r91383);
double r91390 = 3.0;
double r91391 = pow(r91389, r91390);
double r91392 = sin(r91386);
double r91393 = pow(r91392, r91390);
double r91394 = cos(r91381);
double r91395 = r91387 * r91394;
double r91396 = r91392 * r91389;
double r91397 = fma(r91384, r91395, r91396);
double r91398 = pow(r91397, r91390);
double r91399 = r91393 * r91398;
double r91400 = r91391 - r91399;
double r91401 = asin(r91397);
double r91402 = sin(r91401);
double r91403 = r91392 * r91402;
double r91404 = fma(r91402, r91392, r91389);
double r91405 = r91389 * r91389;
double r91406 = fma(r91403, r91404, r91405);
double r91407 = r91400 / r91406;
double r91408 = atan2(r91388, r91407);
double r91409 = r91380 + r91408;
return r91409;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019304 +o rules:numerics
(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))))))))))