Average Error: 28.6 → 10.7
Time: 39.9s
Precision: 64
\[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\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.115442638042938764322347599639232915618 \cdot 10^{44} \lor \neg \left(y \le 5.660347026355407697598823994415316445547 \cdot 10^{100}\right):\\ \;\;\;\;x + \frac{z}{y}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}\\ \end{array}\]
\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\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.115442638042938764322347599639232915618 \cdot 10^{44} \lor \neg \left(y \le 5.660347026355407697598823994415316445547 \cdot 10^{100}\right):\\
\;\;\;\;x + \frac{z}{y}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r101572 = x;
        double r101573 = y;
        double r101574 = r101572 * r101573;
        double r101575 = z;
        double r101576 = r101574 + r101575;
        double r101577 = r101576 * r101573;
        double r101578 = 27464.7644705;
        double r101579 = r101577 + r101578;
        double r101580 = r101579 * r101573;
        double r101581 = 230661.510616;
        double r101582 = r101580 + r101581;
        double r101583 = r101582 * r101573;
        double r101584 = t;
        double r101585 = r101583 + r101584;
        double r101586 = a;
        double r101587 = r101573 + r101586;
        double r101588 = r101587 * r101573;
        double r101589 = b;
        double r101590 = r101588 + r101589;
        double r101591 = r101590 * r101573;
        double r101592 = c;
        double r101593 = r101591 + r101592;
        double r101594 = r101593 * r101573;
        double r101595 = i;
        double r101596 = r101594 + r101595;
        double r101597 = r101585 / r101596;
        return r101597;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r101598 = y;
        double r101599 = -1.1154426380429388e+44;
        bool r101600 = r101598 <= r101599;
        double r101601 = 5.660347026355408e+100;
        bool r101602 = r101598 <= r101601;
        double r101603 = !r101602;
        bool r101604 = r101600 || r101603;
        double r101605 = x;
        double r101606 = z;
        double r101607 = r101606 / r101598;
        double r101608 = r101605 + r101607;
        double r101609 = r101605 * r101598;
        double r101610 = r101609 + r101606;
        double r101611 = r101610 * r101598;
        double r101612 = 27464.7644705;
        double r101613 = r101611 + r101612;
        double r101614 = r101613 * r101598;
        double r101615 = 230661.510616;
        double r101616 = r101614 + r101615;
        double r101617 = r101616 * r101598;
        double r101618 = t;
        double r101619 = r101617 + r101618;
        double r101620 = 1.0;
        double r101621 = a;
        double r101622 = r101598 + r101621;
        double r101623 = b;
        double r101624 = fma(r101622, r101598, r101623);
        double r101625 = c;
        double r101626 = fma(r101624, r101598, r101625);
        double r101627 = i;
        double r101628 = fma(r101626, r101598, r101627);
        double r101629 = r101620 / r101628;
        double r101630 = r101619 * r101629;
        double r101631 = r101604 ? r101608 : r101630;
        return r101631;
}

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

Derivation

  1. Split input into 2 regimes
  2. if y < -1.1154426380429388e+44 or 5.660347026355408e+100 < y

    1. Initial program 62.6

      \[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\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-cbrt62.6

      \[\leadsto \frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t}{\color{blue}{\left(\sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i} \cdot \sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}\right) \cdot \sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}}\]
    4. Applied associate-/r*62.6

      \[\leadsto \color{blue}{\frac{\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t}{\sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i} \cdot \sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}}{\sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}}\]
    5. Simplified62.6

      \[\leadsto \frac{\color{blue}{\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.7644704999984242022037506103515625\right), y, 230661.5106160000141244381666183471679688\right), y, t\right)}{\sqrt[3]{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}}}{\sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}\]
    6. Using strategy rm
    7. Applied associate-/r*62.6

      \[\leadsto \frac{\color{blue}{\frac{\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.7644704999984242022037506103515625\right), y, 230661.5106160000141244381666183471679688\right), y, t\right)}{\sqrt[3]{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}}{\sqrt[3]{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}}}{\sqrt[3]{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}\]
    8. Taylor expanded around inf 16.7

      \[\leadsto \color{blue}{x + \frac{z}{y}}\]

    if -1.1154426380429388e+44 < y < 5.660347026355408e+100

    1. Initial program 6.7

      \[\frac{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\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 div-inv6.8

      \[\leadsto \color{blue}{\left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t\right) \cdot \frac{1}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}}\]
    4. Simplified6.8

      \[\leadsto \left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t\right) \cdot \color{blue}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification10.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.115442638042938764322347599639232915618 \cdot 10^{44} \lor \neg \left(y \le 5.660347026355407697598823994415316445547 \cdot 10^{100}\right):\\ \;\;\;\;x + \frac{z}{y}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.7644704999984242022037506103515625\right) \cdot y + 230661.5106160000141244381666183471679688\right) \cdot y + t\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}\\ \end{array}\]

Reproduce

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