\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 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(2 \cdot \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}\right)\right)\right)double f(double t, double l, double Om, double Omc) {
double r1020875 = 1.0;
double r1020876 = Om;
double r1020877 = Omc;
double r1020878 = r1020876 / r1020877;
double r1020879 = 2.0;
double r1020880 = pow(r1020878, r1020879);
double r1020881 = r1020875 - r1020880;
double r1020882 = t;
double r1020883 = l;
double r1020884 = r1020882 / r1020883;
double r1020885 = pow(r1020884, r1020879);
double r1020886 = r1020879 * r1020885;
double r1020887 = r1020875 + r1020886;
double r1020888 = r1020881 / r1020887;
double r1020889 = sqrt(r1020888);
double r1020890 = asin(r1020889);
return r1020890;
}
double f(double t, double l, double Om, double Omc) {
double r1020891 = 1.0;
double r1020892 = Om;
double r1020893 = Omc;
double r1020894 = r1020892 / r1020893;
double r1020895 = r1020894 * r1020894;
double r1020896 = r1020891 - r1020895;
double r1020897 = 2.0;
double r1020898 = t;
double r1020899 = l;
double r1020900 = r1020898 / r1020899;
double r1020901 = r1020897 * r1020900;
double r1020902 = fma(r1020901, r1020900, r1020891);
double r1020903 = r1020896 / r1020902;
double r1020904 = sqrt(r1020903);
double r1020905 = asin(r1020904);
double r1020906 = log1p(r1020905);
double r1020907 = expm1(r1020906);
return r1020907;
}



Bits error versus t



Bits error versus l



Bits error versus Om



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