\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(\frac{\sqrt{1 - {\left(\sqrt[3]{\frac{Om}{Omc}} \cdot \sqrt[3]{\frac{Om}{Omc}}\right)}^{2} \cdot {\left(\sqrt[3]{\frac{Om}{Omc}}\right)}^{2}}}{\sqrt{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)double f(double t, double l, double Om, double Omc) {
double r60009 = 1.0;
double r60010 = Om;
double r60011 = Omc;
double r60012 = r60010 / r60011;
double r60013 = 2.0;
double r60014 = pow(r60012, r60013);
double r60015 = r60009 - r60014;
double r60016 = t;
double r60017 = l;
double r60018 = r60016 / r60017;
double r60019 = pow(r60018, r60013);
double r60020 = r60013 * r60019;
double r60021 = r60009 + r60020;
double r60022 = r60015 / r60021;
double r60023 = sqrt(r60022);
double r60024 = asin(r60023);
return r60024;
}
double f(double t, double l, double Om, double Omc) {
double r60025 = 1.0;
double r60026 = Om;
double r60027 = Omc;
double r60028 = r60026 / r60027;
double r60029 = cbrt(r60028);
double r60030 = r60029 * r60029;
double r60031 = 2.0;
double r60032 = pow(r60030, r60031);
double r60033 = pow(r60029, r60031);
double r60034 = r60032 * r60033;
double r60035 = r60025 - r60034;
double r60036 = sqrt(r60035);
double r60037 = t;
double r60038 = l;
double r60039 = r60037 / r60038;
double r60040 = pow(r60039, r60031);
double r60041 = r60031 * r60040;
double r60042 = r60025 + r60041;
double r60043 = sqrt(r60042);
double r60044 = r60036 / r60043;
double r60045 = asin(r60044);
return r60045;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
Initial program 10.7
rmApplied sqrt-div10.7
rmApplied add-cube-cbrt10.7
Applied unpow-prod-down10.7
Final simplification10.7
herbie shell --seed 2020056 +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)))))))