\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}\;t \le 3.292637727838382735903492207891209195801 \cdot 10^{-149}:\\
\;\;\;\;\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(U - U*\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2}{2}\right)}\right)\right)}\\
\mathbf{elif}\;t \le 3.133024137349082252862067310328422033991 \cdot 10^{-104}:\\
\;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{t - \mathsf{fma}\left(2, \frac{\ell}{\frac{Om}{\ell}}, \left(\left(U - U*\right) \cdot n\right) \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right)}\\
\mathbf{elif}\;t \le 1.321746129353034672470618178877471414334 \cdot 10^{126}:\\
\;\;\;\;\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) + \left(2 \cdot n\right) \cdot \left(U \cdot \left(\frac{\ell}{\frac{Om}{\ell}} \cdot \left(\left(-2\right) + 2\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(2 \cdot \frac{2}{2}\right)}\right) \cdot \left(U - U*\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{t - \mathsf{fma}\left(2, \frac{\ell \cdot \ell}{Om}, \left(U - U*\right) \cdot \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right)\right)}\\
\end{array}double f(double n, double U, double t, double l, double Om, double U_) {
double r206661 = 2.0;
double r206662 = n;
double r206663 = r206661 * r206662;
double r206664 = U;
double r206665 = r206663 * r206664;
double r206666 = t;
double r206667 = l;
double r206668 = r206667 * r206667;
double r206669 = Om;
double r206670 = r206668 / r206669;
double r206671 = r206661 * r206670;
double r206672 = r206666 - r206671;
double r206673 = r206667 / r206669;
double r206674 = pow(r206673, r206661);
double r206675 = r206662 * r206674;
double r206676 = U_;
double r206677 = r206664 - r206676;
double r206678 = r206675 * r206677;
double r206679 = r206672 - r206678;
double r206680 = r206665 * r206679;
double r206681 = sqrt(r206680);
return r206681;
}
double f(double n, double U, double t, double l, double Om, double U_) {
double r206682 = t;
double r206683 = 3.2926377278383827e-149;
bool r206684 = r206682 <= r206683;
double r206685 = 2.0;
double r206686 = n;
double r206687 = r206685 * r206686;
double r206688 = U;
double r206689 = r206687 * r206688;
double r206690 = l;
double r206691 = Om;
double r206692 = r206691 / r206690;
double r206693 = r206690 / r206692;
double r206694 = r206685 * r206693;
double r206695 = r206682 - r206694;
double r206696 = r206690 / r206691;
double r206697 = 2.0;
double r206698 = r206685 / r206697;
double r206699 = pow(r206696, r206698);
double r206700 = r206686 * r206699;
double r206701 = U_;
double r206702 = r206688 - r206701;
double r206703 = r206702 * r206699;
double r206704 = r206700 * r206703;
double r206705 = r206695 - r206704;
double r206706 = r206689 * r206705;
double r206707 = sqrt(r206706);
double r206708 = 3.133024137349082e-104;
bool r206709 = r206682 <= r206708;
double r206710 = sqrt(r206689);
double r206711 = r206702 * r206686;
double r206712 = pow(r206696, r206685);
double r206713 = r206711 * r206712;
double r206714 = fma(r206685, r206693, r206713);
double r206715 = r206682 - r206714;
double r206716 = sqrt(r206715);
double r206717 = r206710 * r206716;
double r206718 = 1.3217461293530347e+126;
bool r206719 = r206682 <= r206718;
double r206720 = r206689 * r206695;
double r206721 = -r206685;
double r206722 = r206721 + r206685;
double r206723 = r206693 * r206722;
double r206724 = r206697 * r206698;
double r206725 = pow(r206696, r206724);
double r206726 = r206686 * r206725;
double r206727 = r206726 * r206702;
double r206728 = r206723 - r206727;
double r206729 = r206688 * r206728;
double r206730 = r206687 * r206729;
double r206731 = r206720 + r206730;
double r206732 = sqrt(r206731);
double r206733 = r206690 * r206690;
double r206734 = r206733 / r206691;
double r206735 = r206686 * r206712;
double r206736 = r206702 * r206735;
double r206737 = fma(r206685, r206734, r206736);
double r206738 = r206682 - r206737;
double r206739 = sqrt(r206738);
double r206740 = r206710 * r206739;
double r206741 = r206719 ? r206732 : r206740;
double r206742 = r206709 ? r206717 : r206741;
double r206743 = r206684 ? r206707 : r206742;
return r206743;
}



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 t < 3.2926377278383827e-149Initial program 34.7
rmApplied associate-/l*32.0
rmApplied sqr-pow32.0
Applied associate-*r*31.2
rmApplied associate-*l*30.9
Simplified30.9
if 3.2926377278383827e-149 < t < 3.133024137349082e-104Initial program 32.2
rmApplied associate-/l*30.2
rmApplied sqrt-prod33.9
Simplified34.3
if 3.133024137349082e-104 < t < 1.3217461293530347e+126Initial program 32.1
rmApplied associate-/l*29.4
rmApplied sqr-pow29.4
Applied associate-*r*28.9
rmApplied add-sqr-sqrt28.9
Applied prod-diff28.9
Applied associate--l+28.9
Applied distribute-lft-in28.9
Simplified28.9
Simplified29.4
if 1.3217461293530347e+126 < t Initial program 35.2
rmApplied sqrt-prod26.1
Simplified26.1
Final simplification30.0
herbie shell --seed 2019235 +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*))))))