Average Error: 12.5 → 12.5
Time: 10.1s
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}\;b \le -8.8066359493368801 \cdot 10^{-143}:\\ \;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(b \cdot \left(c \cdot z - i \cdot a\right) + b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right)\right) + \left(\left(\sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)}\right) \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\\ \mathbf{elif}\;b \le 2.01753666676692102 \cdot 10^{-218}:\\ \;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - 0\right) + \left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \sqrt[3]{y \cdot z - t \cdot a} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\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}\;b \le -8.8066359493368801 \cdot 10^{-143}:\\
\;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(b \cdot \left(c \cdot z - i \cdot a\right) + b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right)\right) + \left(\left(\sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)}\right) \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \sqrt[3]{y \cdot z - t \cdot a} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r107512 = x;
        double r107513 = y;
        double r107514 = z;
        double r107515 = r107513 * r107514;
        double r107516 = t;
        double r107517 = a;
        double r107518 = r107516 * r107517;
        double r107519 = r107515 - r107518;
        double r107520 = r107512 * r107519;
        double r107521 = b;
        double r107522 = c;
        double r107523 = r107522 * r107514;
        double r107524 = i;
        double r107525 = r107524 * r107517;
        double r107526 = r107523 - r107525;
        double r107527 = r107521 * r107526;
        double r107528 = r107520 - r107527;
        double r107529 = j;
        double r107530 = r107522 * r107516;
        double r107531 = r107524 * r107513;
        double r107532 = r107530 - r107531;
        double r107533 = r107529 * r107532;
        double r107534 = r107528 + r107533;
        return r107534;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r107535 = b;
        double r107536 = -8.80663594933688e-143;
        bool r107537 = r107535 <= r107536;
        double r107538 = x;
        double r107539 = y;
        double r107540 = z;
        double r107541 = a;
        double r107542 = t;
        double r107543 = r107541 * r107542;
        double r107544 = -r107543;
        double r107545 = fma(r107539, r107540, r107544);
        double r107546 = r107538 * r107545;
        double r107547 = -r107541;
        double r107548 = fma(r107547, r107542, r107543);
        double r107549 = r107538 * r107548;
        double r107550 = r107546 + r107549;
        double r107551 = c;
        double r107552 = r107551 * r107540;
        double r107553 = i;
        double r107554 = r107553 * r107541;
        double r107555 = r107552 - r107554;
        double r107556 = r107535 * r107555;
        double r107557 = r107541 * r107553;
        double r107558 = fma(r107547, r107553, r107557);
        double r107559 = r107535 * r107558;
        double r107560 = r107556 + r107559;
        double r107561 = r107550 - r107560;
        double r107562 = j;
        double r107563 = r107539 * r107553;
        double r107564 = -r107563;
        double r107565 = fma(r107551, r107542, r107564);
        double r107566 = r107562 * r107565;
        double r107567 = cbrt(r107566);
        double r107568 = r107567 * r107567;
        double r107569 = r107568 * r107567;
        double r107570 = -r107539;
        double r107571 = fma(r107570, r107553, r107563);
        double r107572 = r107562 * r107571;
        double r107573 = r107569 + r107572;
        double r107574 = r107561 + r107573;
        double r107575 = 2.017536666766921e-218;
        bool r107576 = r107535 <= r107575;
        double r107577 = 0.0;
        double r107578 = r107550 - r107577;
        double r107579 = r107566 + r107572;
        double r107580 = r107578 + r107579;
        double r107581 = r107539 * r107540;
        double r107582 = r107542 * r107541;
        double r107583 = r107581 - r107582;
        double r107584 = cbrt(r107583);
        double r107585 = r107584 * r107584;
        double r107586 = r107538 * r107585;
        double r107587 = r107586 * r107584;
        double r107588 = r107587 - r107556;
        double r107589 = r107551 * r107542;
        double r107590 = r107553 * r107539;
        double r107591 = r107589 - r107590;
        double r107592 = r107562 * r107591;
        double r107593 = r107588 + r107592;
        double r107594 = r107576 ? r107580 : r107593;
        double r107595 = r107537 ? r107574 : r107594;
        return r107595;
}

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 3 regimes
  2. if b < -8.80663594933688e-143

    1. Initial program 9.5

      \[\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. Using strategy rm
    3. Applied prod-diff9.5

      \[\leadsto \left(x \cdot \color{blue}{\left(\mathsf{fma}\left(y, z, -a \cdot t\right) + \mathsf{fma}\left(-a, t, a \cdot t\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    4. Applied distribute-lft-in9.5

      \[\leadsto \left(\color{blue}{\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    5. Using strategy rm
    6. Applied prod-diff9.5

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

      \[\leadsto \left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \color{blue}{\left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)}\]
    8. Using strategy rm
    9. Applied prod-diff9.5

      \[\leadsto \left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \color{blue}{\left(\mathsf{fma}\left(c, z, -a \cdot i\right) + \mathsf{fma}\left(-a, i, a \cdot i\right)\right)}\right) + \left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\]
    10. Applied distribute-lft-in9.4

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

      \[\leadsto \left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(\color{blue}{b \cdot \left(c \cdot z - i \cdot a\right)} + b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right)\right) + \left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\]
    12. Using strategy rm
    13. Applied add-cube-cbrt9.7

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

    if -8.80663594933688e-143 < b < 2.017536666766921e-218

    1. Initial program 18.1

      \[\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. Using strategy rm
    3. Applied prod-diff18.1

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

      \[\leadsto \left(\color{blue}{\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    5. Using strategy rm
    6. Applied prod-diff18.1

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

      \[\leadsto \left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \color{blue}{\left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)}\]
    8. Taylor expanded around 0 17.5

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

    if 2.017536666766921e-218 < b

    1. Initial program 11.3

      \[\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. Using strategy rm
    3. Applied add-cube-cbrt11.6

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

      \[\leadsto \left(\color{blue}{\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \sqrt[3]{y \cdot z - t \cdot a}} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification12.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -8.8066359493368801 \cdot 10^{-143}:\\ \;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - \left(b \cdot \left(c \cdot z - i \cdot a\right) + b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right)\right) + \left(\left(\sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)}\right) \cdot \sqrt[3]{j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right)} + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\\ \mathbf{elif}\;b \le 2.01753666676692102 \cdot 10^{-218}:\\ \;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - 0\right) + \left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \sqrt[3]{y \cdot z - t \cdot a} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \end{array}\]

Reproduce

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