\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\sin^{-1} \left(\sqrt{\mathsf{log1p}\left(\sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)} \cdot \sqrt{\mathsf{expm1}\left(\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left({\left(\frac{t}{\ell}\right)}^{2}, 2, 1\right)}\right)}\right)}\right)double f(double t, double l, double Om, double Omc) {
double r45982 = 1.0;
double r45983 = Om;
double r45984 = Omc;
double r45985 = r45983 / r45984;
double r45986 = 2.0;
double r45987 = pow(r45985, r45986);
double r45988 = r45982 - r45987;
double r45989 = t;
double r45990 = l;
double r45991 = r45989 / r45990;
double r45992 = pow(r45991, r45986);
double r45993 = r45986 * r45992;
double r45994 = r45982 + r45993;
double r45995 = r45988 / r45994;
double r45996 = sqrt(r45995);
double r45997 = asin(r45996);
return r45997;
}
double f(double t, double l, double Om, double Omc) {
double r45998 = 1.0;
double r45999 = Om;
double r46000 = Omc;
double r46001 = r45999 / r46000;
double r46002 = 2.0;
double r46003 = pow(r46001, r46002);
double r46004 = r45998 - r46003;
double r46005 = t;
double r46006 = l;
double r46007 = r46005 / r46006;
double r46008 = pow(r46007, r46002);
double r46009 = fma(r46008, r46002, r45998);
double r46010 = r46004 / r46009;
double r46011 = expm1(r46010);
double r46012 = sqrt(r46011);
double r46013 = r46012 * r46012;
double r46014 = log1p(r46013);
double r46015 = sqrt(r46014);
double r46016 = asin(r46015);
return r46016;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 10.1
rmApplied log1p-expm1-u10.1
Simplified10.1
rmApplied add-sqr-sqrt10.1
Final simplification10.1
herbie shell --seed 2019323 +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)))))))