\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 - \log \left({\left(e^{\sin \phi_1}\right)}^{\left(\cos \left(-\cos^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)\right)\right)}\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r124101 = lambda1;
double r124102 = theta;
double r124103 = sin(r124102);
double r124104 = delta;
double r124105 = sin(r124104);
double r124106 = r124103 * r124105;
double r124107 = phi1;
double r124108 = cos(r124107);
double r124109 = r124106 * r124108;
double r124110 = cos(r124104);
double r124111 = sin(r124107);
double r124112 = r124111 * r124110;
double r124113 = r124108 * r124105;
double r124114 = cos(r124102);
double r124115 = r124113 * r124114;
double r124116 = r124112 + r124115;
double r124117 = asin(r124116);
double r124118 = sin(r124117);
double r124119 = r124111 * r124118;
double r124120 = r124110 - r124119;
double r124121 = atan2(r124109, r124120);
double r124122 = r124101 + r124121;
return r124122;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r124123 = lambda1;
double r124124 = theta;
double r124125 = sin(r124124);
double r124126 = delta;
double r124127 = sin(r124126);
double r124128 = r124125 * r124127;
double r124129 = phi1;
double r124130 = cos(r124129);
double r124131 = r124128 * r124130;
double r124132 = cos(r124126);
double r124133 = sin(r124129);
double r124134 = exp(r124133);
double r124135 = r124133 * r124132;
double r124136 = r124130 * r124127;
double r124137 = cos(r124124);
double r124138 = r124136 * r124137;
double r124139 = r124135 + r124138;
double r124140 = acos(r124139);
double r124141 = -r124140;
double r124142 = cos(r124141);
double r124143 = pow(r124134, r124142);
double r124144 = log(r124143);
double r124145 = r124132 - r124144;
double r124146 = atan2(r124131, r124145);
double r124147 = r124123 + r124146;
return r124147;
}



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 asin-acos0.2
rmApplied add-log-exp0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020021 +o rules:numerics
(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))))))))))