\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\sqrt[3]{\left(\left(\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) \cdot \left(\cos delta - \left(\left(\cos delta \cdot \sin \phi_1\right) \cdot \sin \phi_1 + \left(\cos \phi_1 \cdot \cos theta\right) \cdot \left(\sin delta \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3250360 = lambda1;
double r3250361 = theta;
double r3250362 = sin(r3250361);
double r3250363 = delta;
double r3250364 = sin(r3250363);
double r3250365 = r3250362 * r3250364;
double r3250366 = phi1;
double r3250367 = cos(r3250366);
double r3250368 = r3250365 * r3250367;
double r3250369 = cos(r3250363);
double r3250370 = sin(r3250366);
double r3250371 = r3250370 * r3250369;
double r3250372 = r3250367 * r3250364;
double r3250373 = cos(r3250361);
double r3250374 = r3250372 * r3250373;
double r3250375 = r3250371 + r3250374;
double r3250376 = asin(r3250375);
double r3250377 = sin(r3250376);
double r3250378 = r3250370 * r3250377;
double r3250379 = r3250369 - r3250378;
double r3250380 = atan2(r3250368, r3250379);
double r3250381 = r3250360 + r3250380;
return r3250381;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3250382 = lambda1;
double r3250383 = phi1;
double r3250384 = cos(r3250383);
double r3250385 = delta;
double r3250386 = sin(r3250385);
double r3250387 = theta;
double r3250388 = sin(r3250387);
double r3250389 = r3250386 * r3250388;
double r3250390 = r3250384 * r3250389;
double r3250391 = cos(r3250385);
double r3250392 = sin(r3250383);
double r3250393 = r3250391 * r3250392;
double r3250394 = cos(r3250387);
double r3250395 = r3250384 * r3250386;
double r3250396 = r3250394 * r3250395;
double r3250397 = r3250393 + r3250396;
double r3250398 = asin(r3250397);
double r3250399 = sin(r3250398);
double r3250400 = r3250392 * r3250399;
double r3250401 = r3250391 - r3250400;
double r3250402 = r3250393 * r3250392;
double r3250403 = r3250384 * r3250394;
double r3250404 = r3250386 * r3250392;
double r3250405 = r3250403 * r3250404;
double r3250406 = r3250402 + r3250405;
double r3250407 = r3250391 - r3250406;
double r3250408 = r3250401 * r3250407;
double r3250409 = r3250408 * r3250401;
double r3250410 = cbrt(r3250409);
double r3250411 = atan2(r3250390, r3250410);
double r3250412 = r3250382 + r3250411;
return r3250412;
}



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-cbrt-cube0.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019170
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))