\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{\cos delta \cdot {\left(\cos delta\right)}^{2} - {\left(\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)\right)}^{3}}{\left(\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)\right) \cdot \left(\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) + \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r108290 = lambda1;
double r108291 = theta;
double r108292 = sin(r108291);
double r108293 = delta;
double r108294 = sin(r108293);
double r108295 = r108292 * r108294;
double r108296 = phi1;
double r108297 = cos(r108296);
double r108298 = r108295 * r108297;
double r108299 = cos(r108293);
double r108300 = sin(r108296);
double r108301 = r108300 * r108299;
double r108302 = r108297 * r108294;
double r108303 = cos(r108291);
double r108304 = r108302 * r108303;
double r108305 = r108301 + r108304;
double r108306 = asin(r108305);
double r108307 = sin(r108306);
double r108308 = r108300 * r108307;
double r108309 = r108299 - r108308;
double r108310 = atan2(r108298, r108309);
double r108311 = r108290 + r108310;
return r108311;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r108312 = lambda1;
double r108313 = theta;
double r108314 = sin(r108313);
double r108315 = delta;
double r108316 = sin(r108315);
double r108317 = r108314 * r108316;
double r108318 = phi1;
double r108319 = cos(r108318);
double r108320 = r108317 * r108319;
double r108321 = cos(r108315);
double r108322 = 2.0;
double r108323 = pow(r108321, r108322);
double r108324 = r108321 * r108323;
double r108325 = sin(r108318);
double r108326 = r108325 * r108321;
double r108327 = r108319 * r108316;
double r108328 = cos(r108313);
double r108329 = r108327 * r108328;
double r108330 = r108326 + r108329;
double r108331 = asin(r108330);
double r108332 = sin(r108331);
double r108333 = r108325 * r108332;
double r108334 = 3.0;
double r108335 = pow(r108333, r108334);
double r108336 = r108324 - r108335;
double r108337 = r108333 + r108321;
double r108338 = r108333 * r108337;
double r108339 = r108321 * r108321;
double r108340 = r108338 + r108339;
double r108341 = r108336 / r108340;
double r108342 = atan2(r108320, r108341);
double r108343 = r108312 + r108342;
return r108343;
}



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
rmApplied flip3--0.2
Simplified0.2
rmApplied cube-mult0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020018
(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))))))))))