\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 RR \cdot \cos^{-1} \left(\left(\sqrt[3]{\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)} + \cos \lambda_2 \cdot \cos \lambda_1\right) \cdot \left(\cos \phi_1 \cdot \cos \phi_2\right) + \sin \phi_2 \cdot \sin \phi_1\right)double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r715030 = phi1;
double r715031 = sin(r715030);
double r715032 = phi2;
double r715033 = sin(r715032);
double r715034 = r715031 * r715033;
double r715035 = cos(r715030);
double r715036 = cos(r715032);
double r715037 = r715035 * r715036;
double r715038 = lambda1;
double r715039 = lambda2;
double r715040 = r715038 - r715039;
double r715041 = cos(r715040);
double r715042 = r715037 * r715041;
double r715043 = r715034 + r715042;
double r715044 = acos(r715043);
double r715045 = R;
double r715046 = r715044 * r715045;
return r715046;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r715047 = R;
double r715048 = lambda2;
double r715049 = sin(r715048);
double r715050 = lambda1;
double r715051 = sin(r715050);
double r715052 = r715049 * r715051;
double r715053 = r715052 * r715052;
double r715054 = r715052 * r715053;
double r715055 = cbrt(r715054);
double r715056 = cos(r715048);
double r715057 = cos(r715050);
double r715058 = r715056 * r715057;
double r715059 = r715055 + r715058;
double r715060 = phi1;
double r715061 = cos(r715060);
double r715062 = phi2;
double r715063 = cos(r715062);
double r715064 = r715061 * r715063;
double r715065 = r715059 * r715064;
double r715066 = sin(r715062);
double r715067 = sin(r715060);
double r715068 = r715066 * r715067;
double r715069 = r715065 + r715068;
double r715070 = acos(r715069);
double r715071 = r715047 * r715070;
return r715071;
}



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 add-cbrt-cube3.9
Final simplification3.9
herbie shell --seed 2019129
(FPCore (R lambda1 lambda2 phi1 phi2)
:name "Spherical law of cosines"
(* (acos (+ (* (sin phi1) (sin phi2)) (* (* (cos phi1) (cos phi2)) (cos (- lambda1 lambda2))))) R))