\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}\;n \le -2.0815983574246957 \cdot 10^{-139}:\\
\;\;\;\;\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(U - U*\right)\right)\right)}\\
\mathbf{elif}\;n \le -6.0596639631783474 \cdot 10^{-291}:\\
\;\;\;\;\sqrt{\left(U \cdot \left(t - \left(2 \cdot \frac{\ell}{\frac{Om}{\ell}} + \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(2 \cdot \frac{2}{2}\right)}\right) \cdot \left(U - U*\right)\right)\right)\right) \cdot \left(2 \cdot n\right) + \left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(2 \cdot \frac{2}{2}\right)}\right) \cdot \left(\left(-\left(U - U*\right)\right) + \left(U - U*\right)\right)\right)}\\
\mathbf{elif}\;n \le 1.1504183261425661 \cdot 10^{-17} \lor \neg \left(n \le 5.84977345983970428 \cdot 10^{38}\right):\\
\;\;\;\;\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(U - U*\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(\left(U - U*\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(2 \cdot \frac{2}{2}\right)}\right) \cdot n}\\
\end{array}double f(double n, double U, double t, double l, double Om, double U_) {
double r238902 = 2.0;
double r238903 = n;
double r238904 = r238902 * r238903;
double r238905 = U;
double r238906 = r238904 * r238905;
double r238907 = t;
double r238908 = l;
double r238909 = r238908 * r238908;
double r238910 = Om;
double r238911 = r238909 / r238910;
double r238912 = r238902 * r238911;
double r238913 = r238907 - r238912;
double r238914 = r238908 / r238910;
double r238915 = pow(r238914, r238902);
double r238916 = r238903 * r238915;
double r238917 = U_;
double r238918 = r238905 - r238917;
double r238919 = r238916 * r238918;
double r238920 = r238913 - r238919;
double r238921 = r238906 * r238920;
double r238922 = sqrt(r238921);
return r238922;
}
double f(double n, double U, double t, double l, double Om, double U_) {
double r238923 = n;
double r238924 = -2.0815983574246957e-139;
bool r238925 = r238923 <= r238924;
double r238926 = 2.0;
double r238927 = r238926 * r238923;
double r238928 = U;
double r238929 = r238927 * r238928;
double r238930 = t;
double r238931 = l;
double r238932 = Om;
double r238933 = r238932 / r238931;
double r238934 = r238931 / r238933;
double r238935 = r238926 * r238934;
double r238936 = r238930 - r238935;
double r238937 = r238931 / r238932;
double r238938 = 2.0;
double r238939 = r238926 / r238938;
double r238940 = pow(r238937, r238939);
double r238941 = r238923 * r238940;
double r238942 = U_;
double r238943 = r238928 - r238942;
double r238944 = r238940 * r238943;
double r238945 = r238941 * r238944;
double r238946 = r238936 - r238945;
double r238947 = r238929 * r238946;
double r238948 = sqrt(r238947);
double r238949 = -6.0596639631783474e-291;
bool r238950 = r238923 <= r238949;
double r238951 = r238938 * r238939;
double r238952 = pow(r238937, r238951);
double r238953 = r238923 * r238952;
double r238954 = r238953 * r238943;
double r238955 = r238935 + r238954;
double r238956 = r238930 - r238955;
double r238957 = r238928 * r238956;
double r238958 = r238957 * r238927;
double r238959 = -r238943;
double r238960 = r238959 + r238943;
double r238961 = r238953 * r238960;
double r238962 = r238929 * r238961;
double r238963 = r238958 + r238962;
double r238964 = sqrt(r238963);
double r238965 = 1.1504183261425661e-17;
bool r238966 = r238923 <= r238965;
double r238967 = 5.849773459839704e+38;
bool r238968 = r238923 <= r238967;
double r238969 = !r238968;
bool r238970 = r238966 || r238969;
double r238971 = sqrt(r238929);
double r238972 = r238943 * r238952;
double r238973 = r238972 * r238923;
double r238974 = r238936 - r238973;
double r238975 = sqrt(r238974);
double r238976 = r238971 * r238975;
double r238977 = r238970 ? r238948 : r238976;
double r238978 = r238950 ? r238964 : r238977;
double r238979 = r238925 ? r238948 : r238978;
return r238979;
}



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 n < -2.0815983574246957e-139 or -6.0596639631783474e-291 < n < 1.1504183261425661e-17 or 5.849773459839704e+38 < n Initial program 34.4
rmApplied associate-/l*31.9
rmApplied sqr-pow31.9
Applied associate-*r*31.0
rmApplied associate-*l*30.6
if -2.0815983574246957e-139 < n < -6.0596639631783474e-291Initial program 38.3
rmApplied associate-/l*34.9
rmApplied sqr-pow34.9
Applied associate-*r*33.8
rmApplied *-un-lft-identity33.8
Applied prod-diff33.8
Applied distribute-lft-in33.8
Simplified32.5
Simplified32.5
if 1.1504183261425661e-17 < n < 5.849773459839704e+38Initial program 32.5
rmApplied associate-/l*28.0
rmApplied sqr-pow28.0
Applied associate-*r*27.9
rmApplied associate-*l*26.6
rmApplied sqrt-prod37.1
Simplified38.1
Final simplification31.2
herbie shell --seed 2020047 +o rules:numerics
(FPCore (n U t l Om U*)
:name "Toniolo and Linder, Equation (13)"
:precision binary64
(sqrt (* (* (* 2 n) U) (- (- t (* 2 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2)) (- U U*))))))