\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(\sin \lambda_1 \cdot \cos \lambda_2 + \cos \lambda_1 \cdot \sin \left(-\lambda_2\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \sin \lambda_1 \cdot \left(\sin \lambda_1 \cdot \left(\sin \lambda_2 \cdot \sin \lambda_2\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \cos \phi_2\right)}{\cos \lambda_1 \cdot \cos \lambda_2 + \sin \lambda_1 \cdot \sin \left(-\lambda_2\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r178158 = lambda1;
double r178159 = lambda2;
double r178160 = r178158 - r178159;
double r178161 = sin(r178160);
double r178162 = phi2;
double r178163 = cos(r178162);
double r178164 = r178161 * r178163;
double r178165 = phi1;
double r178166 = cos(r178165);
double r178167 = sin(r178162);
double r178168 = r178166 * r178167;
double r178169 = sin(r178165);
double r178170 = r178169 * r178163;
double r178171 = cos(r178160);
double r178172 = r178170 * r178171;
double r178173 = r178168 - r178172;
double r178174 = atan2(r178164, r178173);
return r178174;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r178175 = lambda1;
double r178176 = sin(r178175);
double r178177 = lambda2;
double r178178 = cos(r178177);
double r178179 = r178176 * r178178;
double r178180 = cos(r178175);
double r178181 = -r178177;
double r178182 = sin(r178181);
double r178183 = r178180 * r178182;
double r178184 = r178179 + r178183;
double r178185 = phi2;
double r178186 = cos(r178185);
double r178187 = r178184 * r178186;
double r178188 = phi1;
double r178189 = cos(r178188);
double r178190 = sin(r178185);
double r178191 = r178189 * r178190;
double r178192 = r178180 * r178178;
double r178193 = r178192 * r178192;
double r178194 = sin(r178177);
double r178195 = r178194 * r178194;
double r178196 = r178176 * r178195;
double r178197 = r178176 * r178196;
double r178198 = r178193 - r178197;
double r178199 = sin(r178188);
double r178200 = r178199 * r178186;
double r178201 = r178198 * r178200;
double r178202 = r178176 * r178182;
double r178203 = r178192 + r178202;
double r178204 = r178201 / r178203;
double r178205 = r178191 - r178204;
double r178206 = atan2(r178187, r178205);
return r178206;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.2
rmApplied sub-neg13.2
Applied sin-sum6.6
Simplified6.6
rmApplied sub-neg6.6
Applied cos-sum0.2
Simplified0.2
rmApplied flip--0.2
Applied associate-*r/0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020045
(FPCore (lambda1 lambda2 phi1 phi2)
:name "Bearing on a great circle"
:precision binary64
(atan2 (* (sin (- lambda1 lambda2)) (cos phi2)) (- (* (cos phi1) (sin phi2)) (* (* (sin phi1) (cos phi2)) (cos (- lambda1 lambda2))))))