Average Error: 5.3 → 4.8
Time: 33.9s
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}\;z \le -4.699495481705561 \cdot 10^{+36}:\\ \;\;\;\;\left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(\left(\left(z \cdot y\right) \cdot x\right) \cdot 18.0 - 4.0 \cdot a\right) + \left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\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}\;z \le -4.699495481705561 \cdot 10^{+36}:\\
\;\;\;\;\left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\

\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(z \cdot y\right) \cdot x\right) \cdot 18.0 - 4.0 \cdot a\right) + \left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\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 r5000487 = x;
        double r5000488 = 18.0;
        double r5000489 = r5000487 * r5000488;
        double r5000490 = y;
        double r5000491 = r5000489 * r5000490;
        double r5000492 = z;
        double r5000493 = r5000491 * r5000492;
        double r5000494 = t;
        double r5000495 = r5000493 * r5000494;
        double r5000496 = a;
        double r5000497 = 4.0;
        double r5000498 = r5000496 * r5000497;
        double r5000499 = r5000498 * r5000494;
        double r5000500 = r5000495 - r5000499;
        double r5000501 = b;
        double r5000502 = c;
        double r5000503 = r5000501 * r5000502;
        double r5000504 = r5000500 + r5000503;
        double r5000505 = r5000487 * r5000497;
        double r5000506 = i;
        double r5000507 = r5000505 * r5000506;
        double r5000508 = r5000504 - r5000507;
        double r5000509 = j;
        double r5000510 = 27.0;
        double r5000511 = r5000509 * r5000510;
        double r5000512 = k;
        double r5000513 = r5000511 * r5000512;
        double r5000514 = r5000508 - r5000513;
        return r5000514;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r5000515 = z;
        double r5000516 = -4.699495481705561e+36;
        bool r5000517 = r5000515 <= r5000516;
        double r5000518 = c;
        double r5000519 = b;
        double r5000520 = r5000518 * r5000519;
        double r5000521 = k;
        double r5000522 = j;
        double r5000523 = 27.0;
        double r5000524 = r5000522 * r5000523;
        double r5000525 = r5000521 * r5000524;
        double r5000526 = r5000520 - r5000525;
        double r5000527 = i;
        double r5000528 = x;
        double r5000529 = r5000527 * r5000528;
        double r5000530 = 4.0;
        double r5000531 = r5000529 * r5000530;
        double r5000532 = r5000526 - r5000531;
        double r5000533 = 18.0;
        double r5000534 = r5000533 * r5000528;
        double r5000535 = y;
        double r5000536 = r5000534 * r5000535;
        double r5000537 = r5000536 * r5000515;
        double r5000538 = a;
        double r5000539 = r5000530 * r5000538;
        double r5000540 = r5000537 - r5000539;
        double r5000541 = t;
        double r5000542 = r5000540 * r5000541;
        double r5000543 = r5000532 + r5000542;
        double r5000544 = r5000515 * r5000535;
        double r5000545 = r5000544 * r5000528;
        double r5000546 = r5000545 * r5000533;
        double r5000547 = r5000546 - r5000539;
        double r5000548 = r5000541 * r5000547;
        double r5000549 = r5000548 + r5000532;
        double r5000550 = r5000517 ? r5000543 : r5000549;
        return r5000550;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if z < -4.699495481705561e+36

    1. Initial program 7.6

      \[\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. Simplified14.5

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

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

    if -4.699495481705561e+36 < z

    1. Initial program 4.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -4.699495481705561 \cdot 10^{+36}:\\ \;\;\;\;\left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(\left(\left(z \cdot y\right) \cdot x\right) \cdot 18.0 - 4.0 \cdot a\right) + \left(\left(c \cdot b - k \cdot \left(j \cdot 27.0\right)\right) - \left(i \cdot x\right) \cdot 4.0\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019151 
(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)))