\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)}{\cos delta \cdot e^{\log \left(\cos \phi_1 \cdot \cos \phi_1\right)} - \left(\left(\sin \phi_1 \cdot \sin delta\right) \cdot \cos theta\right) \cdot \cos \phi_1} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3241138 = lambda1;
double r3241139 = theta;
double r3241140 = sin(r3241139);
double r3241141 = delta;
double r3241142 = sin(r3241141);
double r3241143 = r3241140 * r3241142;
double r3241144 = phi1;
double r3241145 = cos(r3241144);
double r3241146 = r3241143 * r3241145;
double r3241147 = cos(r3241141);
double r3241148 = sin(r3241144);
double r3241149 = r3241148 * r3241147;
double r3241150 = r3241145 * r3241142;
double r3241151 = cos(r3241139);
double r3241152 = r3241150 * r3241151;
double r3241153 = r3241149 + r3241152;
double r3241154 = asin(r3241153);
double r3241155 = sin(r3241154);
double r3241156 = r3241148 * r3241155;
double r3241157 = r3241147 - r3241156;
double r3241158 = atan2(r3241146, r3241157);
double r3241159 = r3241138 + r3241158;
return r3241159;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3241160 = phi1;
double r3241161 = cos(r3241160);
double r3241162 = delta;
double r3241163 = sin(r3241162);
double r3241164 = theta;
double r3241165 = sin(r3241164);
double r3241166 = r3241163 * r3241165;
double r3241167 = r3241161 * r3241166;
double r3241168 = cos(r3241162);
double r3241169 = r3241161 * r3241161;
double r3241170 = log(r3241169);
double r3241171 = exp(r3241170);
double r3241172 = r3241168 * r3241171;
double r3241173 = sin(r3241160);
double r3241174 = r3241173 * r3241163;
double r3241175 = cos(r3241164);
double r3241176 = r3241174 * r3241175;
double r3241177 = r3241176 * r3241161;
double r3241178 = r3241172 - r3241177;
double r3241179 = atan2(r3241167, r3241178);
double r3241180 = lambda1;
double r3241181 = r3241179 + r3241180;
return r3241181;
}



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-log-exp0.2
Taylor expanded around inf 0.2
Simplified0.1
rmApplied add-exp-log0.1
Final simplification0.1
herbie shell --seed 2019165
(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))))))))))