\tan^{-1}_* \frac{\sin \left(\lambda_1 - \lambda_2\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)}\tan^{-1}_* \frac{\left(\cos \lambda_2 \cdot \sin \lambda_1 - \cos \lambda_1 \cdot \sin \lambda_2\right) \cdot \cos \phi_2}{\sin \phi_2 \cdot \cos \phi_1 - \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right) + \sqrt[3]{\left(\left(\left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \left(\cos \phi_2 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right)\right) \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \phi_1\right)\right)\right) \cdot \cos \phi_2}\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4619140 = lambda1;
double r4619141 = lambda2;
double r4619142 = r4619140 - r4619141;
double r4619143 = sin(r4619142);
double r4619144 = phi2;
double r4619145 = cos(r4619144);
double r4619146 = r4619143 * r4619145;
double r4619147 = phi1;
double r4619148 = cos(r4619147);
double r4619149 = sin(r4619144);
double r4619150 = r4619148 * r4619149;
double r4619151 = sin(r4619147);
double r4619152 = r4619151 * r4619145;
double r4619153 = cos(r4619142);
double r4619154 = r4619152 * r4619153;
double r4619155 = r4619150 - r4619154;
double r4619156 = atan2(r4619146, r4619155);
return r4619156;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4619157 = lambda2;
double r4619158 = cos(r4619157);
double r4619159 = lambda1;
double r4619160 = sin(r4619159);
double r4619161 = r4619158 * r4619160;
double r4619162 = cos(r4619159);
double r4619163 = sin(r4619157);
double r4619164 = r4619162 * r4619163;
double r4619165 = r4619161 - r4619164;
double r4619166 = phi2;
double r4619167 = cos(r4619166);
double r4619168 = r4619165 * r4619167;
double r4619169 = sin(r4619166);
double r4619170 = phi1;
double r4619171 = cos(r4619170);
double r4619172 = r4619169 * r4619171;
double r4619173 = r4619158 * r4619162;
double r4619174 = sin(r4619170);
double r4619175 = r4619167 * r4619174;
double r4619176 = r4619173 * r4619175;
double r4619177 = r4619163 * r4619174;
double r4619178 = r4619160 * r4619177;
double r4619179 = r4619167 * r4619178;
double r4619180 = r4619179 * r4619179;
double r4619181 = r4619180 * r4619178;
double r4619182 = r4619181 * r4619167;
double r4619183 = cbrt(r4619182);
double r4619184 = r4619176 + r4619183;
double r4619185 = r4619172 - r4619184;
double r4619186 = atan2(r4619168, r4619185);
return r4619186;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sin-diff6.5
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied add-cbrt-cube0.2
Applied add-cbrt-cube0.2
Applied cbrt-unprod0.2
Applied cbrt-unprod0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019144 +o rules:numerics
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))