Average Error: 11.4 → 10.9
Time: 30.7s
Precision: 64
\[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
\[\begin{array}{l} \mathbf{if}\;j \le -7.828445817805927 \cdot 10^{-124}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right)\right)\\ \mathbf{elif}\;j \le 2.0565799039435203 \cdot 10^{-108}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \left(y \cdot z - t \cdot a\right) \cdot x - \left(i \cdot j\right) \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right)\right)\\ \end{array}\]
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\begin{array}{l}
\mathbf{if}\;j \le -7.828445817805927 \cdot 10^{-124}:\\
\;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right)\right)\\

\mathbf{elif}\;j \le 2.0565799039435203 \cdot 10^{-108}:\\
\;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \left(y \cdot z - t \cdot a\right) \cdot x - \left(i \cdot j\right) \cdot y\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\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 r3472428 = x;
        double r3472429 = y;
        double r3472430 = z;
        double r3472431 = r3472429 * r3472430;
        double r3472432 = t;
        double r3472433 = a;
        double r3472434 = r3472432 * r3472433;
        double r3472435 = r3472431 - r3472434;
        double r3472436 = r3472428 * r3472435;
        double r3472437 = b;
        double r3472438 = c;
        double r3472439 = r3472438 * r3472430;
        double r3472440 = i;
        double r3472441 = r3472440 * r3472433;
        double r3472442 = r3472439 - r3472441;
        double r3472443 = r3472437 * r3472442;
        double r3472444 = r3472436 - r3472443;
        double r3472445 = j;
        double r3472446 = r3472438 * r3472432;
        double r3472447 = r3472440 * r3472429;
        double r3472448 = r3472446 - r3472447;
        double r3472449 = r3472445 * r3472448;
        double r3472450 = r3472444 + r3472449;
        return r3472450;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r3472451 = j;
        double r3472452 = -7.828445817805927e-124;
        bool r3472453 = r3472451 <= r3472452;
        double r3472454 = i;
        double r3472455 = a;
        double r3472456 = r3472454 * r3472455;
        double r3472457 = c;
        double r3472458 = z;
        double r3472459 = r3472457 * r3472458;
        double r3472460 = r3472456 - r3472459;
        double r3472461 = b;
        double r3472462 = t;
        double r3472463 = r3472462 * r3472457;
        double r3472464 = y;
        double r3472465 = r3472454 * r3472464;
        double r3472466 = r3472463 - r3472465;
        double r3472467 = x;
        double r3472468 = r3472464 * r3472458;
        double r3472469 = r3472462 * r3472455;
        double r3472470 = r3472468 - r3472469;
        double r3472471 = cbrt(r3472470);
        double r3472472 = r3472467 * r3472471;
        double r3472473 = r3472471 * r3472471;
        double r3472474 = r3472472 * r3472473;
        double r3472475 = fma(r3472466, r3472451, r3472474);
        double r3472476 = fma(r3472460, r3472461, r3472475);
        double r3472477 = 2.0565799039435203e-108;
        bool r3472478 = r3472451 <= r3472477;
        double r3472479 = r3472470 * r3472467;
        double r3472480 = r3472454 * r3472451;
        double r3472481 = r3472480 * r3472464;
        double r3472482 = r3472479 - r3472481;
        double r3472483 = fma(r3472460, r3472461, r3472482);
        double r3472484 = r3472478 ? r3472483 : r3472476;
        double r3472485 = r3472453 ? r3472476 : r3472484;
        return r3472485;
}

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

Derivation

  1. Split input into 2 regimes
  2. if j < -7.828445817805927e-124 or 2.0565799039435203e-108 < j

    1. Initial program 8.6

      \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    2. Simplified8.6

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

      \[\leadsto \mathsf{fma}\left(i \cdot a - z \cdot c, b, \mathsf{fma}\left(t \cdot c - y \cdot i, j, \color{blue}{\left(\left(\sqrt[3]{z \cdot y - t \cdot a} \cdot \sqrt[3]{z \cdot y - t \cdot a}\right) \cdot \sqrt[3]{z \cdot y - t \cdot a}\right)} \cdot x\right)\right)\]
    5. Applied associate-*l*8.9

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

    if -7.828445817805927e-124 < j < 2.0565799039435203e-108

    1. Initial program 15.8

      \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    2. Simplified15.7

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

      \[\leadsto \mathsf{fma}\left(i \cdot a - z \cdot c, b, \mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(z \cdot y - t \cdot a\right) \cdot \color{blue}{\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}\right)}\right)\right)\]
    5. Applied associate-*r*16.1

      \[\leadsto \mathsf{fma}\left(i \cdot a - z \cdot c, b, \mathsf{fma}\left(t \cdot c - y \cdot i, j, \color{blue}{\left(\left(z \cdot y - t \cdot a\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) \cdot \sqrt[3]{x}}\right)\right)\]
    6. Taylor expanded around -inf 14.7

      \[\leadsto \mathsf{fma}\left(i \cdot a - z \cdot c, b, \color{blue}{x \cdot \left(z \cdot y\right) - \left(a \cdot \left(x \cdot t\right) + i \cdot \left(j \cdot y\right)\right)}\right)\]
    7. Simplified14.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;j \le -7.828445817805927 \cdot 10^{-124}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right)\right)\\ \mathbf{elif}\;j \le 2.0565799039435203 \cdot 10^{-108}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \left(y \cdot z - t \cdot a\right) \cdot x - \left(i \cdot j\right) \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(t \cdot c - i \cdot y, j, \left(x \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019135 +o rules:numerics
(FPCore (x y z t a b c i j)
  :name "Linear.Matrix:det33 from linear-1.19.1.3"
  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))