\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\begin{array}{l}
\mathbf{if}\;U \le 1.114777108083807533454474777376791311174 \cdot 10^{-310}:\\
\;\;\;\;\sqrt{\left(\left(\sqrt[3]{t + \left(\left(\left(U* - U\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \left(\left(n \cdot \ell\right) \cdot {\left(\frac{1}{{Om}^{1}}\right)}^{1}\right) - \left(2 \cdot \frac{\ell}{Om}\right) \cdot \ell\right)} \cdot \sqrt[3]{t + \left(\left(\left(U* - U\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \left(\left(n \cdot \ell\right) \cdot {\left(\frac{1}{{Om}^{1}}\right)}^{1}\right) - \left(2 \cdot \frac{\ell}{Om}\right) \cdot \ell\right)}\right) \cdot \left(\sqrt[3]{U} \cdot \left(\left(\sqrt[3]{U} \cdot \left(n \cdot 2\right)\right) \cdot \sqrt[3]{\left(\left(\left(n \cdot \ell\right) \cdot {\left(\frac{1}{{Om}^{1}}\right)}^{1}\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \left(U* - U\right) - \left(\left(\frac{\ell}{Om} \cdot \ell\right) \cdot 2 - t\right)}\right)\right)\right) \cdot \sqrt[3]{U}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{U} \cdot \sqrt{\left(n \cdot 2\right) \cdot \left(\left(U* - U\right) \cdot \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2 \cdot 2}{2}\right)}\right) - \left(\left(\frac{\ell}{Om} \cdot \ell\right) \cdot 2 - t\right)\right)}\\
\end{array}double f(double n, double U, double t, double l, double Om, double U_) {
double r351890 = 2.0;
double r351891 = n;
double r351892 = r351890 * r351891;
double r351893 = U;
double r351894 = r351892 * r351893;
double r351895 = t;
double r351896 = l;
double r351897 = r351896 * r351896;
double r351898 = Om;
double r351899 = r351897 / r351898;
double r351900 = r351890 * r351899;
double r351901 = r351895 - r351900;
double r351902 = r351896 / r351898;
double r351903 = pow(r351902, r351890);
double r351904 = r351891 * r351903;
double r351905 = U_;
double r351906 = r351893 - r351905;
double r351907 = r351904 * r351906;
double r351908 = r351901 - r351907;
double r351909 = r351894 * r351908;
double r351910 = sqrt(r351909);
return r351910;
}
double f(double n, double U, double t, double l, double Om, double U_) {
double r351911 = U;
double r351912 = 1.1147771080838e-310;
bool r351913 = r351911 <= r351912;
double r351914 = t;
double r351915 = U_;
double r351916 = r351915 - r351911;
double r351917 = l;
double r351918 = Om;
double r351919 = r351917 / r351918;
double r351920 = 2.0;
double r351921 = 2.0;
double r351922 = r351920 / r351921;
double r351923 = pow(r351919, r351922);
double r351924 = r351916 * r351923;
double r351925 = n;
double r351926 = r351925 * r351917;
double r351927 = 1.0;
double r351928 = 1.0;
double r351929 = pow(r351918, r351928);
double r351930 = r351927 / r351929;
double r351931 = pow(r351930, r351928);
double r351932 = r351926 * r351931;
double r351933 = r351924 * r351932;
double r351934 = r351920 * r351919;
double r351935 = r351934 * r351917;
double r351936 = r351933 - r351935;
double r351937 = r351914 + r351936;
double r351938 = cbrt(r351937);
double r351939 = r351938 * r351938;
double r351940 = cbrt(r351911);
double r351941 = r351925 * r351920;
double r351942 = r351940 * r351941;
double r351943 = r351932 * r351923;
double r351944 = r351943 * r351916;
double r351945 = r351919 * r351917;
double r351946 = r351945 * r351920;
double r351947 = r351946 - r351914;
double r351948 = r351944 - r351947;
double r351949 = cbrt(r351948);
double r351950 = r351942 * r351949;
double r351951 = r351940 * r351950;
double r351952 = r351939 * r351951;
double r351953 = r351952 * r351940;
double r351954 = sqrt(r351953);
double r351955 = sqrt(r351911);
double r351956 = r351920 * r351921;
double r351957 = r351956 / r351921;
double r351958 = pow(r351919, r351957);
double r351959 = r351925 * r351958;
double r351960 = r351916 * r351959;
double r351961 = r351960 - r351947;
double r351962 = r351941 * r351961;
double r351963 = sqrt(r351962);
double r351964 = r351955 * r351963;
double r351965 = r351913 ? r351954 : r351964;
return r351965;
}



Bits error versus n



Bits error versus U



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus U*
Results
if U < 1.1147771080838e-310Initial program 35.6
Simplified33.2
rmApplied sqr-pow33.2
Applied associate-*r*32.0
Simplified32.0
Taylor expanded around 0 32.6
Simplified32.1
rmApplied add-cube-cbrt32.4
Applied associate-*r*32.4
Simplified32.2
rmApplied add-cube-cbrt32.3
Applied associate-*l*32.3
Simplified31.4
if 1.1147771080838e-310 < U Initial program 34.6
Simplified32.0
rmApplied sqr-pow32.0
Applied associate-*r*31.0
Simplified31.0
rmApplied sqrt-prod23.3
Simplified24.5
Final simplification28.0
herbie shell --seed 2019196
(FPCore (n U t l Om U*)
:name "Toniolo and Linder, Equation (13)"
(sqrt (* (* (* 2.0 n) U) (- (- t (* 2.0 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2.0)) (- U U*))))))