\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(\cos \phi_1 \cdot \sin theta\right) \cdot \sin delta}{\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos theta, \cos \phi_1 \cdot \sin delta, \sin \phi_1 \cdot \cos delta\right)\right)\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3443447 = lambda1;
double r3443448 = theta;
double r3443449 = sin(r3443448);
double r3443450 = delta;
double r3443451 = sin(r3443450);
double r3443452 = r3443449 * r3443451;
double r3443453 = phi1;
double r3443454 = cos(r3443453);
double r3443455 = r3443452 * r3443454;
double r3443456 = cos(r3443450);
double r3443457 = sin(r3443453);
double r3443458 = r3443457 * r3443456;
double r3443459 = r3443454 * r3443451;
double r3443460 = cos(r3443448);
double r3443461 = r3443459 * r3443460;
double r3443462 = r3443458 + r3443461;
double r3443463 = asin(r3443462);
double r3443464 = sin(r3443463);
double r3443465 = r3443457 * r3443464;
double r3443466 = r3443456 - r3443465;
double r3443467 = atan2(r3443455, r3443466);
double r3443468 = r3443447 + r3443467;
return r3443468;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3443469 = lambda1;
double r3443470 = phi1;
double r3443471 = cos(r3443470);
double r3443472 = theta;
double r3443473 = sin(r3443472);
double r3443474 = r3443471 * r3443473;
double r3443475 = delta;
double r3443476 = sin(r3443475);
double r3443477 = r3443474 * r3443476;
double r3443478 = cos(r3443475);
double r3443479 = sin(r3443470);
double r3443480 = cos(r3443472);
double r3443481 = r3443471 * r3443476;
double r3443482 = r3443479 * r3443478;
double r3443483 = fma(r3443480, r3443481, r3443482);
double r3443484 = asin(r3443483);
double r3443485 = sin(r3443484);
double r3443486 = r3443479 * r3443485;
double r3443487 = r3443478 - r3443486;
double r3443488 = atan2(r3443477, r3443487);
double r3443489 = r3443469 + r3443488;
return r3443489;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019168 +o rules:numerics
(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))))))))))