Average Error: 5.7 → 4.8
Time: 18.1s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\
\;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\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 r147538 = x;
        double r147539 = 18.0;
        double r147540 = r147538 * r147539;
        double r147541 = y;
        double r147542 = r147540 * r147541;
        double r147543 = z;
        double r147544 = r147542 * r147543;
        double r147545 = t;
        double r147546 = r147544 * r147545;
        double r147547 = a;
        double r147548 = 4.0;
        double r147549 = r147547 * r147548;
        double r147550 = r147549 * r147545;
        double r147551 = r147546 - r147550;
        double r147552 = b;
        double r147553 = c;
        double r147554 = r147552 * r147553;
        double r147555 = r147551 + r147554;
        double r147556 = r147538 * r147548;
        double r147557 = i;
        double r147558 = r147556 * r147557;
        double r147559 = r147555 - r147558;
        double r147560 = j;
        double r147561 = 27.0;
        double r147562 = r147560 * r147561;
        double r147563 = k;
        double r147564 = r147562 * r147563;
        double r147565 = r147559 - r147564;
        return r147565;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r147566 = t;
        double r147567 = -1.8161049893400003e-100;
        bool r147568 = r147566 <= r147567;
        double r147569 = x;
        double r147570 = 18.0;
        double r147571 = r147569 * r147570;
        double r147572 = y;
        double r147573 = z;
        double r147574 = r147572 * r147573;
        double r147575 = r147571 * r147574;
        double r147576 = a;
        double r147577 = 4.0;
        double r147578 = r147576 * r147577;
        double r147579 = r147575 - r147578;
        double r147580 = b;
        double r147581 = c;
        double r147582 = r147580 * r147581;
        double r147583 = i;
        double r147584 = r147577 * r147583;
        double r147585 = j;
        double r147586 = 27.0;
        double r147587 = r147585 * r147586;
        double r147588 = k;
        double r147589 = r147587 * r147588;
        double r147590 = fma(r147569, r147584, r147589);
        double r147591 = r147582 - r147590;
        double r147592 = fma(r147566, r147579, r147591);
        double r147593 = 1.9453967838922817e-140;
        bool r147594 = r147566 <= r147593;
        double r147595 = 0.0;
        double r147596 = r147595 - r147578;
        double r147597 = fma(r147566, r147596, r147591);
        double r147598 = r147570 * r147572;
        double r147599 = r147569 * r147598;
        double r147600 = r147599 * r147573;
        double r147601 = r147600 - r147578;
        double r147602 = fma(r147566, r147601, r147591);
        double r147603 = r147594 ? r147597 : r147602;
        double r147604 = r147568 ? r147592 : r147603;
        return r147604;
}

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 < -1.8161049893400003e-100

    1. Initial program 3.3

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Simplified3.3

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

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

    if -1.8161049893400003e-100 < t < 1.9453967838922817e-140

    1. Initial program 8.9

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

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

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

    if 1.9453967838922817e-140 < t

    1. Initial program 3.8

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Simplified3.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  :precision binary64
  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))