Average Error: 5.4 → 1.9
Time: 54.6s
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}\;t \le -1.7663475138560147 \cdot 10^{+51}:\\ \;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\right)\right)\\ \mathbf{elif}\;t \le 2.2461908709946448 \cdot 10^{+30}:\\ \;\;\;\;\left(\left(c \cdot b + \left(\left(\left(\left(t \cdot 18.0\right) \cdot x\right) \cdot z\right) \cdot y - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(27.0 \cdot j\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\right)\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}\;t \le -1.7663475138560147 \cdot 10^{+51}:\\
\;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\right)\right)\\

\mathbf{elif}\;t \le 2.2461908709946448 \cdot 10^{+30}:\\
\;\;\;\;\left(\left(c \cdot b + \left(\left(\left(\left(t \cdot 18.0\right) \cdot x\right) \cdot z\right) \cdot y - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(27.0 \cdot j\right) \cdot k\\

\mathbf{else}:\\
\;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\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 r3764434 = x;
        double r3764435 = 18.0;
        double r3764436 = r3764434 * r3764435;
        double r3764437 = y;
        double r3764438 = r3764436 * r3764437;
        double r3764439 = z;
        double r3764440 = r3764438 * r3764439;
        double r3764441 = t;
        double r3764442 = r3764440 * r3764441;
        double r3764443 = a;
        double r3764444 = 4.0;
        double r3764445 = r3764443 * r3764444;
        double r3764446 = r3764445 * r3764441;
        double r3764447 = r3764442 - r3764446;
        double r3764448 = b;
        double r3764449 = c;
        double r3764450 = r3764448 * r3764449;
        double r3764451 = r3764447 + r3764450;
        double r3764452 = r3764434 * r3764444;
        double r3764453 = i;
        double r3764454 = r3764452 * r3764453;
        double r3764455 = r3764451 - r3764454;
        double r3764456 = j;
        double r3764457 = 27.0;
        double r3764458 = r3764456 * r3764457;
        double r3764459 = k;
        double r3764460 = r3764458 * r3764459;
        double r3764461 = r3764455 - r3764460;
        return r3764461;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r3764462 = t;
        double r3764463 = -1.7663475138560147e+51;
        bool r3764464 = r3764462 <= r3764463;
        double r3764465 = k;
        double r3764466 = 27.0;
        double r3764467 = r3764465 * r3764466;
        double r3764468 = j;
        double r3764469 = r3764467 * r3764468;
        double r3764470 = r3764469 - r3764469;
        double r3764471 = c;
        double r3764472 = b;
        double r3764473 = y;
        double r3764474 = 18.0;
        double r3764475 = r3764473 * r3764474;
        double r3764476 = x;
        double r3764477 = z;
        double r3764478 = r3764476 * r3764477;
        double r3764479 = r3764475 * r3764478;
        double r3764480 = a;
        double r3764481 = 4.0;
        double r3764482 = r3764480 * r3764481;
        double r3764483 = r3764479 - r3764482;
        double r3764484 = r3764483 * r3764462;
        double r3764485 = fma(r3764471, r3764472, r3764484);
        double r3764486 = r3764476 * r3764481;
        double r3764487 = i;
        double r3764488 = fma(r3764486, r3764487, r3764469);
        double r3764489 = r3764485 - r3764488;
        double r3764490 = r3764470 + r3764489;
        double r3764491 = 2.2461908709946448e+30;
        bool r3764492 = r3764462 <= r3764491;
        double r3764493 = r3764471 * r3764472;
        double r3764494 = r3764462 * r3764474;
        double r3764495 = r3764494 * r3764476;
        double r3764496 = r3764495 * r3764477;
        double r3764497 = r3764496 * r3764473;
        double r3764498 = r3764482 * r3764462;
        double r3764499 = r3764497 - r3764498;
        double r3764500 = r3764493 + r3764499;
        double r3764501 = r3764486 * r3764487;
        double r3764502 = r3764500 - r3764501;
        double r3764503 = r3764466 * r3764468;
        double r3764504 = r3764503 * r3764465;
        double r3764505 = r3764502 - r3764504;
        double r3764506 = r3764492 ? r3764505 : r3764490;
        double r3764507 = r3764464 ? r3764490 : r3764506;
        return r3764507;
}

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 2 regimes
  2. if t < -1.7663475138560147e+51 or 2.2461908709946448e+30 < t

    1. Initial program 2.1

      \[\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. Using strategy rm
    3. Applied *-un-lft-identity2.1

      \[\leadsto \left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot \color{blue}{\left(1 \cdot t\right)} - \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\]
    4. Applied associate-*r*2.1

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot 1\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\]
    5. Simplified1.9

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

      \[\leadsto \left(\left(\left(\color{blue}{y \cdot \left(\left(\left(z \cdot x\right) \cdot 18.0\right) \cdot t\right)} - \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\]
    8. Using strategy rm
    9. Applied associate-*l*7.5

      \[\leadsto \left(\left(\left(y \cdot \color{blue}{\left(\left(z \cdot x\right) \cdot \left(18.0 \cdot t\right)\right)} - \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\]
    10. Using strategy rm
    11. Applied *-un-lft-identity7.5

      \[\leadsto \color{blue}{1 \cdot \left(\left(\left(y \cdot \left(\left(z \cdot x\right) \cdot \left(18.0 \cdot t\right)\right) - \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\]
    12. Applied prod-diff7.5

      \[\leadsto \color{blue}{\mathsf{fma}\left(1, \left(\left(y \cdot \left(\left(z \cdot x\right) \cdot \left(18.0 \cdot t\right)\right) - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i, -k \cdot \left(j \cdot 27.0\right)\right) + \mathsf{fma}\left(-k, j \cdot 27.0, k \cdot \left(j \cdot 27.0\right)\right)}\]
    13. Simplified2.0

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

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

    if -1.7663475138560147e+51 < t < 2.2461908709946448e+30

    1. Initial program 6.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. Using strategy rm
    3. Applied *-un-lft-identity6.8

      \[\leadsto \left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot \color{blue}{\left(1 \cdot t\right)} - \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\]
    4. Applied associate-*r*6.8

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot 1\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\]
    5. Simplified6.8

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

      \[\leadsto \left(\left(\left(\color{blue}{y \cdot \left(\left(\left(z \cdot x\right) \cdot 18.0\right) \cdot t\right)} - \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\]
    8. Using strategy rm
    9. Applied associate-*l*3.9

      \[\leadsto \left(\left(\left(y \cdot \color{blue}{\left(\left(z \cdot x\right) \cdot \left(18.0 \cdot t\right)\right)} - \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\]
    10. Using strategy rm
    11. Applied associate-*l*1.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.7663475138560147 \cdot 10^{+51}:\\ \;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\right)\right)\\ \mathbf{elif}\;t \le 2.2461908709946448 \cdot 10^{+30}:\\ \;\;\;\;\left(\left(c \cdot b + \left(\left(\left(\left(t \cdot 18.0\right) \cdot x\right) \cdot z\right) \cdot y - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(27.0 \cdot j\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(k \cdot 27.0\right) \cdot j - \left(k \cdot 27.0\right) \cdot j\right) + \left(\mathsf{fma}\left(c, b, \left(\left(y \cdot 18.0\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4.0, i, \left(k \cdot 27.0\right) \cdot j\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019142 +o rules:numerics
(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)))