\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(\log \left(e^{\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)}\right) + \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_2 \cdot \sin \phi_1\right)\right)}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4344147 = lambda1;
double r4344148 = lambda2;
double r4344149 = r4344147 - r4344148;
double r4344150 = sin(r4344149);
double r4344151 = phi2;
double r4344152 = cos(r4344151);
double r4344153 = r4344150 * r4344152;
double r4344154 = phi1;
double r4344155 = cos(r4344154);
double r4344156 = sin(r4344151);
double r4344157 = r4344155 * r4344156;
double r4344158 = sin(r4344154);
double r4344159 = r4344158 * r4344152;
double r4344160 = cos(r4344149);
double r4344161 = r4344159 * r4344160;
double r4344162 = r4344157 - r4344161;
double r4344163 = atan2(r4344153, r4344162);
return r4344163;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r4344164 = lambda2;
double r4344165 = cos(r4344164);
double r4344166 = lambda1;
double r4344167 = sin(r4344166);
double r4344168 = r4344165 * r4344167;
double r4344169 = cos(r4344166);
double r4344170 = sin(r4344164);
double r4344171 = r4344169 * r4344170;
double r4344172 = r4344168 - r4344171;
double r4344173 = phi2;
double r4344174 = cos(r4344173);
double r4344175 = r4344172 * r4344174;
double r4344176 = sin(r4344173);
double r4344177 = phi1;
double r4344178 = cos(r4344177);
double r4344179 = r4344176 * r4344178;
double r4344180 = r4344170 * r4344167;
double r4344181 = sin(r4344177);
double r4344182 = r4344174 * r4344181;
double r4344183 = r4344180 * r4344182;
double r4344184 = exp(r4344183);
double r4344185 = log(r4344184);
double r4344186 = r4344165 * r4344169;
double r4344187 = r4344186 * r4344182;
double r4344188 = r4344185 + r4344187;
double r4344189 = r4344179 - r4344188;
double r4344190 = atan2(r4344175, r4344189);
return r4344190;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.1
rmApplied sin-diff6.9
rmApplied cos-diff0.2
Applied distribute-rgt-in0.2
rmApplied add-log-exp0.2
Final simplification0.2
herbie shell --seed 2019162
(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))))))