\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\log \left(e^{\cos^{-1} \left(\sin \phi_1 \cdot \sin \phi_2 + \left(\left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\cos \lambda_1 \cdot \cos \lambda_2\right) + \left(\cos \phi_1 \cdot \cos \phi_2\right) \cdot \left(\left(\sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2} \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right) \cdot \sqrt[3]{\sin \lambda_1 \cdot \sin \lambda_2}\right)\right)\right)}\right) \cdot Rdouble f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26030 = phi1;
double r26031 = sin(r26030);
double r26032 = phi2;
double r26033 = sin(r26032);
double r26034 = r26031 * r26033;
double r26035 = cos(r26030);
double r26036 = cos(r26032);
double r26037 = r26035 * r26036;
double r26038 = lambda1;
double r26039 = lambda2;
double r26040 = r26038 - r26039;
double r26041 = cos(r26040);
double r26042 = r26037 * r26041;
double r26043 = r26034 + r26042;
double r26044 = acos(r26043);
double r26045 = R;
double r26046 = r26044 * r26045;
return r26046;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r26047 = phi1;
double r26048 = sin(r26047);
double r26049 = phi2;
double r26050 = sin(r26049);
double r26051 = r26048 * r26050;
double r26052 = cos(r26047);
double r26053 = cos(r26049);
double r26054 = r26052 * r26053;
double r26055 = lambda1;
double r26056 = cos(r26055);
double r26057 = lambda2;
double r26058 = cos(r26057);
double r26059 = r26056 * r26058;
double r26060 = r26054 * r26059;
double r26061 = sin(r26055);
double r26062 = sin(r26057);
double r26063 = r26061 * r26062;
double r26064 = cbrt(r26063);
double r26065 = r26064 * r26064;
double r26066 = r26065 * r26064;
double r26067 = r26054 * r26066;
double r26068 = r26060 + r26067;
double r26069 = r26051 + r26068;
double r26070 = acos(r26069);
double r26071 = exp(r26070);
double r26072 = log(r26071);
double r26073 = R;
double r26074 = r26072 * r26073;
return r26074;
}



Bits error versus R



Bits error versus lambda1



Bits error versus lambda2



Bits error versus phi1



Bits error versus phi2
Results
Initial program 16.9
rmApplied cos-diff3.8
Applied distribute-lft-in3.8
rmApplied add-log-exp3.8
rmApplied add-cube-cbrt3.9
Final simplification3.9
herbie shell --seed 2019347 +o rules:numerics
(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))