\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 + \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 \sqrt[3]{{\left(\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}}}{\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 r107246 = lambda1;
double r107247 = theta;
double r107248 = sin(r107247);
double r107249 = delta;
double r107250 = sin(r107249);
double r107251 = r107248 * r107250;
double r107252 = phi1;
double r107253 = cos(r107252);
double r107254 = r107251 * r107253;
double r107255 = cos(r107249);
double r107256 = sin(r107252);
double r107257 = r107256 * r107255;
double r107258 = r107253 * r107250;
double r107259 = cos(r107247);
double r107260 = r107258 * r107259;
double r107261 = r107257 + r107260;
double r107262 = asin(r107261);
double r107263 = sin(r107262);
double r107264 = r107256 * r107263;
double r107265 = r107255 - r107264;
double r107266 = atan2(r107254, r107265);
double r107267 = r107246 + r107266;
return r107267;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r107268 = lambda1;
double r107269 = theta;
double r107270 = sin(r107269);
double r107271 = delta;
double r107272 = sin(r107271);
double r107273 = r107270 * r107272;
double r107274 = phi1;
double r107275 = cos(r107274);
double r107276 = r107273 * r107275;
double r107277 = cos(r107271);
double r107278 = sin(r107274);
double r107279 = r107278 * r107277;
double r107280 = r107275 * r107272;
double r107281 = cos(r107269);
double r107282 = r107280 * r107281;
double r107283 = r107279 + r107282;
double r107284 = asin(r107283);
double r107285 = sin(r107284);
double r107286 = r107278 * r107285;
double r107287 = r107277 + r107286;
double r107288 = r107277 - r107286;
double r107289 = 3.0;
double r107290 = pow(r107288, r107289);
double r107291 = cbrt(r107290);
double r107292 = r107287 * r107291;
double r107293 = r107292 / r107287;
double r107294 = atan2(r107276, r107293);
double r107295 = r107268 + r107294;
return r107295;
}



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
rmApplied difference-of-squares0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020062
(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))))))))))