Average Error: 12.3 → 10.4
Time: 18.4s
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}\;y \le -2.69001902444813421 \cdot 10^{149} \lor \neg \left(y \le 6.8519775127199077 \cdot 10^{134}\right):\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, y \cdot \left(x \cdot z - i \cdot j\right) - a \cdot \left(x \cdot t\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(j, c \cdot t - i \cdot y, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\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}\;y \le -2.69001902444813421 \cdot 10^{149} \lor \neg \left(y \le 6.8519775127199077 \cdot 10^{134}\right):\\
\;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, y \cdot \left(x \cdot z - i \cdot j\right) - a \cdot \left(x \cdot t\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(j, c \cdot t - i \cdot y, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\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 r109720 = x;
        double r109721 = y;
        double r109722 = z;
        double r109723 = r109721 * r109722;
        double r109724 = t;
        double r109725 = a;
        double r109726 = r109724 * r109725;
        double r109727 = r109723 - r109726;
        double r109728 = r109720 * r109727;
        double r109729 = b;
        double r109730 = c;
        double r109731 = r109730 * r109722;
        double r109732 = i;
        double r109733 = r109732 * r109725;
        double r109734 = r109731 - r109733;
        double r109735 = r109729 * r109734;
        double r109736 = r109728 - r109735;
        double r109737 = j;
        double r109738 = r109730 * r109724;
        double r109739 = r109732 * r109721;
        double r109740 = r109738 - r109739;
        double r109741 = r109737 * r109740;
        double r109742 = r109736 + r109741;
        return r109742;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r109743 = y;
        double r109744 = -2.690019024448134e+149;
        bool r109745 = r109743 <= r109744;
        double r109746 = 6.851977512719908e+134;
        bool r109747 = r109743 <= r109746;
        double r109748 = !r109747;
        bool r109749 = r109745 || r109748;
        double r109750 = i;
        double r109751 = a;
        double r109752 = r109750 * r109751;
        double r109753 = c;
        double r109754 = z;
        double r109755 = r109753 * r109754;
        double r109756 = r109752 - r109755;
        double r109757 = b;
        double r109758 = x;
        double r109759 = r109758 * r109754;
        double r109760 = j;
        double r109761 = r109750 * r109760;
        double r109762 = r109759 - r109761;
        double r109763 = r109743 * r109762;
        double r109764 = t;
        double r109765 = r109758 * r109764;
        double r109766 = r109751 * r109765;
        double r109767 = r109763 - r109766;
        double r109768 = fma(r109756, r109757, r109767);
        double r109769 = r109753 * r109764;
        double r109770 = r109750 * r109743;
        double r109771 = r109769 - r109770;
        double r109772 = cbrt(r109758);
        double r109773 = r109772 * r109772;
        double r109774 = r109743 * r109754;
        double r109775 = r109764 * r109751;
        double r109776 = r109774 - r109775;
        double r109777 = r109772 * r109776;
        double r109778 = r109773 * r109777;
        double r109779 = fma(r109760, r109771, r109778);
        double r109780 = fma(r109756, r109757, r109779);
        double r109781 = r109749 ? r109768 : r109780;
        return r109781;
}

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 y < -2.690019024448134e+149 or 6.851977512719908e+134 < y

    1. Initial program 23.4

      \[\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. Simplified23.4

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

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

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

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

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

    if -2.690019024448134e+149 < y < 6.851977512719908e+134

    1. Initial program 10.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. Simplified10.1

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -2.69001902444813421 \cdot 10^{149} \lor \neg \left(y \le 6.8519775127199077 \cdot 10^{134}\right):\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, y \cdot \left(x \cdot z - i \cdot j\right) - a \cdot \left(x \cdot t\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(i \cdot a - c \cdot z, b, \mathsf{fma}\left(j, c \cdot t - i \cdot y, \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\right)\right)\right)\\ \end{array}\]

Reproduce

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