Average Error: 5.3 → 4.5
Time: 41.6s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;t \le -6.101903851563751 \cdot 10^{-120}:\\ \;\;\;\;\mathsf{fma}\left(\left(\left(z \cdot y\right) \cdot \left(x \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \mathbf{elif}\;t \le 5.017735877809698 \cdot 10^{-162}:\\ \;\;\;\;\mathsf{fma}\left(\left(a \cdot \left(-4.0\right)\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(z \cdot \left(\left(x \cdot y\right) \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -6.101903851563751 \cdot 10^{-120}:\\
\;\;\;\;\mathsf{fma}\left(\left(\left(z \cdot y\right) \cdot \left(x \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\

\mathbf{elif}\;t \le 5.017735877809698 \cdot 10^{-162}:\\
\;\;\;\;\mathsf{fma}\left(\left(a \cdot \left(-4.0\right)\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(z \cdot \left(\left(x \cdot y\right) \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r3668505 = x;
        double r3668506 = 18.0;
        double r3668507 = r3668505 * r3668506;
        double r3668508 = y;
        double r3668509 = r3668507 * r3668508;
        double r3668510 = z;
        double r3668511 = r3668509 * r3668510;
        double r3668512 = t;
        double r3668513 = r3668511 * r3668512;
        double r3668514 = a;
        double r3668515 = 4.0;
        double r3668516 = r3668514 * r3668515;
        double r3668517 = r3668516 * r3668512;
        double r3668518 = r3668513 - r3668517;
        double r3668519 = b;
        double r3668520 = c;
        double r3668521 = r3668519 * r3668520;
        double r3668522 = r3668518 + r3668521;
        double r3668523 = r3668505 * r3668515;
        double r3668524 = i;
        double r3668525 = r3668523 * r3668524;
        double r3668526 = r3668522 - r3668525;
        double r3668527 = j;
        double r3668528 = 27.0;
        double r3668529 = r3668527 * r3668528;
        double r3668530 = k;
        double r3668531 = r3668529 * r3668530;
        double r3668532 = r3668526 - r3668531;
        return r3668532;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r3668533 = t;
        double r3668534 = -6.101903851563751e-120;
        bool r3668535 = r3668533 <= r3668534;
        double r3668536 = z;
        double r3668537 = y;
        double r3668538 = r3668536 * r3668537;
        double r3668539 = x;
        double r3668540 = 18.0;
        double r3668541 = r3668539 * r3668540;
        double r3668542 = r3668538 * r3668541;
        double r3668543 = a;
        double r3668544 = 4.0;
        double r3668545 = r3668543 * r3668544;
        double r3668546 = r3668542 - r3668545;
        double r3668547 = b;
        double r3668548 = c;
        double r3668549 = r3668547 * r3668548;
        double r3668550 = k;
        double r3668551 = 27.0;
        double r3668552 = j;
        double r3668553 = r3668551 * r3668552;
        double r3668554 = r3668539 * r3668544;
        double r3668555 = i;
        double r3668556 = r3668554 * r3668555;
        double r3668557 = fma(r3668550, r3668553, r3668556);
        double r3668558 = r3668549 - r3668557;
        double r3668559 = fma(r3668546, r3668533, r3668558);
        double r3668560 = 5.017735877809698e-162;
        bool r3668561 = r3668533 <= r3668560;
        double r3668562 = -r3668544;
        double r3668563 = r3668543 * r3668562;
        double r3668564 = fma(r3668563, r3668533, r3668558);
        double r3668565 = r3668539 * r3668537;
        double r3668566 = r3668565 * r3668540;
        double r3668567 = r3668536 * r3668566;
        double r3668568 = r3668567 - r3668545;
        double r3668569 = fma(r3668568, r3668533, r3668558);
        double r3668570 = r3668561 ? r3668564 : r3668569;
        double r3668571 = r3668535 ? r3668559 : r3668570;
        return r3668571;
}

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

Bits error versus j

Bits error versus k

Derivation

  1. Split input into 3 regimes
  2. if t < -6.101903851563751e-120

    1. Initial program 3.0

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified3.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)}\]
    3. Using strategy rm
    4. Applied associate-*l*3.5

      \[\leadsto \mathsf{fma}\left(\left(\color{blue}{\left(x \cdot 18.0\right) \cdot \left(y \cdot z\right)} - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\]

    if -6.101903851563751e-120 < t < 5.017735877809698e-162

    1. Initial program 8.9

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified8.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)}\]
    3. Taylor expanded around 0 5.9

      \[\leadsto \mathsf{fma}\left(\left(\color{blue}{0} - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\]

    if 5.017735877809698e-162 < t

    1. Initial program 3.9

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified3.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)}\]
    3. Using strategy rm
    4. Applied associate-*l*3.9

      \[\leadsto \mathsf{fma}\left(\left(\color{blue}{\left(x \cdot \left(18.0 \cdot y\right)\right)} \cdot z - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\]
    5. Taylor expanded around 0 3.9

      \[\leadsto \mathsf{fma}\left(\left(\color{blue}{\left(18.0 \cdot \left(x \cdot y\right)\right)} \cdot z - a \cdot 4.0\right), t, \left(c \cdot b - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -6.101903851563751 \cdot 10^{-120}:\\ \;\;\;\;\mathsf{fma}\left(\left(\left(z \cdot y\right) \cdot \left(x \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \mathbf{elif}\;t \le 5.017735877809698 \cdot 10^{-162}:\\ \;\;\;\;\mathsf{fma}\left(\left(a \cdot \left(-4.0\right)\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(z \cdot \left(\left(x \cdot y\right) \cdot 18.0\right) - a \cdot 4.0\right), t, \left(b \cdot c - \mathsf{fma}\left(k, \left(27.0 \cdot j\right), \left(\left(x \cdot 4.0\right) \cdot i\right)\right)\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019129 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  (- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))