\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}{\sqrt[3]{{\left(\frac{\cos delta \cdot \cos delta - \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)\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)}\right)}^{3}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r157527 = lambda1;
double r157528 = theta;
double r157529 = sin(r157528);
double r157530 = delta;
double r157531 = sin(r157530);
double r157532 = r157529 * r157531;
double r157533 = phi1;
double r157534 = cos(r157533);
double r157535 = r157532 * r157534;
double r157536 = cos(r157530);
double r157537 = sin(r157533);
double r157538 = r157537 * r157536;
double r157539 = r157534 * r157531;
double r157540 = cos(r157528);
double r157541 = r157539 * r157540;
double r157542 = r157538 + r157541;
double r157543 = asin(r157542);
double r157544 = sin(r157543);
double r157545 = r157537 * r157544;
double r157546 = r157536 - r157545;
double r157547 = atan2(r157535, r157546);
double r157548 = r157527 + r157547;
return r157548;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r157549 = lambda1;
double r157550 = theta;
double r157551 = sin(r157550);
double r157552 = delta;
double r157553 = sin(r157552);
double r157554 = r157551 * r157553;
double r157555 = phi1;
double r157556 = cos(r157555);
double r157557 = r157554 * r157556;
double r157558 = cos(r157552);
double r157559 = r157558 * r157558;
double r157560 = sin(r157555);
double r157561 = r157560 * r157558;
double r157562 = r157556 * r157553;
double r157563 = cos(r157550);
double r157564 = r157562 * r157563;
double r157565 = r157561 + r157564;
double r157566 = asin(r157565);
double r157567 = sin(r157566);
double r157568 = r157560 * r157567;
double r157569 = r157568 * r157568;
double r157570 = r157559 - r157569;
double r157571 = r157558 + r157568;
double r157572 = r157570 / r157571;
double r157573 = 3.0;
double r157574 = pow(r157572, r157573);
double r157575 = cbrt(r157574);
double r157576 = atan2(r157557, r157575);
double r157577 = r157549 + r157576;
return r157577;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.1
rmApplied flip--0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-undiv0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020047
(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))))))))))