\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{expm1}\left(\log \left(\cos delta - \mathsf{fma}\left(\sin \phi_1, \mathsf{fma}\left(\sin delta, \cos theta \cdot \cos \phi_1, \cos delta \cdot \sin \phi_1\right), -1\right)\right)\right)} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3153147 = lambda1;
double r3153148 = theta;
double r3153149 = sin(r3153148);
double r3153150 = delta;
double r3153151 = sin(r3153150);
double r3153152 = r3153149 * r3153151;
double r3153153 = phi1;
double r3153154 = cos(r3153153);
double r3153155 = r3153152 * r3153154;
double r3153156 = cos(r3153150);
double r3153157 = sin(r3153153);
double r3153158 = r3153157 * r3153156;
double r3153159 = r3153154 * r3153151;
double r3153160 = cos(r3153148);
double r3153161 = r3153159 * r3153160;
double r3153162 = r3153158 + r3153161;
double r3153163 = asin(r3153162);
double r3153164 = sin(r3153163);
double r3153165 = r3153157 * r3153164;
double r3153166 = r3153156 - r3153165;
double r3153167 = atan2(r3153155, r3153166);
double r3153168 = r3153147 + r3153167;
return r3153168;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3153169 = phi1;
double r3153170 = cos(r3153169);
double r3153171 = delta;
double r3153172 = sin(r3153171);
double r3153173 = theta;
double r3153174 = sin(r3153173);
double r3153175 = r3153172 * r3153174;
double r3153176 = r3153170 * r3153175;
double r3153177 = cos(r3153171);
double r3153178 = sin(r3153169);
double r3153179 = cos(r3153173);
double r3153180 = r3153179 * r3153170;
double r3153181 = r3153177 * r3153178;
double r3153182 = fma(r3153172, r3153180, r3153181);
double r3153183 = -1.0;
double r3153184 = fma(r3153178, r3153182, r3153183);
double r3153185 = r3153177 - r3153184;
double r3153186 = log(r3153185);
double r3153187 = expm1(r3153186);
double r3153188 = atan2(r3153176, r3153187);
double r3153189 = lambda1;
double r3153190 = r3153188 + r3153189;
return r3153190;
}



Bits error versus lambda1



Bits error versus phi1



Bits error versus phi2



Bits error versus delta



Bits error versus theta
Initial program 0.1
Taylor expanded around inf 0.1
Simplified0.1
rmApplied expm1-log1p-u0.2
rmApplied log1p-udef0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019162 +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))))))))))