\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \cos \left(\lambda_1 - \lambda_2\right)\right) \cdot R\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \frac{\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\cos \lambda_1 \cdot \cos \lambda_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) - \left(\sin \lambda_1 \cdot \sin \lambda_2\right) \cdot \left(\sin \lambda_1 \cdot \sin \lambda_2\right)\right)}{\cos \lambda_1 \cdot \cos \lambda_2 - \sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r20982 = phi1;
double r20983 = sin(r20982);
double r20984 = phi2;
double r20985 = sin(r20984);
double r20986 = r20983 * r20985;
double r20987 = cos(r20982);
double r20988 = cos(r20984);
double r20989 = r20987 * r20988;
double r20990 = lambda1;
double r20991 = lambda2;
double r20992 = r20990 - r20991;
double r20993 = cos(r20992);
double r20994 = r20989 * r20993;
double r20995 = r20986 + r20994;
double r20996 = acos(r20995);
double r20997 = R;
double r20998 = r20996 * r20997;
return r20998;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r20999 = phi1;
double r21000 = sin(r20999);
double r21001 = phi2;
double r21002 = sin(r21001);
double r21003 = r21000 * r21002;
double r21004 = cos(r20999);
double r21005 = cos(r21001);
double r21006 = r21004 * r21005;
double r21007 = lambda1;
double r21008 = cos(r21007);
double r21009 = lambda2;
double r21010 = cos(r21009);
double r21011 = r21008 * r21010;
double r21012 = r21011 * r21011;
double r21013 = sin(r21007);
double r21014 = sin(r21009);
double r21015 = r21013 * r21014;
double r21016 = r21015 * r21015;
double r21017 = r21012 - r21016;
double r21018 = r21006 * r21017;
double r21019 = r21011 - r21015;
double r21020 = r21018 / r21019;
double r21021 = r21003 + r21020;
double r21022 = acos(r21021);
double r21023 = R;
double r21024 = r21022 * r21023;
return r21024;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 17.3
rmApplied cos-diff3.8
rmApplied flip-+3.8
Applied associate-*r/3.8
Final simplification3.8
herbie shell --seed 2019353
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
:precision binary64
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))