\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r69960 = 1.0;
double r69961 = Om;
double r69962 = Omc;
double r69963 = r69961 / r69962;
double r69964 = 2.0;
double r69965 = pow(r69963, r69964);
double r69966 = r69960 - r69965;
double r69967 = t;
double r69968 = l;
double r69969 = r69967 / r69968;
double r69970 = pow(r69969, r69964);
double r69971 = r69964 * r69970;
double r69972 = r69960 + r69971;
double r69973 = r69966 / r69972;
double r69974 = sqrt(r69973);
double r69975 = asin(r69974);
return r69975;
}
double f(double t, double l, double Om, double Omc) {
double r69976 = 1.0;
double r69977 = Om;
double r69978 = Omc;
double r69979 = r69977 / r69978;
double r69980 = 2.0;
double r69981 = pow(r69979, r69980);
double r69982 = r69976 - r69981;
double r69983 = t;
double r69984 = l;
double r69985 = r69983 / r69984;
double r69986 = pow(r69985, r69980);
double r69987 = r69980 * r69986;
double r69988 = r69976 + r69987;
double r69989 = r69982 / r69988;
double r69990 = sqrt(r69989);
double r69991 = asin(r69990);
double r69992 = log1p(r69991);
double r69993 = expm1(r69992);
return r69993;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
Initial program 10.4
rmApplied expm1-log1p-u10.4
Final simplification10.4
herbie shell --seed 2020027 +o rules:numerics
(FPCore (t l Om Omc)
:name "Toniolo and Linder, Equation (2)"
:precision binary64
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))))