\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}{0 + \frac{{\left(\cos delta\right)}^{2} + \left(-{\left(\sin \phi_1\right)}^{2} \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 \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)\right)}{\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)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r115390 = lambda1;
double r115391 = theta;
double r115392 = sin(r115391);
double r115393 = delta;
double r115394 = sin(r115393);
double r115395 = r115392 * r115394;
double r115396 = phi1;
double r115397 = cos(r115396);
double r115398 = r115395 * r115397;
double r115399 = cos(r115393);
double r115400 = sin(r115396);
double r115401 = r115400 * r115399;
double r115402 = r115397 * r115394;
double r115403 = cos(r115391);
double r115404 = r115402 * r115403;
double r115405 = r115401 + r115404;
double r115406 = asin(r115405);
double r115407 = sin(r115406);
double r115408 = r115400 * r115407;
double r115409 = r115399 - r115408;
double r115410 = atan2(r115398, r115409);
double r115411 = r115390 + r115410;
return r115411;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r115412 = lambda1;
double r115413 = theta;
double r115414 = sin(r115413);
double r115415 = delta;
double r115416 = sin(r115415);
double r115417 = r115414 * r115416;
double r115418 = phi1;
double r115419 = cos(r115418);
double r115420 = r115417 * r115419;
double r115421 = 0.0;
double r115422 = cos(r115415);
double r115423 = 2.0;
double r115424 = pow(r115422, r115423);
double r115425 = sin(r115418);
double r115426 = pow(r115425, r115423);
double r115427 = r115425 * r115422;
double r115428 = r115419 * r115416;
double r115429 = cos(r115413);
double r115430 = r115428 * r115429;
double r115431 = r115427 + r115430;
double r115432 = asin(r115431);
double r115433 = sin(r115432);
double r115434 = r115433 * r115433;
double r115435 = r115426 * r115434;
double r115436 = -r115435;
double r115437 = r115424 + r115436;
double r115438 = r115425 * r115433;
double r115439 = r115422 + r115438;
double r115440 = r115437 / r115439;
double r115441 = r115421 + r115440;
double r115442 = atan2(r115420, r115441);
double r115443 = r115412 + r115442;
return r115443;
}



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 add-log-exp0.2
Applied add-log-exp0.2
Applied diff-log0.2
Simplified0.2
rmApplied flip--0.2
rmApplied *-un-lft-identity0.2
Applied log-prod0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020065
(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))))))))))