Average Error: 11.8 → 11.3
Time: 25.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}\;b \le -1.929309415075956 \cdot 10^{-274}:\\ \;\;\;\;\mathsf{fma}\left(z \cdot y - a \cdot t, x, \mathsf{fma}\left(b, \sqrt[3]{i \cdot a - z \cdot c} \cdot \left(\sqrt[3]{i \cdot a - z \cdot c} \cdot \sqrt[3]{i \cdot a - z \cdot c}\right), \left(c \cdot t - i \cdot y\right) \cdot j\right)\right)\\ \mathbf{elif}\;b \le 1.127796530083514 \cdot 10^{-130}:\\ \;\;\;\;\mathsf{fma}\left(z \cdot y - a \cdot t, x, \left(c \cdot t - i \cdot y\right) \cdot j - z \cdot \left(c \cdot b\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(z \cdot y - a \cdot t, x, \mathsf{fma}\left(b, \sqrt[3]{i \cdot a - z \cdot c} \cdot \left(\sqrt[3]{i \cdot a - z \cdot c} \cdot \sqrt[3]{i \cdot a - z \cdot c}\right), \left(c \cdot t - i \cdot y\right) \cdot j\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 -1.929309415075956 \cdot 10^{-274}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot y - a \cdot t, x, \mathsf{fma}\left(b, \sqrt[3]{i \cdot a - z \cdot c} \cdot \left(\sqrt[3]{i \cdot a - z \cdot c} \cdot \sqrt[3]{i \cdot a - z \cdot c}\right), \left(c \cdot t - i \cdot y\right) \cdot j\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot y - a \cdot t, x, \mathsf{fma}\left(b, \sqrt[3]{i \cdot a - z \cdot c} \cdot \left(\sqrt[3]{i \cdot a - z \cdot c} \cdot \sqrt[3]{i \cdot a - z \cdot c}\right), \left(c \cdot t - i \cdot y\right) \cdot j\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 r3918979 = x;
        double r3918980 = y;
        double r3918981 = z;
        double r3918982 = r3918980 * r3918981;
        double r3918983 = t;
        double r3918984 = a;
        double r3918985 = r3918983 * r3918984;
        double r3918986 = r3918982 - r3918985;
        double r3918987 = r3918979 * r3918986;
        double r3918988 = b;
        double r3918989 = c;
        double r3918990 = r3918989 * r3918981;
        double r3918991 = i;
        double r3918992 = r3918991 * r3918984;
        double r3918993 = r3918990 - r3918992;
        double r3918994 = r3918988 * r3918993;
        double r3918995 = r3918987 - r3918994;
        double r3918996 = j;
        double r3918997 = r3918989 * r3918983;
        double r3918998 = r3918991 * r3918980;
        double r3918999 = r3918997 - r3918998;
        double r3919000 = r3918996 * r3918999;
        double r3919001 = r3918995 + r3919000;
        return r3919001;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r3919002 = b;
        double r3919003 = -1.929309415075956e-274;
        bool r3919004 = r3919002 <= r3919003;
        double r3919005 = z;
        double r3919006 = y;
        double r3919007 = r3919005 * r3919006;
        double r3919008 = a;
        double r3919009 = t;
        double r3919010 = r3919008 * r3919009;
        double r3919011 = r3919007 - r3919010;
        double r3919012 = x;
        double r3919013 = i;
        double r3919014 = r3919013 * r3919008;
        double r3919015 = c;
        double r3919016 = r3919005 * r3919015;
        double r3919017 = r3919014 - r3919016;
        double r3919018 = cbrt(r3919017);
        double r3919019 = r3919018 * r3919018;
        double r3919020 = r3919018 * r3919019;
        double r3919021 = r3919015 * r3919009;
        double r3919022 = r3919013 * r3919006;
        double r3919023 = r3919021 - r3919022;
        double r3919024 = j;
        double r3919025 = r3919023 * r3919024;
        double r3919026 = fma(r3919002, r3919020, r3919025);
        double r3919027 = fma(r3919011, r3919012, r3919026);
        double r3919028 = 1.127796530083514e-130;
        bool r3919029 = r3919002 <= r3919028;
        double r3919030 = r3919015 * r3919002;
        double r3919031 = r3919005 * r3919030;
        double r3919032 = r3919025 - r3919031;
        double r3919033 = fma(r3919011, r3919012, r3919032);
        double r3919034 = r3919029 ? r3919033 : r3919027;
        double r3919035 = r3919004 ? r3919027 : r3919034;
        return r3919035;
}

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 < -1.929309415075956e-274 or 1.127796530083514e-130 < b

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

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

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

    if -1.929309415075956e-274 < b < 1.127796530083514e-130

    1. Initial program 16.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. Simplified16.6

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

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

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

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

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

Reproduce

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