\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 -3.916798096582946 \cdot 10^{+111}:\\
\;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\
\mathbf{elif}\;\frac{t}{\ell} \le 3.640923865110079 \cdot 10^{+97}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\left(t \cdot \frac{\frac{t}{\ell}}{\ell}\right), 2, 1\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(\left|\frac{\sqrt{1 - \log \left(e^{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)}}{\frac{\sqrt{2} \cdot t}{\ell}}\right|\right)\\
\end{array}double f(double t, double l, double Om, double Omc) {
double r1693065 = 1.0;
double r1693066 = Om;
double r1693067 = Omc;
double r1693068 = r1693066 / r1693067;
double r1693069 = 2.0;
double r1693070 = pow(r1693068, r1693069);
double r1693071 = r1693065 - r1693070;
double r1693072 = t;
double r1693073 = l;
double r1693074 = r1693072 / r1693073;
double r1693075 = pow(r1693074, r1693069);
double r1693076 = r1693069 * r1693075;
double r1693077 = r1693065 + r1693076;
double r1693078 = r1693071 / r1693077;
double r1693079 = sqrt(r1693078);
double r1693080 = asin(r1693079);
return r1693080;
}
double f(double t, double l, double Om, double Omc) {
double r1693081 = t;
double r1693082 = l;
double r1693083 = r1693081 / r1693082;
double r1693084 = -3.916798096582946e+111;
bool r1693085 = r1693083 <= r1693084;
double r1693086 = 1.0;
double r1693087 = Om;
double r1693088 = Omc;
double r1693089 = r1693087 / r1693088;
double r1693090 = r1693089 * r1693089;
double r1693091 = exp(r1693090);
double r1693092 = log(r1693091);
double r1693093 = r1693086 - r1693092;
double r1693094 = sqrt(r1693093);
double r1693095 = 2.0;
double r1693096 = sqrt(r1693095);
double r1693097 = r1693096 * r1693081;
double r1693098 = r1693097 / r1693082;
double r1693099 = r1693094 / r1693098;
double r1693100 = fabs(r1693099);
double r1693101 = asin(r1693100);
double r1693102 = 3.640923865110079e+97;
bool r1693103 = r1693083 <= r1693102;
double r1693104 = r1693086 - r1693090;
double r1693105 = r1693083 / r1693082;
double r1693106 = r1693081 * r1693105;
double r1693107 = fma(r1693106, r1693095, r1693086);
double r1693108 = r1693104 / r1693107;
double r1693109 = sqrt(r1693108);
double r1693110 = asin(r1693109);
double r1693111 = r1693103 ? r1693110 : r1693101;
double r1693112 = r1693085 ? r1693101 : r1693111;
return r1693112;
}



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus Omc
if (/ t l) < -3.916798096582946e+111 or 3.640923865110079e+97 < (/ t l) Initial program 27.7
Simplified27.7
rmApplied add-log-exp27.7
rmApplied add-sqr-sqrt27.7
Applied add-sqr-sqrt27.7
Applied times-frac27.7
Applied rem-sqrt-square27.7
Taylor expanded around inf 1.1
if -3.916798096582946e+111 < (/ t l) < 3.640923865110079e+97Initial program 0.9
Simplified0.9
rmApplied div-inv0.9
Applied associate-*l*2.0
Simplified2.0
Final simplification1.7
herbie shell --seed 2019130 +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)))))))