\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 - \sin \phi_1 \cdot \sin \left(\left(\sqrt[3]{\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)} \cdot \sqrt[3]{\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)}\right) \cdot \sqrt[3]{\sin^{-1} \left(\sin \phi_1 \cdot \cos delta + \left(\cos \phi_1 \cdot \sin delta\right) \cdot \cos theta\right)}\right)}double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91036 = lambda1;
double r91037 = theta;
double r91038 = sin(r91037);
double r91039 = delta;
double r91040 = sin(r91039);
double r91041 = r91038 * r91040;
double r91042 = phi1;
double r91043 = cos(r91042);
double r91044 = r91041 * r91043;
double r91045 = cos(r91039);
double r91046 = sin(r91042);
double r91047 = r91046 * r91045;
double r91048 = r91043 * r91040;
double r91049 = cos(r91037);
double r91050 = r91048 * r91049;
double r91051 = r91047 + r91050;
double r91052 = asin(r91051);
double r91053 = sin(r91052);
double r91054 = r91046 * r91053;
double r91055 = r91045 - r91054;
double r91056 = atan2(r91044, r91055);
double r91057 = r91036 + r91056;
return r91057;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r91058 = lambda1;
double r91059 = theta;
double r91060 = sin(r91059);
double r91061 = delta;
double r91062 = sin(r91061);
double r91063 = r91060 * r91062;
double r91064 = phi1;
double r91065 = cos(r91064);
double r91066 = r91063 * r91065;
double r91067 = cos(r91061);
double r91068 = sin(r91064);
double r91069 = r91068 * r91067;
double r91070 = r91065 * r91062;
double r91071 = cos(r91059);
double r91072 = r91070 * r91071;
double r91073 = r91069 + r91072;
double r91074 = asin(r91073);
double r91075 = cbrt(r91074);
double r91076 = r91075 * r91075;
double r91077 = r91076 * r91075;
double r91078 = sin(r91077);
double r91079 = r91068 * r91078;
double r91080 = r91067 - r91079;
double r91081 = atan2(r91066, r91080);
double r91082 = r91058 + r91081;
return r91082;
}



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-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2020059
(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))))))))))