\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)\begin{array}{l}
\mathbf{if}\;\frac{t}{\ell} \le 8.516626991432281 \cdot 10^{+142}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{2 \cdot \left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right) + 1}}\right)\\
\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(\frac{\sqrt{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\frac{t \cdot \sqrt{2}}{\ell}}\right)\\
\end{array}double f(double t, double l, double Om, double Omc) {
double r1887884 = 1.0;
double r1887885 = Om;
double r1887886 = Omc;
double r1887887 = r1887885 / r1887886;
double r1887888 = 2.0;
double r1887889 = pow(r1887887, r1887888);
double r1887890 = r1887884 - r1887889;
double r1887891 = t;
double r1887892 = l;
double r1887893 = r1887891 / r1887892;
double r1887894 = pow(r1887893, r1887888);
double r1887895 = r1887888 * r1887894;
double r1887896 = r1887884 + r1887895;
double r1887897 = r1887890 / r1887896;
double r1887898 = sqrt(r1887897);
double r1887899 = asin(r1887898);
return r1887899;
}
double f(double t, double l, double Om, double Omc) {
double r1887900 = t;
double r1887901 = l;
double r1887902 = r1887900 / r1887901;
double r1887903 = 8.516626991432281e+142;
bool r1887904 = r1887902 <= r1887903;
double r1887905 = 1.0;
double r1887906 = Om;
double r1887907 = Omc;
double r1887908 = r1887906 / r1887907;
double r1887909 = r1887908 * r1887908;
double r1887910 = r1887905 - r1887909;
double r1887911 = 2.0;
double r1887912 = r1887902 * r1887902;
double r1887913 = r1887911 * r1887912;
double r1887914 = r1887913 + r1887905;
double r1887915 = r1887910 / r1887914;
double r1887916 = sqrt(r1887915);
double r1887917 = asin(r1887916);
double r1887918 = sqrt(r1887910);
double r1887919 = sqrt(r1887911);
double r1887920 = r1887900 * r1887919;
double r1887921 = r1887920 / r1887901;
double r1887922 = r1887918 / r1887921;
double r1887923 = asin(r1887922);
double r1887924 = r1887904 ? r1887917 : r1887923;
return r1887924;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
Results
if (/ t l) < 8.516626991432281e+142Initial program 6.6
Simplified6.6
rmApplied div-inv6.6
Simplified6.6
if 8.516626991432281e+142 < (/ t l) Initial program 32.3
Simplified32.3
rmApplied sqrt-div32.3
Taylor expanded around 0 1.3
Final simplification5.8
herbie shell --seed 2019135
(FPCore (t l Om Omc)
:name "Toniolo and Linder, Equation (2)"
(asin (sqrt (/ (- 1 (pow (/ Om Omc) 2)) (+ 1 (* 2 (pow (/ t l) 2)))))))