Average Error: 5.7 → 4.1
Time: 16.7s
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}\;z \le -5.502401519030054 \cdot 10^{-23}:\\ \;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{elif}\;z \le 1.59245233661014477 \cdot 10^{46}:\\ \;\;\;\;\mathsf{fma}\left(t, {\left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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\\ \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}\;z \le -5.502401519030054 \cdot 10^{-23}:\\
\;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\

\mathbf{elif}\;z \le 1.59245233661014477 \cdot 10^{46}:\\
\;\;\;\;\mathsf{fma}\left(t, {\left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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\\

\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 r732489 = x;
        double r732490 = 18.0;
        double r732491 = r732489 * r732490;
        double r732492 = y;
        double r732493 = r732491 * r732492;
        double r732494 = z;
        double r732495 = r732493 * r732494;
        double r732496 = t;
        double r732497 = r732495 * r732496;
        double r732498 = a;
        double r732499 = 4.0;
        double r732500 = r732498 * r732499;
        double r732501 = r732500 * r732496;
        double r732502 = r732497 - r732501;
        double r732503 = b;
        double r732504 = c;
        double r732505 = r732503 * r732504;
        double r732506 = r732502 + r732505;
        double r732507 = r732489 * r732499;
        double r732508 = i;
        double r732509 = r732507 * r732508;
        double r732510 = r732506 - r732509;
        double r732511 = j;
        double r732512 = 27.0;
        double r732513 = r732511 * r732512;
        double r732514 = k;
        double r732515 = r732513 * r732514;
        double r732516 = r732510 - r732515;
        return r732516;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r732517 = z;
        double r732518 = -5.502401519030054e-23;
        bool r732519 = r732517 <= r732518;
        double r732520 = t;
        double r732521 = x;
        double r732522 = 18.0;
        double r732523 = y;
        double r732524 = r732522 * r732523;
        double r732525 = r732521 * r732524;
        double r732526 = r732525 * r732517;
        double r732527 = a;
        double r732528 = 4.0;
        double r732529 = r732527 * r732528;
        double r732530 = r732526 - r732529;
        double r732531 = b;
        double r732532 = c;
        double r732533 = r732531 * r732532;
        double r732534 = i;
        double r732535 = r732528 * r732534;
        double r732536 = j;
        double r732537 = 27.0;
        double r732538 = k;
        double r732539 = r732537 * r732538;
        double r732540 = r732536 * r732539;
        double r732541 = fma(r732521, r732535, r732540);
        double r732542 = r732533 - r732541;
        double r732543 = fma(r732520, r732530, r732542);
        double r732544 = 1.5924523366101448e+46;
        bool r732545 = r732517 <= r732544;
        double r732546 = r732517 * r732523;
        double r732547 = r732521 * r732546;
        double r732548 = r732522 * r732547;
        double r732549 = 1.0;
        double r732550 = pow(r732548, r732549);
        double r732551 = r732550 - r732529;
        double r732552 = r732536 * r732537;
        double r732553 = r732552 * r732538;
        double r732554 = fma(r732521, r732535, r732553);
        double r732555 = r732533 - r732554;
        double r732556 = fma(r732520, r732551, r732555);
        double r732557 = r732521 * r732522;
        double r732558 = r732557 * r732523;
        double r732559 = r732517 * r732520;
        double r732560 = r732558 * r732559;
        double r732561 = r732529 * r732520;
        double r732562 = r732560 - r732561;
        double r732563 = r732562 + r732533;
        double r732564 = r732521 * r732528;
        double r732565 = r732564 * r732534;
        double r732566 = r732563 - r732565;
        double r732567 = r732566 - r732553;
        double r732568 = r732545 ? r732556 : r732567;
        double r732569 = r732519 ? r732543 : r732568;
        return r732569;
}

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

Target

Original5.7
Target1.6
Herbie4.1
\[\begin{array}{l} \mathbf{if}\;t \lt -1.6210815397541398 \cdot 10^{-69}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \mathbf{elif}\;t \lt 165.680279438052224:\\ \;\;\;\;\left(\left(18 \cdot y\right) \cdot \left(x \cdot \left(z \cdot t\right)\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) + \left(c \cdot b - 27 \cdot \left(k \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if z < -5.502401519030054e-23

    1. Initial program 6.6

      \[\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. Simplified6.6

      \[\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*6.6

      \[\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)\]
    5. Using strategy rm
    6. Applied associate-*l*6.6

      \[\leadsto \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, \color{blue}{j \cdot \left(27 \cdot k\right)}\right)\right)\]

    if -5.502401519030054e-23 < z < 1.5924523366101448e+46

    1. Initial program 4.7

      \[\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. Simplified4.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 pow14.8

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

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

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

      \[\leadsto \mathsf{fma}\left(t, \left(\left(\color{blue}{{x}^{1}} \cdot {18}^{1}\right) \cdot {y}^{1}\right) \cdot {z}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
    8. Applied pow-prod-down4.8

      \[\leadsto \mathsf{fma}\left(t, \left(\color{blue}{{\left(x \cdot 18\right)}^{1}} \cdot {y}^{1}\right) \cdot {z}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
    9. Applied pow-prod-down4.8

      \[\leadsto \mathsf{fma}\left(t, \color{blue}{{\left(\left(x \cdot 18\right) \cdot y\right)}^{1}} \cdot {z}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
    10. Applied pow-prod-down4.8

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

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

    if 1.5924523366101448e+46 < z

    1. Initial program 7.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. Using strategy rm
    3. Applied associate-*l*9.7

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \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\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -5.502401519030054 \cdot 10^{-23}:\\ \;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{elif}\;z \le 1.59245233661014477 \cdot 10^{46}:\\ \;\;\;\;\mathsf{fma}\left(t, {\left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)}^{1} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))