\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{\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)}{2}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r79321 = lambda1;
double r79322 = theta;
double r79323 = sin(r79322);
double r79324 = delta;
double r79325 = sin(r79324);
double r79326 = r79323 * r79325;
double r79327 = phi1;
double r79328 = cos(r79327);
double r79329 = r79326 * r79328;
double r79330 = cos(r79324);
double r79331 = sin(r79327);
double r79332 = r79331 * r79330;
double r79333 = r79328 * r79325;
double r79334 = cos(r79322);
double r79335 = r79333 * r79334;
double r79336 = r79332 + r79335;
double r79337 = asin(r79336);
double r79338 = sin(r79337);
double r79339 = r79331 * r79338;
double r79340 = r79330 - r79339;
double r79341 = atan2(r79329, r79340);
double r79342 = r79321 + r79341;
return r79342;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r79343 = theta;
double r79344 = sin(r79343);
double r79345 = delta;
double r79346 = sin(r79345);
double r79347 = r79344 * r79346;
double r79348 = phi1;
double r79349 = cos(r79348);
double r79350 = r79347 * r79349;
double r79351 = cos(r79345);
double r79352 = exp(r79351);
double r79353 = sqrt(r79352);
double r79354 = log(r79353);
double r79355 = sin(r79348);
double r79356 = r79355 * r79351;
double r79357 = r79349 * r79346;
double r79358 = cos(r79343);
double r79359 = r79357 * r79358;
double r79360 = r79356 + r79359;
double r79361 = asin(r79360);
double r79362 = sin(r79361);
double r79363 = r79355 * r79362;
double r79364 = exp(r79363);
double r79365 = sqrt(r79364);
double r79366 = log(r79365);
double r79367 = r79354 - r79366;
double r79368 = r79351 - r79363;
double r79369 = 2.0;
double r79370 = r79368 / r79369;
double r79371 = r79367 + r79370;
double r79372 = atan2(r79350, r79371);
double r79373 = lambda1;
double r79374 = r79372 + r79373;
return r79374;
}



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 *-un-lft-identity0.2
Applied exp-prod0.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))))))))))