\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{\frac{{\left({\left(\cos delta\right)}^{2}\right)}^{3} - {\left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left({\left(\sin \phi_1\right)}^{\left(\sqrt{4}\right)}\right)}^{\left(\sqrt{4}\right)} \cdot {\left(\cos delta\right)}^{2}\right)\right)}^{3}}{\left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left({\left(\sin \phi_1\right)}^{\left(\sqrt{4}\right)}\right)}^{\left(\sqrt{4}\right)} \cdot {\left(\cos delta\right)}^{2}\right)\right) \cdot \left(\left({\left(\sin delta\right)}^{2} \cdot \left({\left(\cos \phi_1\right)}^{2} \cdot \left({\left(\cos theta\right)}^{2} \cdot {\left(\sin \phi_1\right)}^{2}\right)\right) + \left(2 \cdot \left(\sin delta \cdot \left(\cos \phi_1 \cdot \left({\left(\sin \phi_1\right)}^{3} \cdot \left(\cos delta \cdot \cos theta\right)\right)\right)\right) + {\left({\left(\sin \phi_1\right)}^{\left(\sqrt{4}\right)}\right)}^{\left(\sqrt{4}\right)} \cdot {\left(\cos delta\right)}^{2}\right)\right) + {\left(\cos delta\right)}^{2}\right) + {\left(\cos delta\right)}^{4}}}{\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 r85260 = lambda1;
double r85261 = theta;
double r85262 = sin(r85261);
double r85263 = delta;
double r85264 = sin(r85263);
double r85265 = r85262 * r85264;
double r85266 = phi1;
double r85267 = cos(r85266);
double r85268 = r85265 * r85267;
double r85269 = cos(r85263);
double r85270 = sin(r85266);
double r85271 = r85270 * r85269;
double r85272 = r85267 * r85264;
double r85273 = cos(r85261);
double r85274 = r85272 * r85273;
double r85275 = r85271 + r85274;
double r85276 = asin(r85275);
double r85277 = sin(r85276);
double r85278 = r85270 * r85277;
double r85279 = r85269 - r85278;
double r85280 = atan2(r85268, r85279);
double r85281 = r85260 + r85280;
return r85281;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85282 = lambda1;
double r85283 = theta;
double r85284 = sin(r85283);
double r85285 = delta;
double r85286 = sin(r85285);
double r85287 = r85284 * r85286;
double r85288 = phi1;
double r85289 = cos(r85288);
double r85290 = r85287 * r85289;
double r85291 = cos(r85285);
double r85292 = 2.0;
double r85293 = pow(r85291, r85292);
double r85294 = 3.0;
double r85295 = pow(r85293, r85294);
double r85296 = pow(r85286, r85292);
double r85297 = pow(r85289, r85292);
double r85298 = cos(r85283);
double r85299 = pow(r85298, r85292);
double r85300 = sin(r85288);
double r85301 = pow(r85300, r85292);
double r85302 = r85299 * r85301;
double r85303 = r85297 * r85302;
double r85304 = r85296 * r85303;
double r85305 = pow(r85300, r85294);
double r85306 = r85291 * r85298;
double r85307 = r85305 * r85306;
double r85308 = r85289 * r85307;
double r85309 = r85286 * r85308;
double r85310 = r85292 * r85309;
double r85311 = 4.0;
double r85312 = sqrt(r85311);
double r85313 = pow(r85300, r85312);
double r85314 = pow(r85313, r85312);
double r85315 = r85314 * r85293;
double r85316 = r85310 + r85315;
double r85317 = r85304 + r85316;
double r85318 = pow(r85317, r85294);
double r85319 = r85295 - r85318;
double r85320 = r85317 + r85293;
double r85321 = r85317 * r85320;
double r85322 = pow(r85291, r85311);
double r85323 = r85321 + r85322;
double r85324 = r85319 / r85323;
double r85325 = r85300 * r85291;
double r85326 = r85289 * r85286;
double r85327 = r85326 * r85298;
double r85328 = r85325 + r85327;
double r85329 = asin(r85328);
double r85330 = sin(r85329);
double r85331 = r85300 * r85330;
double r85332 = r85291 + r85331;
double r85333 = r85324 / r85332;
double r85334 = atan2(r85290, r85333);
double r85335 = r85282 + r85334;
return r85335;
}



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
Taylor expanded around inf 0.2
rmApplied add-sqr-sqrt0.2
Applied pow-unpow0.2
rmApplied flip3--0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019303
(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))))))))))