\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{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\mathsf{log1p}\left(\sqrt[3]{{\left(\mathsf{expm1}\left(\cos delta - \sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\mathsf{fma}\left(\cos \phi_1 \cdot \cos theta, \sin delta, \cos delta \cdot \sin \phi_1\right)\right)\right)\right)\right)}^{3}}\right)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r2776074 = lambda1;
double r2776075 = theta;
double r2776076 = sin(r2776075);
double r2776077 = delta;
double r2776078 = sin(r2776077);
double r2776079 = r2776076 * r2776078;
double r2776080 = phi1;
double r2776081 = cos(r2776080);
double r2776082 = r2776079 * r2776081;
double r2776083 = cos(r2776077);
double r2776084 = sin(r2776080);
double r2776085 = r2776084 * r2776083;
double r2776086 = r2776081 * r2776078;
double r2776087 = cos(r2776075);
double r2776088 = r2776086 * r2776087;
double r2776089 = r2776085 + r2776088;
double r2776090 = asin(r2776089);
double r2776091 = sin(r2776090);
double r2776092 = r2776084 * r2776091;
double r2776093 = r2776083 - r2776092;
double r2776094 = atan2(r2776082, r2776093);
double r2776095 = r2776074 + r2776094;
return r2776095;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r2776096 = phi1;
double r2776097 = cos(r2776096);
double r2776098 = delta;
double r2776099 = sin(r2776098);
double r2776100 = theta;
double r2776101 = sin(r2776100);
double r2776102 = r2776099 * r2776101;
double r2776103 = r2776097 * r2776102;
double r2776104 = cos(r2776098);
double r2776105 = sin(r2776096);
double r2776106 = cos(r2776100);
double r2776107 = r2776097 * r2776106;
double r2776108 = r2776104 * r2776105;
double r2776109 = fma(r2776107, r2776099, r2776108);
double r2776110 = asin(r2776109);
double r2776111 = sin(r2776110);
double r2776112 = r2776105 * r2776111;
double r2776113 = r2776104 - r2776112;
double r2776114 = expm1(r2776113);
double r2776115 = 3.0;
double r2776116 = pow(r2776114, r2776115);
double r2776117 = cbrt(r2776116);
double r2776118 = log1p(r2776117);
double r2776119 = atan2(r2776103, r2776118);
double r2776120 = lambda1;
double r2776121 = r2776119 + r2776120;
return r2776121;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.2
rmApplied log1p-expm1-u0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
rmApplied pow30.2
Final simplification0.2
herbie shell --seed 2019149 +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))))))))))