\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 \left(\frac{\pi}{2}\right) \cdot \sin \left(\sqrt[3]{{\left(\sin^{-1} \left(\sin delta \cdot \left(\cos \phi_1 \cdot \cos theta\right) + \sin \phi_1 \cdot \cos delta\right)\right)}^{3}}\right)}\right)}^{\left(\sin \phi_1\right)}\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85101 = lambda1;
double r85102 = theta;
double r85103 = sin(r85102);
double r85104 = delta;
double r85105 = sin(r85104);
double r85106 = r85103 * r85105;
double r85107 = phi1;
double r85108 = cos(r85107);
double r85109 = r85106 * r85108;
double r85110 = cos(r85104);
double r85111 = sin(r85107);
double r85112 = r85111 * r85110;
double r85113 = r85108 * r85105;
double r85114 = cos(r85102);
double r85115 = r85113 * r85114;
double r85116 = r85112 + r85115;
double r85117 = asin(r85116);
double r85118 = sin(r85117);
double r85119 = r85111 * r85118;
double r85120 = r85110 - r85119;
double r85121 = atan2(r85109, r85120);
double r85122 = r85101 + r85121;
return r85122;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r85123 = lambda1;
double r85124 = theta;
double r85125 = sin(r85124);
double r85126 = delta;
double r85127 = sin(r85126);
double r85128 = r85125 * r85127;
double r85129 = phi1;
double r85130 = cos(r85129);
double r85131 = r85128 * r85130;
double r85132 = cos(r85126);
double r85133 = atan2(1.0, 0.0);
double r85134 = 2.0;
double r85135 = r85133 / r85134;
double r85136 = sin(r85135);
double r85137 = cos(r85124);
double r85138 = r85130 * r85137;
double r85139 = r85127 * r85138;
double r85140 = sin(r85129);
double r85141 = r85140 * r85132;
double r85142 = r85139 + r85141;
double r85143 = asin(r85142);
double r85144 = 3.0;
double r85145 = pow(r85143, r85144);
double r85146 = cbrt(r85145);
double r85147 = sin(r85146);
double r85148 = r85136 * r85147;
double r85149 = exp(r85148);
double r85150 = pow(r85149, r85140);
double r85151 = log(r85150);
double r85152 = r85132 - r85151;
double r85153 = atan2(r85131, r85152);
double r85154 = r85123 + r85153;
return r85154;
}



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 asin-acos0.2
rmApplied add-log-exp0.2
Simplified0.2
rmApplied acos-asin0.2
Applied cos-diff0.2
Applied exp-sum0.2
Applied unpow-prod-down0.2
Applied log-prod0.2
Applied associate--r+0.2
Simplified0.2
rmApplied add-cbrt-cube0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020001
(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))))))))))