Average Error: 29.5 → 28.8
Time: 9.8s
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}\;\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} \le 1.0848236090199319 \cdot 10^{299}:\\ \;\;\;\;\frac{\left(\left(\left(\sqrt[3]{x \cdot y + z} \cdot \sqrt[3]{x \cdot y + z}\right) \cdot \left(\sqrt[3]{x \cdot y + z} \cdot y\right) + 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}\\ \mathbf{else}:\\ \;\;\;\;\log \left({\left(e^{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}\right)}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.764470499998\right), y, 230661.510616000014\right), y, t\right)\right)}\right)\\ \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}\;\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} \le 1.0848236090199319 \cdot 10^{299}:\\
\;\;\;\;\frac{\left(\left(\left(\sqrt[3]{x \cdot y + z} \cdot \sqrt[3]{x \cdot y + z}\right) \cdot \left(\sqrt[3]{x \cdot y + z} \cdot y\right) + 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}\\

\mathbf{else}:\\
\;\;\;\;\log \left({\left(e^{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}\right)}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.764470499998\right), y, 230661.510616000014\right), y, t\right)\right)}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r93406 = x;
        double r93407 = y;
        double r93408 = r93406 * r93407;
        double r93409 = z;
        double r93410 = r93408 + r93409;
        double r93411 = r93410 * r93407;
        double r93412 = 27464.7644705;
        double r93413 = r93411 + r93412;
        double r93414 = r93413 * r93407;
        double r93415 = 230661.510616;
        double r93416 = r93414 + r93415;
        double r93417 = r93416 * r93407;
        double r93418 = t;
        double r93419 = r93417 + r93418;
        double r93420 = a;
        double r93421 = r93407 + r93420;
        double r93422 = r93421 * r93407;
        double r93423 = b;
        double r93424 = r93422 + r93423;
        double r93425 = r93424 * r93407;
        double r93426 = c;
        double r93427 = r93425 + r93426;
        double r93428 = r93427 * r93407;
        double r93429 = i;
        double r93430 = r93428 + r93429;
        double r93431 = r93419 / r93430;
        return r93431;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i) {
        double r93432 = x;
        double r93433 = y;
        double r93434 = r93432 * r93433;
        double r93435 = z;
        double r93436 = r93434 + r93435;
        double r93437 = r93436 * r93433;
        double r93438 = 27464.7644705;
        double r93439 = r93437 + r93438;
        double r93440 = r93439 * r93433;
        double r93441 = 230661.510616;
        double r93442 = r93440 + r93441;
        double r93443 = r93442 * r93433;
        double r93444 = t;
        double r93445 = r93443 + r93444;
        double r93446 = a;
        double r93447 = r93433 + r93446;
        double r93448 = r93447 * r93433;
        double r93449 = b;
        double r93450 = r93448 + r93449;
        double r93451 = r93450 * r93433;
        double r93452 = c;
        double r93453 = r93451 + r93452;
        double r93454 = r93453 * r93433;
        double r93455 = i;
        double r93456 = r93454 + r93455;
        double r93457 = r93445 / r93456;
        double r93458 = 1.0848236090199319e+299;
        bool r93459 = r93457 <= r93458;
        double r93460 = cbrt(r93436);
        double r93461 = r93460 * r93460;
        double r93462 = r93460 * r93433;
        double r93463 = r93461 * r93462;
        double r93464 = r93463 + r93438;
        double r93465 = r93464 * r93433;
        double r93466 = r93465 + r93441;
        double r93467 = r93466 * r93433;
        double r93468 = r93467 + r93444;
        double r93469 = r93468 / r93456;
        double r93470 = 1.0;
        double r93471 = fma(r93447, r93433, r93449);
        double r93472 = fma(r93471, r93433, r93452);
        double r93473 = fma(r93472, r93433, r93455);
        double r93474 = r93470 / r93473;
        double r93475 = exp(r93474);
        double r93476 = fma(r93432, r93433, r93435);
        double r93477 = fma(r93476, r93433, r93438);
        double r93478 = fma(r93477, r93433, r93441);
        double r93479 = fma(r93478, r93433, r93444);
        double r93480 = pow(r93475, r93479);
        double r93481 = log(r93480);
        double r93482 = r93459 ? r93469 : r93481;
        return r93482;
}

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 (/ (+ (* (+ (* (+ (* (+ (* x y) z) y) 27464.7644705) y) 230661.510616) y) t) (+ (* (+ (* (+ (* (+ y a) y) b) y) c) y) i)) < 1.0848236090199319e+299

    1. Initial program 5.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-cbrt5.6

      \[\leadsto \frac{\left(\left(\color{blue}{\left(\left(\sqrt[3]{x \cdot y + z} \cdot \sqrt[3]{x \cdot y + z}\right) \cdot \sqrt[3]{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}\]
    4. Applied associate-*l*5.6

      \[\leadsto \frac{\left(\left(\color{blue}{\left(\sqrt[3]{x \cdot y + z} \cdot \sqrt[3]{x \cdot y + z}\right) \cdot \left(\sqrt[3]{x \cdot y + z} \cdot y\right)} + 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}\]

    if 1.0848236090199319e+299 < (/ (+ (* (+ (* (+ (* (+ (* x y) z) y) 27464.7644705) y) 230661.510616) y) t) (+ (* (+ (* (+ (* (+ y a) y) b) y) c) y) i))

    1. Initial program 63.7

      \[\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 clear-num63.7

      \[\leadsto \color{blue}{\frac{1}{\frac{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i}{\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t}}}\]
    4. Using strategy rm
    5. Applied associate-/r/63.7

      \[\leadsto \color{blue}{\frac{1}{\left(\left(\left(y + a\right) \cdot y + b\right) \cdot y + c\right) \cdot y + i} \cdot \left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t\right)}\]
    6. Simplified63.7

      \[\leadsto \color{blue}{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}} \cdot \left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t\right)\]
    7. Using strategy rm
    8. Applied add-log-exp64.0

      \[\leadsto \color{blue}{\log \left(e^{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)} \cdot \left(\left(\left(\left(x \cdot y + z\right) \cdot y + 27464.764470499998\right) \cdot y + 230661.510616000014\right) \cdot y + t\right)}\right)}\]
    9. Simplified61.8

      \[\leadsto \log \color{blue}{\left({\left(e^{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}\right)}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.764470499998\right), y, 230661.510616000014\right), y, t\right)\right)}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification28.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\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} \le 1.0848236090199319 \cdot 10^{299}:\\ \;\;\;\;\frac{\left(\left(\left(\sqrt[3]{x \cdot y + z} \cdot \sqrt[3]{x \cdot y + z}\right) \cdot \left(\sqrt[3]{x \cdot y + z} \cdot y\right) + 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}\\ \mathbf{else}:\\ \;\;\;\;\log \left({\left(e^{\frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(y + a, y, b\right), y, c\right), y, i\right)}}\right)}^{\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(x, y, z\right), y, 27464.764470499998\right), y, 230661.510616000014\right), y, t\right)\right)}\right)\\ \end{array}\]

Reproduce

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