Average Error: 32.8 → 24.9
Time: 41.2s
Precision: 64
\[\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 -8.0110620477323 \cdot 10^{-311}:\\ \;\;\;\;\sqrt{\left(n \cdot \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot \left(2 \cdot U\right) + \left(\left(U* - U\right) \cdot \frac{\ell \cdot n}{Om}\right) \cdot \left(\left(2 \cdot U\right) \cdot \frac{\ell \cdot n}{Om}\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot n} \cdot \sqrt{2 \cdot U}\\ \end{array}\]
\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 -8.0110620477323 \cdot 10^{-311}:\\
\;\;\;\;\sqrt{\left(n \cdot \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot \left(2 \cdot U\right) + \left(\left(U* - U\right) \cdot \frac{\ell \cdot n}{Om}\right) \cdot \left(\left(2 \cdot U\right) \cdot \frac{\ell \cdot n}{Om}\right)}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot n} \cdot \sqrt{2 \cdot U}\\

\end{array}
double f(double n, double U, double t, double l, double Om, double U_) {
        double r1550719 = 2.0;
        double r1550720 = n;
        double r1550721 = r1550719 * r1550720;
        double r1550722 = U;
        double r1550723 = r1550721 * r1550722;
        double r1550724 = t;
        double r1550725 = l;
        double r1550726 = r1550725 * r1550725;
        double r1550727 = Om;
        double r1550728 = r1550726 / r1550727;
        double r1550729 = r1550719 * r1550728;
        double r1550730 = r1550724 - r1550729;
        double r1550731 = r1550725 / r1550727;
        double r1550732 = pow(r1550731, r1550719);
        double r1550733 = r1550720 * r1550732;
        double r1550734 = U_;
        double r1550735 = r1550722 - r1550734;
        double r1550736 = r1550733 * r1550735;
        double r1550737 = r1550730 - r1550736;
        double r1550738 = r1550723 * r1550737;
        double r1550739 = sqrt(r1550738);
        return r1550739;
}

double f(double n, double U, double t, double l, double Om, double U_) {
        double r1550740 = U;
        double r1550741 = -8.0110620477323e-311;
        bool r1550742 = r1550740 <= r1550741;
        double r1550743 = n;
        double r1550744 = -2.0;
        double r1550745 = l;
        double r1550746 = Om;
        double r1550747 = r1550746 / r1550745;
        double r1550748 = r1550745 / r1550747;
        double r1550749 = t;
        double r1550750 = fma(r1550744, r1550748, r1550749);
        double r1550751 = r1550743 * r1550750;
        double r1550752 = 2.0;
        double r1550753 = r1550752 * r1550740;
        double r1550754 = r1550751 * r1550753;
        double r1550755 = U_;
        double r1550756 = r1550755 - r1550740;
        double r1550757 = r1550745 * r1550743;
        double r1550758 = r1550757 / r1550746;
        double r1550759 = r1550756 * r1550758;
        double r1550760 = r1550753 * r1550758;
        double r1550761 = r1550759 * r1550760;
        double r1550762 = r1550754 + r1550761;
        double r1550763 = sqrt(r1550762);
        double r1550764 = r1550743 / r1550747;
        double r1550765 = r1550764 / r1550747;
        double r1550766 = fma(r1550756, r1550765, r1550750);
        double r1550767 = r1550766 * r1550743;
        double r1550768 = sqrt(r1550767);
        double r1550769 = sqrt(r1550753);
        double r1550770 = r1550768 * r1550769;
        double r1550771 = r1550742 ? r1550763 : r1550770;
        return r1550771;
}

Error

Bits error versus n

Bits error versus U

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus U*

Derivation

  1. Split input into 2 regimes
  2. if U < -8.0110620477323e-311

    1. Initial program 32.9

      \[\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)}\]
    2. Simplified28.7

      \[\leadsto \color{blue}{\sqrt{\left(U \cdot 2\right) \cdot \left(n \cdot \mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right)\right)}}\]
    3. Using strategy rm
    4. Applied fma-udef28.7

      \[\leadsto \sqrt{\left(U \cdot 2\right) \cdot \left(n \cdot \color{blue}{\left(\left(U* - U\right) \cdot \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}} + \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right)}\right)}\]
    5. Applied distribute-rgt-in28.7

      \[\leadsto \sqrt{\left(U \cdot 2\right) \cdot \color{blue}{\left(\left(\left(U* - U\right) \cdot \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}\right) \cdot n + \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}}\]
    6. Simplified28.5

      \[\leadsto \sqrt{\left(U \cdot 2\right) \cdot \left(\color{blue}{\left(U* - U\right) \cdot \left(\frac{n}{\frac{Om}{\ell}} \cdot \frac{n}{\frac{Om}{\ell}}\right)} + \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}\]
    7. Using strategy rm
    8. Applied associate-*r*27.6

      \[\leadsto \sqrt{\left(U \cdot 2\right) \cdot \left(\color{blue}{\left(\left(U* - U\right) \cdot \frac{n}{\frac{Om}{\ell}}\right) \cdot \frac{n}{\frac{Om}{\ell}}} + \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}\]
    9. Using strategy rm
    10. Applied associate-/r/28.0

      \[\leadsto \sqrt{\left(U \cdot 2\right) \cdot \left(\left(\left(U* - U\right) \cdot \frac{n}{\frac{Om}{\ell}}\right) \cdot \color{blue}{\left(\frac{n}{Om} \cdot \ell\right)} + \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}\]
    11. Using strategy rm
    12. Applied distribute-lft-in28.0

      \[\leadsto \sqrt{\color{blue}{\left(U \cdot 2\right) \cdot \left(\left(\left(U* - U\right) \cdot \frac{n}{\frac{Om}{\ell}}\right) \cdot \left(\frac{n}{Om} \cdot \ell\right)\right) + \left(U \cdot 2\right) \cdot \left(\mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}}\]
    13. Simplified27.5

      \[\leadsto \sqrt{\color{blue}{\left(\frac{\ell \cdot n}{Om} \cdot \left(U* - U\right)\right) \cdot \left(\frac{\ell \cdot n}{Om} \cdot \left(U \cdot 2\right)\right)} + \left(U \cdot 2\right) \cdot \left(\mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right) \cdot n\right)}\]

    if -8.0110620477323e-311 < U

    1. Initial program 32.6

      \[\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)}\]
    2. Simplified28.7

      \[\leadsto \color{blue}{\sqrt{\left(U \cdot 2\right) \cdot \left(n \cdot \mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right)\right)}}\]
    3. Using strategy rm
    4. Applied sqrt-prod22.3

      \[\leadsto \color{blue}{\sqrt{U \cdot 2} \cdot \sqrt{n \cdot \mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification24.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;U \le -8.0110620477323 \cdot 10^{-311}:\\ \;\;\;\;\sqrt{\left(n \cdot \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot \left(2 \cdot U\right) + \left(\left(U* - U\right) \cdot \frac{\ell \cdot n}{Om}\right) \cdot \left(\left(2 \cdot U\right) \cdot \frac{\ell \cdot n}{Om}\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\mathsf{fma}\left(U* - U, \frac{\frac{n}{\frac{Om}{\ell}}}{\frac{Om}{\ell}}, \mathsf{fma}\left(-2, \frac{\ell}{\frac{Om}{\ell}}, t\right)\right) \cdot n} \cdot \sqrt{2 \cdot U}\\ \end{array}\]

Reproduce

herbie shell --seed 2019141 +o rules:numerics
(FPCore (n U t l Om U*)
  :name "Toniolo and Linder, Equation (13)"
  (sqrt (* (* (* 2 n) U) (- (- t (* 2 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2)) (- U U*))))))