Average Error: 29.1 → 28.7
Time: 8.4s
Precision: 64
\[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}\]
\[\begin{array}{l} \mathbf{if}\;y \le -1.69974851560525037 \cdot 10^{72}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right) \cdot \left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot y\right) + c\right) \cdot y + i}\\ \end{array}\]
\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}
\begin{array}{l}
\mathbf{if}\;y \le -1.69974851560525037 \cdot 10^{72}:\\
\;\;\;\;0\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right) \cdot \left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot y\right) + c\right) \cdot y + i}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r65423 = x;
        double r65424 = y;
        double r65425 = r65423 * r65424;
        double r65426 = z;
        double r65427 = r65425 + r65426;
        double r65428 = r65427 * r65424;
        double r65429 = 27464.7644705;
        double r65430 = r65428 + r65429;
        double r65431 = r65430 * r65424;
        double r65432 = 230661.510616;
        double r65433 = r65431 + r65432;
        double r65434 = r65433 * r65424;
        double r65435 = t;
        double r65436 = r65434 + r65435;
        double r65437 = a;
        double r65438 = r65424 + r65437;
        double r65439 = r65438 * r65424;
        double r65440 = b;
        double r65441 = r65439 + r65440;
        double r65442 = r65441 * r65424;
        double r65443 = c;
        double r65444 = r65442 + r65443;
        double r65445 = r65444 * r65424;
        double r65446 = i;
        double r65447 = r65445 + r65446;
        double r65448 = r65436 / r65447;
        return r65448;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r65449 = y;
        double r65450 = -1.6997485156052504e+72;
        bool r65451 = r65449 <= r65450;
        double r65452 = 0.0;
        double r65453 = x;
        double r65454 = r65453 * r65449;
        double r65455 = z;
        double r65456 = r65454 + r65455;
        double r65457 = r65456 * r65449;
        double r65458 = 27464.7644705;
        double r65459 = r65457 + r65458;
        double r65460 = r65459 * r65449;
        double r65461 = 230661.510616;
        double r65462 = r65460 + r65461;
        double r65463 = r65462 * r65449;
        double r65464 = t;
        double r65465 = r65463 + r65464;
        double r65466 = a;
        double r65467 = r65449 + r65466;
        double r65468 = r65467 * r65449;
        double r65469 = b;
        double r65470 = r65468 + r65469;
        double r65471 = cbrt(r65470);
        double r65472 = r65471 * r65471;
        double r65473 = r65471 * r65449;
        double r65474 = r65472 * r65473;
        double r65475 = c;
        double r65476 = r65474 + r65475;
        double r65477 = r65476 * r65449;
        double r65478 = i;
        double r65479 = r65477 + r65478;
        double r65480 = r65465 / r65479;
        double r65481 = r65451 ? r65452 : r65480;
        return r65481;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus i

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if y < -1.6997485156052504e+72

    1. Initial program 63.4

      \[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}\]
    2. Taylor expanded around 0 61.4

      \[\leadsto \color{blue}{0}\]

    if -1.6997485156052504e+72 < y

    1. Initial program 20.4

      \[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt20.6

      \[\leadsto \frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\color{blue}{\left(\left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right) \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right)} \cdot y + c\right) \cdot y + i}\]
    4. Applied associate-*l*20.6

      \[\leadsto \frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\color{blue}{\left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right) \cdot \left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot y\right)} + c\right) \cdot y + i}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification28.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.69974851560525037 \cdot 10^{72}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}{\left(\left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot \sqrt[3]{\left(y + a\right) \cdot y + b}\right) \cdot \left(\sqrt[3]{\left(y + a\right) \cdot y + b} \cdot y\right) + c\right) \cdot y + i}\\ \end{array}\]

Reproduce

herbie shell --seed 2020049 +o rules:numerics
(FPCore (x y z t a b c i)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2"
  :precision binary64
  (/ (+ (* (+ (* (+ (* (+ (* x y) z) y) 27464.7644705) y) 230661.510616) y) t) (+ (* (+ (* (+ (* (+ y a) y) b) y) c) y) i)))