Average Error: 12.0 → 12.7
Time: 34.9s
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 -9.769680929191317 \cdot 10^{-164}:\\ \;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\right)\right)\right)\right)\\ \mathbf{elif}\;b \le -7.732769282403231 \cdot 10^{-233}:\\ \;\;\;\;\left(z \cdot x - j \cdot i\right) \cdot y - \left(a \cdot t\right) \cdot x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\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}\;b \le -9.769680929191317 \cdot 10^{-164}:\\
\;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\right)\right)\right)\right)\\

\mathbf{elif}\;b \le -7.732769282403231 \cdot 10^{-233}:\\
\;\;\;\;\left(z \cdot x - j \cdot i\right) \cdot y - \left(a \cdot t\right) \cdot x\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\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 r3506001 = x;
        double r3506002 = y;
        double r3506003 = z;
        double r3506004 = r3506002 * r3506003;
        double r3506005 = t;
        double r3506006 = a;
        double r3506007 = r3506005 * r3506006;
        double r3506008 = r3506004 - r3506007;
        double r3506009 = r3506001 * r3506008;
        double r3506010 = b;
        double r3506011 = c;
        double r3506012 = r3506011 * r3506003;
        double r3506013 = i;
        double r3506014 = r3506013 * r3506006;
        double r3506015 = r3506012 - r3506014;
        double r3506016 = r3506010 * r3506015;
        double r3506017 = r3506009 - r3506016;
        double r3506018 = j;
        double r3506019 = r3506011 * r3506005;
        double r3506020 = r3506013 * r3506002;
        double r3506021 = r3506019 - r3506020;
        double r3506022 = r3506018 * r3506021;
        double r3506023 = r3506017 + r3506022;
        return r3506023;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r3506024 = b;
        double r3506025 = -9.769680929191317e-164;
        bool r3506026 = r3506024 <= r3506025;
        double r3506027 = i;
        double r3506028 = a;
        double r3506029 = r3506027 * r3506028;
        double r3506030 = c;
        double r3506031 = z;
        double r3506032 = r3506030 * r3506031;
        double r3506033 = r3506029 - r3506032;
        double r3506034 = t;
        double r3506035 = r3506030 * r3506034;
        double r3506036 = y;
        double r3506037 = r3506036 * r3506027;
        double r3506038 = r3506035 - r3506037;
        double r3506039 = j;
        double r3506040 = r3506036 * r3506031;
        double r3506041 = r3506028 * r3506034;
        double r3506042 = r3506040 - r3506041;
        double r3506043 = x;
        double r3506044 = r3506042 * r3506043;
        double r3506045 = fma(r3506038, r3506039, r3506044);
        double r3506046 = fma(r3506033, r3506024, r3506045);
        double r3506047 = -7.732769282403231e-233;
        bool r3506048 = r3506024 <= r3506047;
        double r3506049 = r3506031 * r3506043;
        double r3506050 = r3506039 * r3506027;
        double r3506051 = r3506049 - r3506050;
        double r3506052 = r3506051 * r3506036;
        double r3506053 = r3506041 * r3506043;
        double r3506054 = r3506052 - r3506053;
        double r3506055 = r3506048 ? r3506054 : r3506046;
        double r3506056 = r3506026 ? r3506046 : r3506055;
        return r3506056;
}

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 b < -9.769680929191317e-164 or -7.732769282403231e-233 < b

    1. Initial program 11.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. Simplified11.5

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

    if -9.769680929191317e-164 < b < -7.732769282403231e-233

    1. Initial program 18.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. Simplified18.3

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

      \[\leadsto \mathsf{fma}\left(\left(i \cdot a - z \cdot c\right), b, \left(\mathsf{fma}\left(\left(t \cdot c - y \cdot i\right), j, \left(\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)\right)\right)\]
    5. Applied associate-*r*18.6

      \[\leadsto \mathsf{fma}\left(\left(i \cdot a - z \cdot c\right), b, \left(\mathsf{fma}\left(\left(t \cdot c - y \cdot i\right), j, \color{blue}{\left(\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)\right)\right)\]
    6. Using strategy rm
    7. Applied add-cube-cbrt18.7

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

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

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

      \[\leadsto \color{blue}{x \cdot \left(z \cdot y\right) - \left(t \cdot \left(x \cdot a\right) + i \cdot \left(j \cdot y\right)\right)}\]
    11. Simplified29.6

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -9.769680929191317 \cdot 10^{-164}:\\ \;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\right)\right)\right)\right)\\ \mathbf{elif}\;b \le -7.732769282403231 \cdot 10^{-233}:\\ \;\;\;\;\left(z \cdot x - j \cdot i\right) \cdot y - \left(a \cdot t\right) \cdot x\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(i \cdot a - c \cdot z\right), b, \left(\mathsf{fma}\left(\left(c \cdot t - y \cdot i\right), j, \left(\left(y \cdot z - a \cdot t\right) \cdot x\right)\right)\right)\right)\\ \end{array}\]

Reproduce

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