Average Error: 12.1 → 11.0
Time: 28.0s
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}\;z \le -1.327033599359954 \cdot 10^{+156}:\\ \;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - \left(t \cdot x\right) \cdot a\right)\\ \mathbf{elif}\;z \le 4.751027196232515 \cdot 10^{-19}:\\ \;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \mathsf{fma}\left(b, i \cdot a - c \cdot z, \left(\left(y \cdot z - t \cdot a\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) \cdot \sqrt[3]{x}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - \left(t \cdot x\right) \cdot a\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}\;z \le -1.327033599359954 \cdot 10^{+156}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - \left(t \cdot x\right) \cdot a\right)\\

\mathbf{elif}\;z \le 4.751027196232515 \cdot 10^{-19}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \mathsf{fma}\left(b, i \cdot a - c \cdot z, \left(\left(y \cdot z - t \cdot a\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) \cdot \sqrt[3]{x}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - \left(t \cdot x\right) \cdot a\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r3650982 = x;
        double r3650983 = y;
        double r3650984 = z;
        double r3650985 = r3650983 * r3650984;
        double r3650986 = t;
        double r3650987 = a;
        double r3650988 = r3650986 * r3650987;
        double r3650989 = r3650985 - r3650988;
        double r3650990 = r3650982 * r3650989;
        double r3650991 = b;
        double r3650992 = c;
        double r3650993 = r3650992 * r3650984;
        double r3650994 = i;
        double r3650995 = r3650994 * r3650987;
        double r3650996 = r3650993 - r3650995;
        double r3650997 = r3650991 * r3650996;
        double r3650998 = r3650990 - r3650997;
        double r3650999 = j;
        double r3651000 = r3650992 * r3650986;
        double r3651001 = r3650994 * r3650983;
        double r3651002 = r3651000 - r3651001;
        double r3651003 = r3650999 * r3651002;
        double r3651004 = r3650998 + r3651003;
        return r3651004;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r3651005 = z;
        double r3651006 = -1.327033599359954e+156;
        bool r3651007 = r3651005 <= r3651006;
        double r3651008 = t;
        double r3651009 = c;
        double r3651010 = r3651008 * r3651009;
        double r3651011 = y;
        double r3651012 = i;
        double r3651013 = r3651011 * r3651012;
        double r3651014 = r3651010 - r3651013;
        double r3651015 = j;
        double r3651016 = x;
        double r3651017 = r3651016 * r3651011;
        double r3651018 = b;
        double r3651019 = r3651009 * r3651018;
        double r3651020 = r3651017 - r3651019;
        double r3651021 = r3651020 * r3651005;
        double r3651022 = r3651008 * r3651016;
        double r3651023 = a;
        double r3651024 = r3651022 * r3651023;
        double r3651025 = r3651021 - r3651024;
        double r3651026 = fma(r3651014, r3651015, r3651025);
        double r3651027 = 4.751027196232515e-19;
        bool r3651028 = r3651005 <= r3651027;
        double r3651029 = r3651012 * r3651023;
        double r3651030 = r3651009 * r3651005;
        double r3651031 = r3651029 - r3651030;
        double r3651032 = r3651011 * r3651005;
        double r3651033 = r3651008 * r3651023;
        double r3651034 = r3651032 - r3651033;
        double r3651035 = cbrt(r3651016);
        double r3651036 = r3651035 * r3651035;
        double r3651037 = r3651034 * r3651036;
        double r3651038 = r3651037 * r3651035;
        double r3651039 = fma(r3651018, r3651031, r3651038);
        double r3651040 = fma(r3651014, r3651015, r3651039);
        double r3651041 = r3651028 ? r3651040 : r3651026;
        double r3651042 = r3651007 ? r3651026 : r3651041;
        return r3651042;
}

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 z < -1.327033599359954e+156 or 4.751027196232515e-19 < z

    1. Initial program 17.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. Simplified17.3

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

      \[\leadsto \mathsf{fma}\left(t \cdot c - i \cdot y, j, \mathsf{fma}\left(b, a \cdot i - z \cdot c, \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*17.7

      \[\leadsto \mathsf{fma}\left(t \cdot c - i \cdot y, j, \mathsf{fma}\left(b, a \cdot i - z \cdot c, \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 18.3

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

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

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

    if -1.327033599359954e+156 < z < 4.751027196232515e-19

    1. Initial program 9.9

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

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

      \[\leadsto \mathsf{fma}\left(t \cdot c - i \cdot y, j, \mathsf{fma}\left(b, a \cdot i - z \cdot c, \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*10.2

      \[\leadsto \mathsf{fma}\left(t \cdot c - i \cdot y, j, \mathsf{fma}\left(b, a \cdot i - z \cdot c, \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)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification11.0

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

Reproduce

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