\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{\left(\cos \phi_1 \cdot \sin delta\right) \cdot \sin theta}{\cos delta - \mathsf{fma}\left(\sin delta, \cos theta \cdot \cos \phi_1, \cos delta \cdot \sin \phi_1\right) \cdot \sin \phi_1} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3629162 = lambda1;
double r3629163 = theta;
double r3629164 = sin(r3629163);
double r3629165 = delta;
double r3629166 = sin(r3629165);
double r3629167 = r3629164 * r3629166;
double r3629168 = phi1;
double r3629169 = cos(r3629168);
double r3629170 = r3629167 * r3629169;
double r3629171 = cos(r3629165);
double r3629172 = sin(r3629168);
double r3629173 = r3629172 * r3629171;
double r3629174 = r3629169 * r3629166;
double r3629175 = cos(r3629163);
double r3629176 = r3629174 * r3629175;
double r3629177 = r3629173 + r3629176;
double r3629178 = asin(r3629177);
double r3629179 = sin(r3629178);
double r3629180 = r3629172 * r3629179;
double r3629181 = r3629171 - r3629180;
double r3629182 = atan2(r3629170, r3629181);
double r3629183 = r3629162 + r3629182;
return r3629183;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3629184 = phi1;
double r3629185 = cos(r3629184);
double r3629186 = delta;
double r3629187 = sin(r3629186);
double r3629188 = r3629185 * r3629187;
double r3629189 = theta;
double r3629190 = sin(r3629189);
double r3629191 = r3629188 * r3629190;
double r3629192 = cos(r3629186);
double r3629193 = cos(r3629189);
double r3629194 = r3629193 * r3629185;
double r3629195 = sin(r3629184);
double r3629196 = r3629192 * r3629195;
double r3629197 = fma(r3629187, r3629194, r3629196);
double r3629198 = r3629197 * r3629195;
double r3629199 = r3629192 - r3629198;
double r3629200 = atan2(r3629191, r3629199);
double r3629201 = lambda1;
double r3629202 = r3629200 + r3629201;
return r3629202;
}



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.2
Taylor expanded around inf 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019200 +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))))))))))