\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 r46033 = 1.0;
double r46034 = Om;
double r46035 = Omc;
double r46036 = r46034 / r46035;
double r46037 = 2.0;
double r46038 = pow(r46036, r46037);
double r46039 = r46033 - r46038;
double r46040 = t;
double r46041 = l;
double r46042 = r46040 / r46041;
double r46043 = pow(r46042, r46037);
double r46044 = r46037 * r46043;
double r46045 = r46033 + r46044;
double r46046 = r46039 / r46045;
double r46047 = sqrt(r46046);
double r46048 = asin(r46047);
return r46048;
}
double f(double t, double l, double Om, double Omc) {
double r46049 = 1.0;
double r46050 = Om;
double r46051 = Omc;
double r46052 = r46050 / r46051;
double r46053 = 2.0;
double r46054 = pow(r46052, r46053);
double r46055 = r46049 - r46054;
double r46056 = t;
double r46057 = l;
double r46058 = r46056 / r46057;
double r46059 = pow(r46058, r46053);
double r46060 = fma(r46059, r46053, r46049);
double r46061 = r46055 / r46060;
double r46062 = expm1(r46061);
double r46063 = sqrt(r46062);
double r46064 = r46063 * r46063;
double r46065 = log1p(r46064);
double r46066 = sqrt(r46065);
double r46067 = asin(r46066);
return r46067;
}



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