\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(\sin theta \cdot \sin delta\right) \cdot \cos \phi_1}{\frac{{\left(\cos delta\right)}^{3} + \left(-{\left(\sin \phi_1\right)}^{3} \cdot {\left(\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)}^{3}\right)}{\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\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)}^{3}} \cdot \left(\sqrt[3]{{\left(\sin \phi_1\right)}^{3} \cdot {\left(\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)}^{3}} + \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r130202 = lambda1;
double r130203 = theta;
double r130204 = sin(r130203);
double r130205 = delta;
double r130206 = sin(r130205);
double r130207 = r130204 * r130206;
double r130208 = phi1;
double r130209 = cos(r130208);
double r130210 = r130207 * r130209;
double r130211 = cos(r130205);
double r130212 = sin(r130208);
double r130213 = r130212 * r130211;
double r130214 = r130209 * r130206;
double r130215 = cos(r130203);
double r130216 = r130214 * r130215;
double r130217 = r130213 + r130216;
double r130218 = asin(r130217);
double r130219 = sin(r130218);
double r130220 = r130212 * r130219;
double r130221 = r130211 - r130220;
double r130222 = atan2(r130210, r130221);
double r130223 = r130202 + r130222;
return r130223;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r130224 = lambda1;
double r130225 = theta;
double r130226 = sin(r130225);
double r130227 = delta;
double r130228 = sin(r130227);
double r130229 = r130226 * r130228;
double r130230 = phi1;
double r130231 = cos(r130230);
double r130232 = r130229 * r130231;
double r130233 = cos(r130227);
double r130234 = 3.0;
double r130235 = pow(r130233, r130234);
double r130236 = sin(r130230);
double r130237 = pow(r130236, r130234);
double r130238 = r130236 * r130233;
double r130239 = r130231 * r130228;
double r130240 = cos(r130225);
double r130241 = r130239 * r130240;
double r130242 = r130238 + r130241;
double r130243 = asin(r130242);
double r130244 = sin(r130243);
double r130245 = pow(r130244, r130234);
double r130246 = r130237 * r130245;
double r130247 = -r130246;
double r130248 = r130235 + r130247;
double r130249 = cbrt(r130246);
double r130250 = r130249 + r130233;
double r130251 = r130249 * r130250;
double r130252 = r130233 * r130233;
double r130253 = r130251 + r130252;
double r130254 = r130248 / r130253;
double r130255 = atan2(r130232, r130254);
double r130256 = r130224 + r130255;
return r130256;
}



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
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Simplified0.2
rmApplied unpow-prod-down0.2
rmApplied flip3--0.2
Simplified0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019322
(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))))))))))