Average Error: 5.5 → 4.5
Time: 14.5s
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 -9.43870104285667569 \cdot 10^{-113} \lor \neg \left(t \le 4.14975218447289767 \cdot 10^{-87}\right):\\ \;\;\;\;\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(\sqrt[3]{\left(j \cdot 27\right) \cdot k} \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right) \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \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 -9.43870104285667569 \cdot 10^{-113} \lor \neg \left(t \le 4.14975218447289767 \cdot 10^{-87}\right):\\
\;\;\;\;\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(\sqrt[3]{\left(j \cdot 27\right) \cdot k} \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right) \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\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 r139433 = x;
        double r139434 = 18.0;
        double r139435 = r139433 * r139434;
        double r139436 = y;
        double r139437 = r139435 * r139436;
        double r139438 = z;
        double r139439 = r139437 * r139438;
        double r139440 = t;
        double r139441 = r139439 * r139440;
        double r139442 = a;
        double r139443 = 4.0;
        double r139444 = r139442 * r139443;
        double r139445 = r139444 * r139440;
        double r139446 = r139441 - r139445;
        double r139447 = b;
        double r139448 = c;
        double r139449 = r139447 * r139448;
        double r139450 = r139446 + r139449;
        double r139451 = r139433 * r139443;
        double r139452 = i;
        double r139453 = r139451 * r139452;
        double r139454 = r139450 - r139453;
        double r139455 = j;
        double r139456 = 27.0;
        double r139457 = r139455 * r139456;
        double r139458 = k;
        double r139459 = r139457 * r139458;
        double r139460 = r139454 - r139459;
        return r139460;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r139461 = t;
        double r139462 = -9.438701042856676e-113;
        bool r139463 = r139461 <= r139462;
        double r139464 = 4.149752184472898e-87;
        bool r139465 = r139461 <= r139464;
        double r139466 = !r139465;
        bool r139467 = r139463 || r139466;
        double r139468 = x;
        double r139469 = 18.0;
        double r139470 = r139468 * r139469;
        double r139471 = y;
        double r139472 = r139470 * r139471;
        double r139473 = z;
        double r139474 = r139472 * r139473;
        double r139475 = a;
        double r139476 = 4.0;
        double r139477 = r139475 * r139476;
        double r139478 = r139474 - r139477;
        double r139479 = b;
        double r139480 = c;
        double r139481 = r139479 * r139480;
        double r139482 = i;
        double r139483 = r139476 * r139482;
        double r139484 = j;
        double r139485 = 27.0;
        double r139486 = r139484 * r139485;
        double r139487 = k;
        double r139488 = r139486 * r139487;
        double r139489 = cbrt(r139488);
        double r139490 = r139489 * r139489;
        double r139491 = r139490 * r139489;
        double r139492 = fma(r139468, r139483, r139491);
        double r139493 = r139481 - r139492;
        double r139494 = fma(r139461, r139478, r139493);
        double r139495 = 0.0;
        double r139496 = r139495 - r139477;
        double r139497 = fma(r139468, r139483, r139488);
        double r139498 = r139481 - r139497;
        double r139499 = fma(r139461, r139496, r139498);
        double r139500 = r139467 ? r139494 : r139499;
        return r139500;
}

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 < -9.438701042856676e-113 or 4.149752184472898e-87 < t

    1. Initial program 2.9

      \[\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. Simplified2.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt3.1

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

    if -9.438701042856676e-113 < t < 4.149752184472898e-87

    1. Initial program 8.9

      \[\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. Simplified9.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)}\]
    3. Taylor expanded around 0 6.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -9.43870104285667569 \cdot 10^{-113} \lor \neg \left(t \le 4.14975218447289767 \cdot 10^{-87}\right):\\ \;\;\;\;\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(\sqrt[3]{\left(j \cdot 27\right) \cdot k} \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right) \cdot \sqrt[3]{\left(j \cdot 27\right) \cdot k}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \end{array}\]

Reproduce

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