\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{\sin delta \cdot \left(\sin theta \cdot \cos \phi_1\right)}{\frac{{\left(\mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}^{3} - {\left({\left(\sin \phi_1\right)}^{2} \cdot \cos delta\right)}^{3}}{\mathsf{fma}\left(\mathsf{fma}\left(\cos delta, {\left(\sin \phi_1\right)}^{2}, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right), {\left(\sin \phi_1\right)}^{2} \cdot \cos delta, \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right) \cdot \mathsf{fma}\left(-\sin \phi_1, \left(\cos theta \cdot \sin delta\right) \cdot \cos \phi_1, \cos delta\right)\right)}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r78045 = lambda1;
double r78046 = theta;
double r78047 = sin(r78046);
double r78048 = delta;
double r78049 = sin(r78048);
double r78050 = r78047 * r78049;
double r78051 = phi1;
double r78052 = cos(r78051);
double r78053 = r78050 * r78052;
double r78054 = cos(r78048);
double r78055 = sin(r78051);
double r78056 = r78055 * r78054;
double r78057 = r78052 * r78049;
double r78058 = cos(r78046);
double r78059 = r78057 * r78058;
double r78060 = r78056 + r78059;
double r78061 = asin(r78060);
double r78062 = sin(r78061);
double r78063 = r78055 * r78062;
double r78064 = r78054 - r78063;
double r78065 = atan2(r78053, r78064);
double r78066 = r78045 + r78065;
return r78066;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r78067 = lambda1;
double r78068 = delta;
double r78069 = sin(r78068);
double r78070 = theta;
double r78071 = sin(r78070);
double r78072 = phi1;
double r78073 = cos(r78072);
double r78074 = r78071 * r78073;
double r78075 = r78069 * r78074;
double r78076 = sin(r78072);
double r78077 = -r78076;
double r78078 = cos(r78070);
double r78079 = r78078 * r78069;
double r78080 = r78079 * r78073;
double r78081 = cos(r78068);
double r78082 = fma(r78077, r78080, r78081);
double r78083 = 3.0;
double r78084 = pow(r78082, r78083);
double r78085 = 2.0;
double r78086 = pow(r78076, r78085);
double r78087 = r78086 * r78081;
double r78088 = pow(r78087, r78083);
double r78089 = r78084 - r78088;
double r78090 = fma(r78081, r78086, r78082);
double r78091 = r78082 * r78082;
double r78092 = fma(r78090, r78087, r78091);
double r78093 = r78089 / r78092;
double r78094 = atan2(r78075, r78093);
double r78095 = r78067 + r78094;
return r78095;
}



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.1
Taylor expanded around inf 0.1
Simplified0.2
rmApplied fma-udef0.2
Applied distribute-lft-in0.2
Applied associate--r+0.2
Simplified0.2
rmApplied associate-*r*0.2
Simplified0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019194 +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))))))))))