\sin^{-1} \left(\sqrt{\frac{1.0 - {\left(\frac{Om}{Omc}\right)}^{2.0}}{1.0 + 2.0 \cdot {\left(\frac{t}{\ell}\right)}^{2.0}}}\right)\mathsf{expm1}\left(\mathsf{log1p}\left(\sin^{-1} \left(\sqrt{\frac{1.0 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(2.0, {\left(\frac{t}{\ell}\right)}^{2.0}, 1.0\right)}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r1773711 = 1.0;
double r1773712 = Om;
double r1773713 = Omc;
double r1773714 = r1773712 / r1773713;
double r1773715 = 2.0;
double r1773716 = pow(r1773714, r1773715);
double r1773717 = r1773711 - r1773716;
double r1773718 = t;
double r1773719 = l;
double r1773720 = r1773718 / r1773719;
double r1773721 = pow(r1773720, r1773715);
double r1773722 = r1773715 * r1773721;
double r1773723 = r1773711 + r1773722;
double r1773724 = r1773717 / r1773723;
double r1773725 = sqrt(r1773724);
double r1773726 = asin(r1773725);
return r1773726;
}
double f(double t, double l, double Om, double Omc) {
double r1773727 = 1.0;
double r1773728 = Om;
double r1773729 = Omc;
double r1773730 = r1773728 / r1773729;
double r1773731 = r1773730 * r1773730;
double r1773732 = r1773727 - r1773731;
double r1773733 = 2.0;
double r1773734 = t;
double r1773735 = l;
double r1773736 = r1773734 / r1773735;
double r1773737 = pow(r1773736, r1773733);
double r1773738 = fma(r1773733, r1773737, r1773727);
double r1773739 = r1773732 / r1773738;
double r1773740 = sqrt(r1773739);
double r1773741 = asin(r1773740);
double r1773742 = log1p(r1773741);
double r1773743 = expm1(r1773742);
return r1773743;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Initial program 9.7
Simplified9.7
Taylor expanded around 0 16.0
Simplified9.7
rmApplied expm1-log1p-u9.7
Final simplification9.7
herbie shell --seed 2019165 +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)))))))