\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(\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)\right)}^{3}}{\left(\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)\right) \cdot \left(\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) + \cos delta\right) + \cos delta \cdot \cos delta}}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r107200 = lambda1;
double r107201 = theta;
double r107202 = sin(r107201);
double r107203 = delta;
double r107204 = sin(r107203);
double r107205 = r107202 * r107204;
double r107206 = phi1;
double r107207 = cos(r107206);
double r107208 = r107205 * r107207;
double r107209 = cos(r107203);
double r107210 = sin(r107206);
double r107211 = r107210 * r107209;
double r107212 = r107207 * r107204;
double r107213 = cos(r107201);
double r107214 = r107212 * r107213;
double r107215 = r107211 + r107214;
double r107216 = asin(r107215);
double r107217 = sin(r107216);
double r107218 = r107210 * r107217;
double r107219 = r107209 - r107218;
double r107220 = atan2(r107208, r107219);
double r107221 = r107200 + r107220;
return r107221;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r107222 = lambda1;
double r107223 = theta;
double r107224 = sin(r107223);
double r107225 = delta;
double r107226 = sin(r107225);
double r107227 = r107224 * r107226;
double r107228 = phi1;
double r107229 = cos(r107228);
double r107230 = r107227 * r107229;
double r107231 = cos(r107225);
double r107232 = 3.0;
double r107233 = pow(r107231, r107232);
double r107234 = sin(r107228);
double r107235 = r107234 * r107231;
double r107236 = r107229 * r107226;
double r107237 = cos(r107223);
double r107238 = r107236 * r107237;
double r107239 = r107235 + r107238;
double r107240 = asin(r107239);
double r107241 = sin(r107240);
double r107242 = r107234 * r107241;
double r107243 = pow(r107242, r107232);
double r107244 = r107233 - r107243;
double r107245 = r107242 + r107231;
double r107246 = r107242 * r107245;
double r107247 = r107231 * r107231;
double r107248 = r107246 + r107247;
double r107249 = r107244 / r107248;
double r107250 = atan2(r107230, r107249);
double r107251 = r107222 + r107250;
return r107251;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Results
Initial program 0.1
rmApplied flip3--0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020036
(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))))))))))