Average Error: 4.9 → 2.0
Time: 45.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}\;t \le -7.4130880817628 \cdot 10^{-93}:\\ \;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.0\right)\\ \mathbf{elif}\;t \le 4.287180086893717 \cdot 10^{+76}:\\ \;\;\;\;\mathsf{fma}\left(b, c, \left(\left(x \cdot t\right) \cdot \left(y \cdot 18.0\right)\right) \cdot z - \mathsf{fma}\left(4.0, \mathsf{fma}\left(t, a, i \cdot x\right), \left(k \cdot 27.0\right) \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.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}\;t \le -7.4130880817628 \cdot 10^{-93}:\\
\;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.0\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.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 r4960414 = x;
        double r4960415 = 18.0;
        double r4960416 = r4960414 * r4960415;
        double r4960417 = y;
        double r4960418 = r4960416 * r4960417;
        double r4960419 = z;
        double r4960420 = r4960418 * r4960419;
        double r4960421 = t;
        double r4960422 = r4960420 * r4960421;
        double r4960423 = a;
        double r4960424 = 4.0;
        double r4960425 = r4960423 * r4960424;
        double r4960426 = r4960425 * r4960421;
        double r4960427 = r4960422 - r4960426;
        double r4960428 = b;
        double r4960429 = c;
        double r4960430 = r4960428 * r4960429;
        double r4960431 = r4960427 + r4960430;
        double r4960432 = r4960414 * r4960424;
        double r4960433 = i;
        double r4960434 = r4960432 * r4960433;
        double r4960435 = r4960431 - r4960434;
        double r4960436 = j;
        double r4960437 = 27.0;
        double r4960438 = r4960436 * r4960437;
        double r4960439 = k;
        double r4960440 = r4960438 * r4960439;
        double r4960441 = r4960435 - r4960440;
        return r4960441;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r4960442 = t;
        double r4960443 = -7.4130880817628e-93;
        bool r4960444 = r4960442 <= r4960443;
        double r4960445 = b;
        double r4960446 = c;
        double r4960447 = r4960445 * r4960446;
        double r4960448 = x;
        double r4960449 = 18.0;
        double r4960450 = r4960448 * r4960449;
        double r4960451 = y;
        double r4960452 = r4960450 * r4960451;
        double r4960453 = z;
        double r4960454 = r4960452 * r4960453;
        double r4960455 = r4960454 * r4960442;
        double r4960456 = a;
        double r4960457 = 4.0;
        double r4960458 = r4960456 * r4960457;
        double r4960459 = r4960458 * r4960442;
        double r4960460 = r4960455 - r4960459;
        double r4960461 = r4960447 + r4960460;
        double r4960462 = r4960457 * r4960448;
        double r4960463 = i;
        double r4960464 = r4960462 * r4960463;
        double r4960465 = r4960461 - r4960464;
        double r4960466 = k;
        double r4960467 = j;
        double r4960468 = 27.0;
        double r4960469 = r4960467 * r4960468;
        double r4960470 = r4960466 * r4960469;
        double r4960471 = r4960465 - r4960470;
        double r4960472 = 4.287180086893717e+76;
        bool r4960473 = r4960442 <= r4960472;
        double r4960474 = r4960448 * r4960442;
        double r4960475 = r4960451 * r4960449;
        double r4960476 = r4960474 * r4960475;
        double r4960477 = r4960476 * r4960453;
        double r4960478 = r4960463 * r4960448;
        double r4960479 = fma(r4960442, r4960456, r4960478);
        double r4960480 = r4960466 * r4960468;
        double r4960481 = r4960480 * r4960467;
        double r4960482 = fma(r4960457, r4960479, r4960481);
        double r4960483 = r4960477 - r4960482;
        double r4960484 = fma(r4960445, r4960446, r4960483);
        double r4960485 = r4960473 ? r4960484 : r4960471;
        double r4960486 = r4960444 ? r4960471 : r4960485;
        return r4960486;
}

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 < -7.4130880817628e-93 or 4.287180086893717e+76 < t

    1. Initial program 2.3

      \[\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\]

    if -7.4130880817628e-93 < t < 4.287180086893717e+76

    1. Initial program 6.7

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(b, c, z \cdot \left(\left(t \cdot x\right) \cdot \left(y \cdot 18.0\right)\right) - \mathsf{fma}\left(4.0, \mathsf{fma}\left(t, a, x \cdot i\right), 27.0 \cdot \left(k \cdot j\right)\right)\right)}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity1.8

      \[\leadsto \mathsf{fma}\left(b, c, z \cdot \left(\left(t \cdot x\right) \cdot \left(y \cdot 18.0\right)\right) - \mathsf{fma}\left(4.0, \mathsf{fma}\left(t, a, x \cdot i\right), 27.0 \cdot \left(k \cdot \color{blue}{\left(1 \cdot j\right)}\right)\right)\right)\]
    5. Applied associate-*r*1.8

      \[\leadsto \mathsf{fma}\left(b, c, z \cdot \left(\left(t \cdot x\right) \cdot \left(y \cdot 18.0\right)\right) - \mathsf{fma}\left(4.0, \mathsf{fma}\left(t, a, x \cdot i\right), 27.0 \cdot \color{blue}{\left(\left(k \cdot 1\right) \cdot j\right)}\right)\right)\]
    6. Applied associate-*r*1.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -7.4130880817628 \cdot 10^{-93}:\\ \;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.0\right)\\ \mathbf{elif}\;t \le 4.287180086893717 \cdot 10^{+76}:\\ \;\;\;\;\mathsf{fma}\left(b, c, \left(\left(x \cdot t\right) \cdot \left(y \cdot 18.0\right)\right) \cdot z - \mathsf{fma}\left(4.0, \mathsf{fma}\left(t, a, i \cdot x\right), \left(k \cdot 27.0\right) \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(b \cdot c + \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)\right) - \left(4.0 \cdot x\right) \cdot i\right) - k \cdot \left(j \cdot 27.0\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019158 +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)))