\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)}^{2} - \left(\left(\sqrt[3]{\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)} \cdot \sqrt[3]{\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) \cdot \sqrt[3]{\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) \cdot {\left(\sin \phi_1\right)}^{2}}{{\left(\cos delta\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)}^{3}} \cdot \left(\cos delta \cdot \cos delta + \left(\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 \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)\right)\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r68248 = lambda1;
double r68249 = theta;
double r68250 = sin(r68249);
double r68251 = delta;
double r68252 = sin(r68251);
double r68253 = r68250 * r68252;
double r68254 = phi1;
double r68255 = cos(r68254);
double r68256 = r68253 * r68255;
double r68257 = cos(r68251);
double r68258 = sin(r68254);
double r68259 = r68258 * r68257;
double r68260 = r68255 * r68252;
double r68261 = cos(r68249);
double r68262 = r68260 * r68261;
double r68263 = r68259 + r68262;
double r68264 = asin(r68263);
double r68265 = sin(r68264);
double r68266 = r68258 * r68265;
double r68267 = r68257 - r68266;
double r68268 = atan2(r68256, r68267);
double r68269 = r68248 + r68268;
return r68269;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r68270 = lambda1;
double r68271 = theta;
double r68272 = sin(r68271);
double r68273 = delta;
double r68274 = sin(r68273);
double r68275 = r68272 * r68274;
double r68276 = phi1;
double r68277 = cos(r68276);
double r68278 = r68275 * r68277;
double r68279 = cos(r68273);
double r68280 = 2.0;
double r68281 = pow(r68279, r68280);
double r68282 = sin(r68276);
double r68283 = r68282 * r68279;
double r68284 = r68277 * r68274;
double r68285 = cos(r68271);
double r68286 = r68284 * r68285;
double r68287 = r68283 + r68286;
double r68288 = asin(r68287);
double r68289 = sin(r68288);
double r68290 = r68289 * r68289;
double r68291 = cbrt(r68290);
double r68292 = r68291 * r68291;
double r68293 = r68292 * r68291;
double r68294 = pow(r68282, r68280);
double r68295 = r68293 * r68294;
double r68296 = r68281 - r68295;
double r68297 = 3.0;
double r68298 = pow(r68279, r68297);
double r68299 = r68282 * r68289;
double r68300 = pow(r68299, r68297);
double r68301 = r68298 + r68300;
double r68302 = r68296 / r68301;
double r68303 = r68279 * r68279;
double r68304 = r68299 * r68299;
double r68305 = r68279 * r68299;
double r68306 = r68304 - r68305;
double r68307 = r68303 + r68306;
double r68308 = r68302 * r68307;
double r68309 = atan2(r68278, r68308);
double r68310 = r68270 + r68309;
return r68310;
}



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 flip--0.2
Simplified0.2
rmApplied flip3-+0.2
Applied associate-/r/0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019235
(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))))))))))