\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 - \left(\sqrt[3]{\cos \lambda_1} \cdot \sin \lambda_2\right) \cdot \left(\sqrt[3]{\cos \lambda_1} \cdot \sqrt[3]{\cos \lambda_1}\right)\right) \cdot \cos \phi_2}{\cos \phi_1 \cdot \sin \phi_2 - \frac{\left(\sin \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right) + \left(\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right)\right)}{\left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \lambda_2 \cdot \cos \lambda_1\right) + \left(\left(\sin \lambda_2 \cdot \sin \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right) - \left(\cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\sin \lambda_2 \cdot \sin \lambda_1\right)\right)}}double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3876549 = lambda1;
double r3876550 = lambda2;
double r3876551 = r3876549 - r3876550;
double r3876552 = sin(r3876551);
double r3876553 = phi2;
double r3876554 = cos(r3876553);
double r3876555 = r3876552 * r3876554;
double r3876556 = phi1;
double r3876557 = cos(r3876556);
double r3876558 = sin(r3876553);
double r3876559 = r3876557 * r3876558;
double r3876560 = sin(r3876556);
double r3876561 = r3876560 * r3876554;
double r3876562 = cos(r3876551);
double r3876563 = r3876561 * r3876562;
double r3876564 = r3876559 - r3876563;
double r3876565 = atan2(r3876555, r3876564);
return r3876565;
}
double f(double lambda1, double lambda2, double phi1, double phi2) {
double r3876566 = lambda2;
double r3876567 = cos(r3876566);
double r3876568 = lambda1;
double r3876569 = sin(r3876568);
double r3876570 = r3876567 * r3876569;
double r3876571 = cos(r3876568);
double r3876572 = cbrt(r3876571);
double r3876573 = sin(r3876566);
double r3876574 = r3876572 * r3876573;
double r3876575 = r3876572 * r3876572;
double r3876576 = r3876574 * r3876575;
double r3876577 = r3876570 - r3876576;
double r3876578 = phi2;
double r3876579 = cos(r3876578);
double r3876580 = r3876577 * r3876579;
double r3876581 = phi1;
double r3876582 = cos(r3876581);
double r3876583 = sin(r3876578);
double r3876584 = r3876582 * r3876583;
double r3876585 = sin(r3876581);
double r3876586 = r3876585 * r3876579;
double r3876587 = r3876573 * r3876569;
double r3876588 = r3876587 * r3876587;
double r3876589 = r3876587 * r3876588;
double r3876590 = r3876567 * r3876571;
double r3876591 = r3876590 * r3876590;
double r3876592 = r3876591 * r3876590;
double r3876593 = r3876589 + r3876592;
double r3876594 = r3876586 * r3876593;
double r3876595 = r3876590 * r3876587;
double r3876596 = r3876588 - r3876595;
double r3876597 = r3876591 + r3876596;
double r3876598 = r3876594 / r3876597;
double r3876599 = r3876584 - r3876598;
double r3876600 = atan2(r3876580, r3876599);
return r3876600;
}



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 13.6
rmApplied sin-diff7.0
rmApplied cos-diff0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
rmApplied flip3-+0.2
Applied associate-*r/0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019171
(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))))))