\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)}\tan^{-1}_* \frac{\left(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\left(\log \left(\sqrt{e^{\cos delta}}\right) - \log \left(\sqrt{e^{\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) + \frac{1}{2} \cdot \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)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91343 = lambda1;
double r91344 = theta;
double r91345 = sin(r91344);
double r91346 = delta;
double r91347 = sin(r91346);
double r91348 = r91345 * r91347;
double r91349 = phi1;
double r91350 = cos(r91349);
double r91351 = r91348 * r91350;
double r91352 = cos(r91346);
double r91353 = sin(r91349);
double r91354 = r91353 * r91352;
double r91355 = r91350 * r91347;
double r91356 = cos(r91344);
double r91357 = r91355 * r91356;
double r91358 = r91354 + r91357;
double r91359 = asin(r91358);
double r91360 = sin(r91359);
double r91361 = r91353 * r91360;
double r91362 = r91352 - r91361;
double r91363 = atan2(r91351, r91362);
double r91364 = r91343 + r91363;
return r91364;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91365 = theta;
double r91366 = sin(r91365);
double r91367 = delta;
double r91368 = sin(r91367);
double r91369 = r91366 * r91368;
double r91370 = phi1;
double r91371 = cos(r91370);
double r91372 = r91369 * r91371;
double r91373 = cos(r91367);
double r91374 = exp(r91373);
double r91375 = sqrt(r91374);
double r91376 = log(r91375);
double r91377 = sin(r91370);
double r91378 = r91377 * r91373;
double r91379 = r91371 * r91368;
double r91380 = cos(r91365);
double r91381 = r91379 * r91380;
double r91382 = r91378 + r91381;
double r91383 = asin(r91382);
double r91384 = sin(r91383);
double r91385 = r91377 * r91384;
double r91386 = exp(r91385);
double r91387 = sqrt(r91386);
double r91388 = log(r91387);
double r91389 = r91376 - r91388;
double r91390 = 0.5;
double r91391 = r91373 - r91385;
double r91392 = r91390 * r91391;
double r91393 = r91389 + r91392;
double r91394 = atan2(r91372, r91393);
double r91395 = lambda1;
double r91396 = r91394 + r91395;
return r91396;
}



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 add-log-exp0.2
Applied add-log-exp0.2
Applied diff-log0.2
Simplified0.2
rmApplied add-sqr-sqrt0.3
Applied log-prod0.2
rmApplied pow10.2
Applied sqrt-pow10.2
Applied log-pow0.2
Simplified0.2
rmApplied exp-diff0.2
Applied sqrt-div0.2
Applied log-div0.2
Final simplification0.2
herbie shell --seed 2019323
(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))))))))))