Average Error: 5.6 → 3.8
Time: 6.3s
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.6966996671020817 \cdot 10^{-102} \lor \neg \left(t \le 3.74954460097544965 \cdot 10^{-26}\right):\\ \;\;\;\;\left(\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \cdot z\right)\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\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}\;t \le -1.6966996671020817 \cdot 10^{-102} \lor \neg \left(t \le 3.74954460097544965 \cdot 10^{-26}\right):\\
\;\;\;\;\left(\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \cdot z\right)\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\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 r148563 = x;
        double r148564 = 18.0;
        double r148565 = r148563 * r148564;
        double r148566 = y;
        double r148567 = r148565 * r148566;
        double r148568 = z;
        double r148569 = r148567 * r148568;
        double r148570 = t;
        double r148571 = r148569 * r148570;
        double r148572 = a;
        double r148573 = 4.0;
        double r148574 = r148572 * r148573;
        double r148575 = r148574 * r148570;
        double r148576 = r148571 - r148575;
        double r148577 = b;
        double r148578 = c;
        double r148579 = r148577 * r148578;
        double r148580 = r148576 + r148579;
        double r148581 = r148563 * r148573;
        double r148582 = i;
        double r148583 = r148581 * r148582;
        double r148584 = r148580 - r148583;
        double r148585 = j;
        double r148586 = 27.0;
        double r148587 = r148585 * r148586;
        double r148588 = k;
        double r148589 = r148587 * r148588;
        double r148590 = r148584 - r148589;
        return r148590;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r148591 = t;
        double r148592 = -1.6966996671020817e-102;
        bool r148593 = r148591 <= r148592;
        double r148594 = 3.7495446009754496e-26;
        bool r148595 = r148591 <= r148594;
        double r148596 = !r148595;
        bool r148597 = r148593 || r148596;
        double r148598 = x;
        double r148599 = 18.0;
        double r148600 = y;
        double r148601 = r148599 * r148600;
        double r148602 = z;
        double r148603 = r148601 * r148602;
        double r148604 = r148598 * r148603;
        double r148605 = r148604 * r148591;
        double r148606 = a;
        double r148607 = 4.0;
        double r148608 = r148606 * r148607;
        double r148609 = r148608 * r148591;
        double r148610 = r148605 - r148609;
        double r148611 = b;
        double r148612 = c;
        double r148613 = r148611 * r148612;
        double r148614 = r148610 + r148613;
        double r148615 = r148598 * r148607;
        double r148616 = i;
        double r148617 = r148615 * r148616;
        double r148618 = r148614 - r148617;
        double r148619 = j;
        double r148620 = 27.0;
        double r148621 = k;
        double r148622 = r148620 * r148621;
        double r148623 = r148619 * r148622;
        double r148624 = r148618 - r148623;
        double r148625 = r148598 * r148599;
        double r148626 = r148625 * r148600;
        double r148627 = r148602 * r148591;
        double r148628 = r148626 * r148627;
        double r148629 = r148628 - r148609;
        double r148630 = r148629 + r148613;
        double r148631 = r148630 - r148617;
        double r148632 = r148619 * r148620;
        double r148633 = r148632 * r148621;
        double r148634 = r148631 - r148633;
        double r148635 = r148597 ? r148624 : r148634;
        return r148635;
}

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 t < -1.6966996671020817e-102 or 3.7495446009754496e-26 < t

    1. Initial program 2.4

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

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

      \[\leadsto \left(\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\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) - \color{blue}{j \cdot \left(27 \cdot k\right)}\]
    6. Using strategy rm
    7. Applied associate-*l*3.0

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

    if -1.6966996671020817e-102 < t < 3.7495446009754496e-26

    1. Initial program 8.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*4.6

      \[\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 2 regimes into one program.
  4. Final simplification3.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.6966996671020817 \cdot 10^{-102} \lor \neg \left(t \le 3.74954460097544965 \cdot 10^{-26}\right):\\ \;\;\;\;\left(\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \cdot z\right)\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\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 2020049 
(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)))