\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 -1.611733182312969328568803254996605738157 \cdot 10^{-279}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(\left(n \cdot {\left(\frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}} \cdot \frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot {\left(\frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}}\right)}^{\left(\frac{2}{2}\right)}\right), t - 2 \cdot \left(\frac{\ell}{Om} \cdot \ell\right)\right) \cdot \left(\left(2 \cdot n\right) \cdot U\right)}\\
\mathbf{elif}\;n \le 1.30114079115734769467106905376504288527 \cdot 10^{-306}:\\
\;\;\;\;\sqrt{\left(t \cdot U - 2 \cdot \frac{\left(\ell \cdot \ell\right) \cdot U}{Om}\right) \cdot \left(2 \cdot n\right)}\\
\mathbf{elif}\;n \le 1.809873470794950544758355136519339403208 \cdot 10^{-298}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(\left(n \cdot {\left(\frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}} \cdot \frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot {\left(\frac{\sqrt[3]{\ell}}{\sqrt[3]{Om}}\right)}^{\left(\frac{2}{2}\right)}\right), t - 2 \cdot \left(\frac{\ell}{Om} \cdot \ell\right)\right) \cdot \left(\left(2 \cdot n\right) \cdot U\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}, t - 2 \cdot \left(\frac{\ell}{Om} \cdot \ell\right)\right) \cdot U} \cdot \sqrt{2 \cdot n}\\
\end{array}double f(double n, double U, double t, double l, double Om, double U_) {
double r2286947 = 2.0;
double r2286948 = n;
double r2286949 = r2286947 * r2286948;
double r2286950 = U;
double r2286951 = r2286949 * r2286950;
double r2286952 = t;
double r2286953 = l;
double r2286954 = r2286953 * r2286953;
double r2286955 = Om;
double r2286956 = r2286954 / r2286955;
double r2286957 = r2286947 * r2286956;
double r2286958 = r2286952 - r2286957;
double r2286959 = r2286953 / r2286955;
double r2286960 = pow(r2286959, r2286947);
double r2286961 = r2286948 * r2286960;
double r2286962 = U_;
double r2286963 = r2286950 - r2286962;
double r2286964 = r2286961 * r2286963;
double r2286965 = r2286958 - r2286964;
double r2286966 = r2286951 * r2286965;
double r2286967 = sqrt(r2286966);
return r2286967;
}
double f(double n, double U, double t, double l, double Om, double U_) {
double r2286968 = n;
double r2286969 = -1.6117331823129693e-279;
bool r2286970 = r2286968 <= r2286969;
double r2286971 = U_;
double r2286972 = U;
double r2286973 = r2286971 - r2286972;
double r2286974 = l;
double r2286975 = Om;
double r2286976 = r2286974 / r2286975;
double r2286977 = 2.0;
double r2286978 = 2.0;
double r2286979 = r2286977 / r2286978;
double r2286980 = pow(r2286976, r2286979);
double r2286981 = cbrt(r2286974);
double r2286982 = cbrt(r2286975);
double r2286983 = r2286981 / r2286982;
double r2286984 = r2286983 * r2286983;
double r2286985 = pow(r2286984, r2286979);
double r2286986 = r2286968 * r2286985;
double r2286987 = pow(r2286983, r2286979);
double r2286988 = r2286986 * r2286987;
double r2286989 = r2286980 * r2286988;
double r2286990 = t;
double r2286991 = r2286976 * r2286974;
double r2286992 = r2286977 * r2286991;
double r2286993 = r2286990 - r2286992;
double r2286994 = fma(r2286973, r2286989, r2286993);
double r2286995 = r2286977 * r2286968;
double r2286996 = r2286995 * r2286972;
double r2286997 = r2286994 * r2286996;
double r2286998 = sqrt(r2286997);
double r2286999 = 1.3011407911573477e-306;
bool r2287000 = r2286968 <= r2286999;
double r2287001 = r2286990 * r2286972;
double r2287002 = r2286974 * r2286974;
double r2287003 = r2287002 * r2286972;
double r2287004 = r2287003 / r2286975;
double r2287005 = r2286977 * r2287004;
double r2287006 = r2287001 - r2287005;
double r2287007 = r2287006 * r2286995;
double r2287008 = sqrt(r2287007);
double r2287009 = 1.8098734707949505e-298;
bool r2287010 = r2286968 <= r2287009;
double r2287011 = r2286968 * r2286980;
double r2287012 = r2287011 * r2286980;
double r2287013 = fma(r2286973, r2287012, r2286993);
double r2287014 = r2287013 * r2286972;
double r2287015 = sqrt(r2287014);
double r2287016 = sqrt(r2286995);
double r2287017 = r2287015 * r2287016;
double r2287018 = r2287010 ? r2286998 : r2287017;
double r2287019 = r2287000 ? r2287008 : r2287018;
double r2287020 = r2286970 ? r2286998 : r2287019;
return r2287020;
}



Bits error versus n



Bits error versus U



Bits error versus t



Bits error versus l



Bits error versus Om



Bits error versus U*
if n < -1.6117331823129693e-279 or 1.3011407911573477e-306 < n < 1.8098734707949505e-298Initial program 34.0
Simplified30.9
rmApplied sqr-pow30.9
Applied associate-*r*30.3
rmApplied add-cube-cbrt30.3
Applied add-cube-cbrt30.3
Applied times-frac30.3
Applied unpow-prod-down30.3
Applied associate-*r*30.3
Simplified30.3
if -1.6117331823129693e-279 < n < 1.3011407911573477e-306Initial program 40.0
Simplified36.9
rmApplied sqr-pow36.9
Applied associate-*r*35.5
rmApplied associate-*l*37.4
Taylor expanded around inf 41.3
Simplified41.3
if 1.8098734707949505e-298 < n Initial program 33.6
Simplified30.9
rmApplied sqr-pow30.9
Applied associate-*r*29.8
rmApplied associate-*l*29.8
rmApplied sqrt-prod22.9
Final simplification27.2
herbie shell --seed 2019192 +o rules:numerics
(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*))))))