\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{expm1}\left(\mathsf{log1p}\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 r35062 = 1.0;
double r35063 = Om;
double r35064 = Omc;
double r35065 = r35063 / r35064;
double r35066 = 2.0;
double r35067 = pow(r35065, r35066);
double r35068 = r35062 - r35067;
double r35069 = t;
double r35070 = l;
double r35071 = r35069 / r35070;
double r35072 = pow(r35071, r35066);
double r35073 = r35066 * r35072;
double r35074 = r35062 + r35073;
double r35075 = r35068 / r35074;
double r35076 = sqrt(r35075);
double r35077 = asin(r35076);
return r35077;
}
double f(double t, double l, double Om, double Omc) {
double r35078 = 1.0;
double r35079 = Om;
double r35080 = Omc;
double r35081 = r35079 / r35080;
double r35082 = 2.0;
double r35083 = pow(r35081, r35082);
double r35084 = r35078 - r35083;
double r35085 = t;
double r35086 = l;
double r35087 = r35085 / r35086;
double r35088 = pow(r35087, r35082);
double r35089 = fma(r35088, r35082, r35078);
double r35090 = r35084 / r35089;
double r35091 = log1p(r35090);
double r35092 = expm1(r35091);
double r35093 = sqrt(r35092);
double r35094 = asin(r35093);
return r35094;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 10.1
Simplified10.1
rmApplied expm1-log1p-u10.1
Final simplification10.1
herbie shell --seed 2019195 +o rules:numerics
(FPCore (t l Om Omc)
:name "Toniolo and Linder, Equation (2)"
(asin (sqrt (/ (- 1.0 (pow (/ Om Omc) 2.0)) (+ 1.0 (* 2.0 (pow (/ t l) 2.0)))))))