\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}{\cos delta - \sqrt[3]{{\left(\sin \phi_1 \cdot \sin \left(\frac{\pi}{2} - \cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}^{3}}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r47180 = lambda1;
double r47181 = theta;
double r47182 = sin(r47181);
double r47183 = delta;
double r47184 = sin(r47183);
double r47185 = r47182 * r47184;
double r47186 = phi1;
double r47187 = cos(r47186);
double r47188 = r47185 * r47187;
double r47189 = cos(r47183);
double r47190 = sin(r47186);
double r47191 = r47190 * r47189;
double r47192 = r47187 * r47184;
double r47193 = cos(r47181);
double r47194 = r47192 * r47193;
double r47195 = r47191 + r47194;
double r47196 = asin(r47195);
double r47197 = sin(r47196);
double r47198 = r47190 * r47197;
double r47199 = r47189 - r47198;
double r47200 = atan2(r47188, r47199);
double r47201 = r47180 + r47200;
return r47201;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r47202 = lambda1;
double r47203 = theta;
double r47204 = sin(r47203);
double r47205 = delta;
double r47206 = sin(r47205);
double r47207 = r47204 * r47206;
double r47208 = phi1;
double r47209 = cos(r47208);
double r47210 = r47207 * r47209;
double r47211 = cos(r47205);
double r47212 = sin(r47208);
double r47213 = atan2(1.0, 0.0);
double r47214 = 2.0;
double r47215 = r47213 / r47214;
double r47216 = r47212 * r47211;
double r47217 = r47209 * r47206;
double r47218 = cos(r47203);
double r47219 = r47217 * r47218;
double r47220 = r47216 + r47219;
double r47221 = acos(r47220);
double r47222 = r47215 - r47221;
double r47223 = sin(r47222);
double r47224 = r47212 * r47223;
double r47225 = 3.0;
double r47226 = pow(r47224, r47225);
double r47227 = cbrt(r47226);
double r47228 = r47211 - r47227;
double r47229 = atan2(r47210, r47228);
double r47230 = r47202 + r47229;
return r47230;
}



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 asin-acos0.2
Final simplification0.2
herbie shell --seed 2019308
(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))))))))))