\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{\cos delta \cdot \left(\cos delta \cdot \cos delta\right) - \left(\left(\left(\left(2 \cdot \sin delta\right) \cdot \cos \phi_1\right) \cdot \left(\cos theta \cdot \left(\left(\cos delta \cdot \cos delta\right) \cdot {\left(\sin \phi_1\right)}^{5}\right)\right) + \left(\log \left(e^{\left(\cos theta \cdot \cos \phi_1\right) \cdot \left(\cos theta \cdot \cos \phi_1\right)}\right) \cdot \cos delta\right) \cdot \left(3 \cdot \left(\left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin delta\right) \cdot \left(\left(\sin \phi_1 \cdot \sin \phi_1\right) \cdot \sin delta\right)\right)\right)\right) + \left(\left(\left(\cos theta \cdot \cos theta\right) \cdot \cos theta\right) \cdot \left(\left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right) \cdot \left(\left(\left(\sin delta \cdot \left(\sin delta \cdot \sin delta\right)\right) \cdot \cos \phi_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_1\right)\right)\right) + \left(\left(\cos delta \cdot \left(\cos delta \cdot \cos delta\right)\right) \cdot \left(\left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right) \cdot \left(\sin \phi_1 \cdot \left(\sin \phi_1 \cdot \sin \phi_1\right)\right)\right) + {\left(\sin \phi_1\right)}^{5} \cdot \left(\left(\cos theta \cdot \left(\sin delta \cdot \left(\cos delta \cdot \cos delta\right)\right)\right) \cdot \cos \phi_1\right)\right)\right)\right)}{\cos delta \cdot \cos delta + \left(\left(\sin \left(\sin^{-1} \left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta + \cos delta \cdot \sin \phi_1\right)\right) \cdot \sin \phi_1\right) \cdot \left(\sin \left(\sin^{-1} \left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta + \cos delta \cdot \sin \phi_1\right)\right) \cdot \sin \phi_1\right) + \cos delta \cdot \left(\sin \left(\sin^{-1} \left(\left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta + \cos delta \cdot \sin \phi_1\right)\right) \cdot \sin \phi_1\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r17158467 = lambda1;
double r17158468 = theta;
double r17158469 = sin(r17158468);
double r17158470 = delta;
double r17158471 = sin(r17158470);
double r17158472 = r17158469 * r17158471;
double r17158473 = phi1;
double r17158474 = cos(r17158473);
double r17158475 = r17158472 * r17158474;
double r17158476 = cos(r17158470);
double r17158477 = sin(r17158473);
double r17158478 = r17158477 * r17158476;
double r17158479 = r17158474 * r17158471;
double r17158480 = cos(r17158468);
double r17158481 = r17158479 * r17158480;
double r17158482 = r17158478 + r17158481;
double r17158483 = asin(r17158482);
double r17158484 = sin(r17158483);
double r17158485 = r17158477 * r17158484;
double r17158486 = r17158476 - r17158485;
double r17158487 = atan2(r17158475, r17158486);
double r17158488 = r17158467 + r17158487;
return r17158488;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r17158489 = lambda1;
double r17158490 = phi1;
double r17158491 = cos(r17158490);
double r17158492 = delta;
double r17158493 = sin(r17158492);
double r17158494 = theta;
double r17158495 = sin(r17158494);
double r17158496 = r17158493 * r17158495;
double r17158497 = r17158491 * r17158496;
double r17158498 = cos(r17158492);
double r17158499 = r17158498 * r17158498;
double r17158500 = r17158498 * r17158499;
double r17158501 = 2.0;
double r17158502 = r17158501 * r17158493;
double r17158503 = r17158502 * r17158491;
double r17158504 = cos(r17158494);
double r17158505 = sin(r17158490);
double r17158506 = 5.0;
double r17158507 = pow(r17158505, r17158506);
double r17158508 = r17158499 * r17158507;
double r17158509 = r17158504 * r17158508;
double r17158510 = r17158503 * r17158509;
double r17158511 = r17158504 * r17158491;
double r17158512 = r17158511 * r17158511;
double r17158513 = exp(r17158512);
double r17158514 = log(r17158513);
double r17158515 = r17158514 * r17158498;
double r17158516 = 3.0;
double r17158517 = r17158505 * r17158505;
double r17158518 = r17158517 * r17158493;
double r17158519 = r17158518 * r17158518;
double r17158520 = r17158516 * r17158519;
double r17158521 = r17158515 * r17158520;
double r17158522 = r17158510 + r17158521;
double r17158523 = r17158504 * r17158504;
double r17158524 = r17158523 * r17158504;
double r17158525 = r17158505 * r17158517;
double r17158526 = r17158493 * r17158493;
double r17158527 = r17158493 * r17158526;
double r17158528 = r17158527 * r17158491;
double r17158529 = r17158491 * r17158491;
double r17158530 = r17158528 * r17158529;
double r17158531 = r17158525 * r17158530;
double r17158532 = r17158524 * r17158531;
double r17158533 = r17158525 * r17158525;
double r17158534 = r17158500 * r17158533;
double r17158535 = r17158493 * r17158499;
double r17158536 = r17158504 * r17158535;
double r17158537 = r17158536 * r17158491;
double r17158538 = r17158507 * r17158537;
double r17158539 = r17158534 + r17158538;
double r17158540 = r17158532 + r17158539;
double r17158541 = r17158522 + r17158540;
double r17158542 = r17158500 - r17158541;
double r17158543 = r17158491 * r17158493;
double r17158544 = r17158543 * r17158504;
double r17158545 = r17158498 * r17158505;
double r17158546 = r17158544 + r17158545;
double r17158547 = asin(r17158546);
double r17158548 = sin(r17158547);
double r17158549 = r17158548 * r17158505;
double r17158550 = r17158549 * r17158549;
double r17158551 = r17158498 * r17158549;
double r17158552 = r17158550 + r17158551;
double r17158553 = r17158499 + r17158552;
double r17158554 = r17158542 / r17158553;
double r17158555 = atan2(r17158497, r17158554);
double r17158556 = r17158489 + r17158555;
return r17158556;
}



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
Taylor expanded around inf 0.2
Simplified0.2
rmApplied add-log-exp0.2
Final simplification0.2
herbie shell --seed 2019144
(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))))))))))