Average Error: 12.0 → 10.3
Time: 8.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}\;a \le -1.9093385244904942 \cdot 10^{32} \lor \neg \left(a \le 9.3561614731253176 \cdot 10^{-41}\right):\\ \;\;\;\;\mathsf{fma}\left(a, i \cdot b, -\mathsf{fma}\left(z, b \cdot c, a \cdot \left(x \cdot t\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z - t \cdot a\right) - \mathsf{fma}\left(c, z, -a \cdot i\right) \cdot b\right) - b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right) + \left(t \cdot \left(j \cdot c\right) + -1 \cdot \left(i \cdot \left(y \cdot j\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}\;a \le -1.9093385244904942 \cdot 10^{32} \lor \neg \left(a \le 9.3561614731253176 \cdot 10^{-41}\right):\\
\;\;\;\;\mathsf{fma}\left(a, i \cdot b, -\mathsf{fma}\left(z, b \cdot c, a \cdot \left(x \cdot t\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z - t \cdot a\right) - \mathsf{fma}\left(c, z, -a \cdot i\right) \cdot b\right) - b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right) + \left(t \cdot \left(j \cdot c\right) + -1 \cdot \left(i \cdot \left(y \cdot j\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 r121154 = x;
        double r121155 = y;
        double r121156 = z;
        double r121157 = r121155 * r121156;
        double r121158 = t;
        double r121159 = a;
        double r121160 = r121158 * r121159;
        double r121161 = r121157 - r121160;
        double r121162 = r121154 * r121161;
        double r121163 = b;
        double r121164 = c;
        double r121165 = r121164 * r121156;
        double r121166 = i;
        double r121167 = r121166 * r121159;
        double r121168 = r121165 - r121167;
        double r121169 = r121163 * r121168;
        double r121170 = r121162 - r121169;
        double r121171 = j;
        double r121172 = r121164 * r121158;
        double r121173 = r121166 * r121155;
        double r121174 = r121172 - r121173;
        double r121175 = r121171 * r121174;
        double r121176 = r121170 + r121175;
        return r121176;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r121177 = a;
        double r121178 = -1.9093385244904942e+32;
        bool r121179 = r121177 <= r121178;
        double r121180 = 9.356161473125318e-41;
        bool r121181 = r121177 <= r121180;
        double r121182 = !r121181;
        bool r121183 = r121179 || r121182;
        double r121184 = i;
        double r121185 = b;
        double r121186 = r121184 * r121185;
        double r121187 = z;
        double r121188 = c;
        double r121189 = r121185 * r121188;
        double r121190 = x;
        double r121191 = t;
        double r121192 = r121190 * r121191;
        double r121193 = r121177 * r121192;
        double r121194 = fma(r121187, r121189, r121193);
        double r121195 = -r121194;
        double r121196 = fma(r121177, r121186, r121195);
        double r121197 = j;
        double r121198 = r121188 * r121191;
        double r121199 = y;
        double r121200 = r121184 * r121199;
        double r121201 = r121198 - r121200;
        double r121202 = r121197 * r121201;
        double r121203 = r121196 + r121202;
        double r121204 = r121199 * r121187;
        double r121205 = r121191 * r121177;
        double r121206 = r121204 - r121205;
        double r121207 = r121190 * r121206;
        double r121208 = r121177 * r121184;
        double r121209 = -r121208;
        double r121210 = fma(r121188, r121187, r121209);
        double r121211 = r121210 * r121185;
        double r121212 = r121207 - r121211;
        double r121213 = -r121177;
        double r121214 = fma(r121213, r121184, r121208);
        double r121215 = r121185 * r121214;
        double r121216 = r121212 - r121215;
        double r121217 = r121197 * r121188;
        double r121218 = r121191 * r121217;
        double r121219 = -1.0;
        double r121220 = r121199 * r121197;
        double r121221 = r121184 * r121220;
        double r121222 = r121219 * r121221;
        double r121223 = r121218 + r121222;
        double r121224 = r121216 + r121223;
        double r121225 = r121183 ? r121203 : r121224;
        return r121225;
}

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 a < -1.9093385244904942e+32 or 9.356161473125318e-41 < a

    1. Initial program 16.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. Taylor expanded around inf 13.5

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

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

    if -1.9093385244904942e+32 < a < 9.356161473125318e-41

    1. Initial program 9.2

      \[\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.2

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\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) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    4. Applied distribute-lft-in9.2

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\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) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    5. Applied associate--r+9.2

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

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

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

      \[\leadsto \left(\left(x \cdot \left(y \cdot z - t \cdot a\right) - \mathsf{fma}\left(c, z, -a \cdot i\right) \cdot b\right) - b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right) + \color{blue}{\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\sqrt[3]{j} \cdot \left(c \cdot t - i \cdot y\right)\right)}\]
    10. Using strategy rm
    11. Applied sub-neg9.6

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -1.9093385244904942 \cdot 10^{32} \lor \neg \left(a \le 9.3561614731253176 \cdot 10^{-41}\right):\\ \;\;\;\;\mathsf{fma}\left(a, i \cdot b, -\mathsf{fma}\left(z, b \cdot c, a \cdot \left(x \cdot t\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z - t \cdot a\right) - \mathsf{fma}\left(c, z, -a \cdot i\right) \cdot b\right) - b \cdot \mathsf{fma}\left(-a, i, a \cdot i\right)\right) + \left(t \cdot \left(j \cdot c\right) + -1 \cdot \left(i \cdot \left(y \cdot j\right)\right)\right)\\ \end{array}\]

Reproduce

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