\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)}\tan^{-1}_* \frac{\cos \phi_1 \cdot \left(\sin delta \cdot \sin theta\right)}{\frac{\left(\frac{1}{2} \cdot \cos \left(2 \cdot delta\right) - \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right) \cdot \left(\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right)\right)\right) + \frac{1}{2}}{\sin \phi_1 \cdot \sin \left(\sin^{-1} \left(\cos delta \cdot \sin \phi_1 + \cos theta \cdot \left(\cos \phi_1 \cdot \sin delta\right)\right)\right) + \cos delta}} + \lambda_1double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3988963 = lambda1;
double r3988964 = theta;
double r3988965 = sin(r3988964);
double r3988966 = delta;
double r3988967 = sin(r3988966);
double r3988968 = r3988965 * r3988967;
double r3988969 = phi1;
double r3988970 = cos(r3988969);
double r3988971 = r3988968 * r3988970;
double r3988972 = cos(r3988966);
double r3988973 = sin(r3988969);
double r3988974 = r3988973 * r3988972;
double r3988975 = r3988970 * r3988967;
double r3988976 = cos(r3988964);
double r3988977 = r3988975 * r3988976;
double r3988978 = r3988974 + r3988977;
double r3988979 = asin(r3988978);
double r3988980 = sin(r3988979);
double r3988981 = r3988973 * r3988980;
double r3988982 = r3988972 - r3988981;
double r3988983 = atan2(r3988971, r3988982);
double r3988984 = r3988963 + r3988983;
return r3988984;
}
double f(double lambda1, double phi1, double __attribute__((unused)) phi2, double delta, double theta) {
double r3988985 = phi1;
double r3988986 = cos(r3988985);
double r3988987 = delta;
double r3988988 = sin(r3988987);
double r3988989 = theta;
double r3988990 = sin(r3988989);
double r3988991 = r3988988 * r3988990;
double r3988992 = r3988986 * r3988991;
double r3988993 = 0.5;
double r3988994 = 2.0;
double r3988995 = r3988994 * r3988987;
double r3988996 = cos(r3988995);
double r3988997 = r3988993 * r3988996;
double r3988998 = sin(r3988985);
double r3988999 = cos(r3988987);
double r3989000 = r3988999 * r3988998;
double r3989001 = cos(r3988989);
double r3989002 = r3988986 * r3988988;
double r3989003 = r3989001 * r3989002;
double r3989004 = r3989000 + r3989003;
double r3989005 = asin(r3989004);
double r3989006 = sin(r3989005);
double r3989007 = r3988998 * r3989006;
double r3989008 = r3989007 * r3989007;
double r3989009 = r3988997 - r3989008;
double r3989010 = r3989009 + r3988993;
double r3989011 = r3989007 + r3988999;
double r3989012 = r3989010 / r3989011;
double r3989013 = atan2(r3988992, r3989012);
double r3989014 = lambda1;
double r3989015 = r3989013 + r3989014;
return r3989015;
}



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 flip--0.2
rmApplied sqr-cos0.2
Applied associate--l+0.2
Final simplification0.2
herbie shell --seed 2019163 +o rules:numerics
(FPCore (lambda1 phi1 phi2 delta theta)
:name "Destination given bearing on a great circle"
(+ lambda1 (atan2 (* (* (sin theta) (sin delta)) (cos phi1)) (- (cos delta) (* (sin phi1) (sin (asin (+ (* (sin phi1) (cos delta)) (* (* (cos phi1) (sin delta)) (cos theta))))))))))