Average Error: 34.4 → 22.5
Time: 3.2m
Precision: 64
\[\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2.0 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}\]
\[\begin{array}{l} \mathbf{if}\;\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right) \le 0.0:\\ \;\;\;\;\sqrt{\left(2.0 \cdot \left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)} \cdot \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right)\right) \cdot \left(U - U*\right)\right)\right)\right)\right) \cdot \sqrt[3]{U}} \cdot \left|\sqrt[3]{U}\right|\\ \mathbf{elif}\;\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right) \le 7.84774975188966 \cdot 10^{+306}:\\ \;\;\;\;\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\left(2.0 \cdot \left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)} \cdot \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right)\right) \cdot \left(U - U*\right)\right)\right)\right)\right) \cdot \sqrt[3]{U}} \cdot \left|\sqrt[3]{U}\right|\\ \end{array}\]
\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2.0 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}
\begin{array}{l}
\mathbf{if}\;\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right) \le 0.0:\\
\;\;\;\;\sqrt{\left(2.0 \cdot \left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)} \cdot \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right)\right) \cdot \left(U - U*\right)\right)\right)\right)\right) \cdot \sqrt[3]{U}} \cdot \left|\sqrt[3]{U}\right|\\

\mathbf{elif}\;\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right) \le 7.84774975188966 \cdot 10^{+306}:\\
\;\;\;\;\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - \frac{\ell \cdot \ell}{Om} \cdot 2.0\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}\\

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

\end{array}
double f(double n, double U, double t, double l, double Om, double U_) {
        double r3689144 = 2.0;
        double r3689145 = n;
        double r3689146 = r3689144 * r3689145;
        double r3689147 = U;
        double r3689148 = r3689146 * r3689147;
        double r3689149 = t;
        double r3689150 = l;
        double r3689151 = r3689150 * r3689150;
        double r3689152 = Om;
        double r3689153 = r3689151 / r3689152;
        double r3689154 = r3689144 * r3689153;
        double r3689155 = r3689149 - r3689154;
        double r3689156 = r3689150 / r3689152;
        double r3689157 = pow(r3689156, r3689144);
        double r3689158 = r3689145 * r3689157;
        double r3689159 = U_;
        double r3689160 = r3689147 - r3689159;
        double r3689161 = r3689158 * r3689160;
        double r3689162 = r3689155 - r3689161;
        double r3689163 = r3689148 * r3689162;
        double r3689164 = sqrt(r3689163);
        return r3689164;
}

double f(double n, double U, double t, double l, double Om, double U_) {
        double r3689165 = 2.0;
        double r3689166 = n;
        double r3689167 = r3689165 * r3689166;
        double r3689168 = U;
        double r3689169 = r3689167 * r3689168;
        double r3689170 = t;
        double r3689171 = l;
        double r3689172 = r3689171 * r3689171;
        double r3689173 = Om;
        double r3689174 = r3689172 / r3689173;
        double r3689175 = r3689174 * r3689165;
        double r3689176 = r3689170 - r3689175;
        double r3689177 = r3689171 / r3689173;
        double r3689178 = pow(r3689177, r3689165);
        double r3689179 = r3689166 * r3689178;
        double r3689180 = U_;
        double r3689181 = r3689168 - r3689180;
        double r3689182 = r3689179 * r3689181;
        double r3689183 = r3689176 - r3689182;
        double r3689184 = r3689169 * r3689183;
        double r3689185 = 0.0;
        bool r3689186 = r3689184 <= r3689185;
        double r3689187 = r3689165 * r3689171;
        double r3689188 = 2.0;
        double r3689189 = r3689165 / r3689188;
        double r3689190 = pow(r3689177, r3689189);
        double r3689191 = r3689166 * r3689190;
        double r3689192 = r3689190 * r3689191;
        double r3689193 = r3689192 * r3689181;
        double r3689194 = fma(r3689177, r3689187, r3689193);
        double r3689195 = r3689170 - r3689194;
        double r3689196 = r3689166 * r3689195;
        double r3689197 = r3689165 * r3689196;
        double r3689198 = cbrt(r3689168);
        double r3689199 = r3689197 * r3689198;
        double r3689200 = sqrt(r3689199);
        double r3689201 = fabs(r3689198);
        double r3689202 = r3689200 * r3689201;
        double r3689203 = 7.84774975188966e+306;
        bool r3689204 = r3689184 <= r3689203;
        double r3689205 = sqrt(r3689184);
        double r3689206 = r3689204 ? r3689205 : r3689202;
        double r3689207 = r3689186 ? r3689202 : r3689206;
        return r3689207;
}

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 (* (* (* 2.0 n) U) (- (- t (* 2.0 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2.0)) (- U U*)))) < 0.0 or 7.84774975188966e+306 < (* (* (* 2.0 n) U) (- (- t (* 2.0 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2.0)) (- U U*))))

    1. Initial program 61.6

      \[\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2.0 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}\]
    2. Simplified50.6

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

      \[\leadsto \sqrt{U \cdot \left(\left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left(n \cdot \color{blue}{\left({\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)} \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right)}\right) \cdot \left(U - U*\right)\right)\right)\right) \cdot 2.0\right)}\]
    5. Applied associate-*r*48.8

      \[\leadsto \sqrt{U \cdot \left(\left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \color{blue}{\left(\left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right)} \cdot \left(U - U*\right)\right)\right)\right) \cdot 2.0\right)}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt49.0

      \[\leadsto \sqrt{\color{blue}{\left(\left(\sqrt[3]{U} \cdot \sqrt[3]{U}\right) \cdot \sqrt[3]{U}\right)} \cdot \left(\left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left(\left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right) \cdot \left(U - U*\right)\right)\right)\right) \cdot 2.0\right)}\]
    8. Applied associate-*l*49.0

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

      \[\leadsto \color{blue}{\sqrt{\sqrt[3]{U} \cdot \sqrt[3]{U}} \cdot \sqrt{\sqrt[3]{U} \cdot \left(\left(n \cdot \left(t - \mathsf{fma}\left(\frac{\ell}{Om}, 2.0 \cdot \ell, \left(\left(n \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right) \cdot {\left(\frac{\ell}{Om}\right)}^{\left(\frac{2.0}{2}\right)}\right) \cdot \left(U - U*\right)\right)\right)\right) \cdot 2.0\right)}}\]
    11. Simplified39.8

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

    if 0.0 < (* (* (* 2.0 n) U) (- (- t (* 2.0 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2.0)) (- U U*)))) < 7.84774975188966e+306

    1. Initial program 1.8

      \[\sqrt{\left(\left(2.0 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2.0 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2.0}\right) \cdot \left(U - U*\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification22.5

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

Reproduce

herbie shell --seed 2019165 +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*))))))