\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 r28058 = phi1;
double r28059 = sin(r28058);
double r28060 = phi2;
double r28061 = sin(r28060);
double r28062 = r28059 * r28061;
double r28063 = cos(r28058);
double r28064 = cos(r28060);
double r28065 = r28063 * r28064;
double r28066 = lambda1;
double r28067 = lambda2;
double r28068 = r28066 - r28067;
double r28069 = cos(r28068);
double r28070 = r28065 * r28069;
double r28071 = r28062 + r28070;
double r28072 = acos(r28071);
double r28073 = R;
double r28074 = r28072 * r28073;
return r28074;
}
double f(double R, double lambda1, double lambda2, double phi1, double phi2) {
double r28075 = phi1;
double r28076 = sin(r28075);
double r28077 = phi2;
double r28078 = sin(r28077);
double r28079 = r28076 * r28078;
double r28080 = cos(r28075);
double r28081 = cos(r28077);
double r28082 = r28080 * r28081;
double r28083 = lambda1;
double r28084 = cos(r28083);
double r28085 = lambda2;
double r28086 = cos(r28085);
double r28087 = r28084 * r28086;
double r28088 = r28082 * r28087;
double r28089 = sin(r28083);
double r28090 = sin(r28085);
double r28091 = r28089 * r28090;
double r28092 = cbrt(r28091);
double r28093 = r28092 * r28092;
double r28094 = r28093 * r28092;
double r28095 = r28082 * r28094;
double r28096 = r28088 + r28095;
double r28097 = r28079 + r28096;
double r28098 = acos(r28097);
double r28099 = exp(r28098);
double r28100 = log(r28099);
double r28101 = R;
double r28102 = r28100 * r28101;
return r28102;
}



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
(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))