Average Error: 5.6 → 2.1
Time: 29.4s
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 -263371289885747968 \lor \neg \left(z \le 1.255594091630913827396134314174144965199 \cdot 10^{-148}\right):\\ \;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(x \cdot 18\right)\right) \cdot y\right) \cdot z - \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\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\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 -263371289885747968 \lor \neg \left(z \le 1.255594091630913827396134314174144965199 \cdot 10^{-148}\right):\\
\;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(x \cdot 18\right)\right) \cdot y\right) \cdot z - \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\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\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 r110507 = x;
        double r110508 = 18.0;
        double r110509 = r110507 * r110508;
        double r110510 = y;
        double r110511 = r110509 * r110510;
        double r110512 = z;
        double r110513 = r110511 * r110512;
        double r110514 = t;
        double r110515 = r110513 * r110514;
        double r110516 = a;
        double r110517 = 4.0;
        double r110518 = r110516 * r110517;
        double r110519 = r110518 * r110514;
        double r110520 = r110515 - r110519;
        double r110521 = b;
        double r110522 = c;
        double r110523 = r110521 * r110522;
        double r110524 = r110520 + r110523;
        double r110525 = r110507 * r110517;
        double r110526 = i;
        double r110527 = r110525 * r110526;
        double r110528 = r110524 - r110527;
        double r110529 = j;
        double r110530 = 27.0;
        double r110531 = r110529 * r110530;
        double r110532 = k;
        double r110533 = r110531 * r110532;
        double r110534 = r110528 - r110533;
        return r110534;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r110535 = z;
        double r110536 = -2.6337128988574797e+17;
        bool r110537 = r110535 <= r110536;
        double r110538 = 1.2555940916309138e-148;
        bool r110539 = r110535 <= r110538;
        double r110540 = !r110539;
        bool r110541 = r110537 || r110540;
        double r110542 = t;
        double r110543 = x;
        double r110544 = 18.0;
        double r110545 = r110543 * r110544;
        double r110546 = r110542 * r110545;
        double r110547 = y;
        double r110548 = r110546 * r110547;
        double r110549 = r110548 * r110535;
        double r110550 = a;
        double r110551 = 4.0;
        double r110552 = r110550 * r110551;
        double r110553 = r110552 * r110542;
        double r110554 = r110549 - r110553;
        double r110555 = b;
        double r110556 = c;
        double r110557 = r110555 * r110556;
        double r110558 = r110554 + r110557;
        double r110559 = r110543 * r110551;
        double r110560 = i;
        double r110561 = r110559 * r110560;
        double r110562 = r110558 - r110561;
        double r110563 = j;
        double r110564 = 27.0;
        double r110565 = r110563 * r110564;
        double r110566 = k;
        double r110567 = r110565 * r110566;
        double r110568 = r110562 - r110567;
        double r110569 = r110535 * r110547;
        double r110570 = r110543 * r110569;
        double r110571 = r110542 * r110570;
        double r110572 = r110544 * r110571;
        double r110573 = r110572 - r110553;
        double r110574 = r110573 + r110557;
        double r110575 = r110574 - r110561;
        double r110576 = r110575 - r110567;
        double r110577 = r110541 ? r110568 : r110576;
        return r110577;
}

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 < -2.6337128988574797e+17 or 1.2555940916309138e-148 < z

    1. Initial program 6.5

      \[\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. Taylor expanded around inf 10.2

      \[\leadsto \left(\left(\left(\color{blue}{18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\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. Simplified2.8

      \[\leadsto \left(\left(\left(\color{blue}{\left(t \cdot \left(\left(x \cdot 18\right) \cdot y\right)\right) \cdot z} - \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\]
    4. Using strategy rm
    5. Applied associate-*r*2.8

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

    if -2.6337128988574797e+17 < z < 1.2555940916309138e-148

    1. Initial program 4.5

      \[\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. Taylor expanded around inf 1.1

      \[\leadsto \left(\left(\left(\color{blue}{18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\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. Simplified7.2

      \[\leadsto \left(\left(\left(\color{blue}{\left(t \cdot \left(\left(x \cdot 18\right) \cdot y\right)\right) \cdot z} - \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\]
    4. Taylor expanded around inf 1.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -263371289885747968 \lor \neg \left(z \le 1.255594091630913827396134314174144965199 \cdot 10^{-148}\right):\\ \;\;\;\;\left(\left(\left(\left(\left(t \cdot \left(x \cdot 18\right)\right) \cdot y\right) \cdot z - \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\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\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 2019305 +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)))