\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(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}^{3}}{\mathsf{fma}\left(\cos delta, \cos delta, \sin \phi_1 \cdot \left(\sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right) \cdot \mathsf{fma}\left(\sin \phi_1, \sin \left(\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right), \cos delta\right)\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r273 = lambda1;
double r274 = theta;
double r275 = sin(r274);
double r276 = delta;
double r277 = sin(r276);
double r278 = r275 * r277;
double r279 = phi1;
double r280 = cos(r279);
double r281 = r278 * r280;
double r282 = cos(r276);
double r283 = sin(r279);
double r284 = r283 * r282;
double r285 = r280 * r277;
double r286 = cos(r274);
double r287 = r285 * r286;
double r288 = r284 + r287;
double r289 = asin(r288);
double r290 = sin(r289);
double r291 = r283 * r290;
double r292 = r282 - r291;
double r293 = atan2(r281, r292);
double r294 = r273 + r293;
return r294;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r295 = lambda1;
double r296 = theta;
double r297 = sin(r296);
double r298 = delta;
double r299 = sin(r298);
double r300 = r297 * r299;
double r301 = phi1;
double r302 = cos(r301);
double r303 = r300 * r302;
double r304 = cos(r298);
double r305 = 3.0;
double r306 = pow(r304, r305);
double r307 = sin(r301);
double r308 = pow(r307, r305);
double r309 = r307 * r304;
double r310 = r302 * r299;
double r311 = cos(r296);
double r312 = r310 * r311;
double r313 = r309 + r312;
double r314 = asin(r313);
double r315 = sin(r314);
double r316 = pow(r315, r305);
double r317 = r308 * r316;
double r318 = r306 - r317;
double r319 = fma(r307, r315, r304);
double r320 = r315 * r319;
double r321 = r307 * r320;
double r322 = fma(r304, r304, r321);
double r323 = r318 / r322;
double r324 = atan2(r303, r323);
double r325 = r295 + r324;
return r325;
}



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
rmApplied unpow-prod-down0.2
Final simplification0.2
herbie shell --seed 2020025 +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))))))))))