Average Error: 11.2 → 9.5
Time: 30.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}\;z \le -5.827232257640776 \cdot 10^{+78}:\\ \;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - a \cdot \left(t \cdot x\right)\right)\\ \mathbf{elif}\;z \le 2.3673218340026943 \cdot 10^{+98}:\\ \;\;\;\;\mathsf{fma}\left(a \cdot i - c \cdot z, b, \left(y \cdot z - t \cdot a\right) \cdot x\right) + \left(\sqrt[3]{t \cdot c - y \cdot i} \cdot \sqrt[3]{t \cdot c - y \cdot i}\right) \cdot \left(\sqrt[3]{t \cdot c - y \cdot i} \cdot j\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - a \cdot \left(t \cdot x\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}\;z \le -5.827232257640776 \cdot 10^{+78}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - a \cdot \left(t \cdot x\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot c - y \cdot i, j, \left(x \cdot y - c \cdot b\right) \cdot z - a \cdot \left(t \cdot x\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 r4644376 = x;
        double r4644377 = y;
        double r4644378 = z;
        double r4644379 = r4644377 * r4644378;
        double r4644380 = t;
        double r4644381 = a;
        double r4644382 = r4644380 * r4644381;
        double r4644383 = r4644379 - r4644382;
        double r4644384 = r4644376 * r4644383;
        double r4644385 = b;
        double r4644386 = c;
        double r4644387 = r4644386 * r4644378;
        double r4644388 = i;
        double r4644389 = r4644388 * r4644381;
        double r4644390 = r4644387 - r4644389;
        double r4644391 = r4644385 * r4644390;
        double r4644392 = r4644384 - r4644391;
        double r4644393 = j;
        double r4644394 = r4644386 * r4644380;
        double r4644395 = r4644388 * r4644377;
        double r4644396 = r4644394 - r4644395;
        double r4644397 = r4644393 * r4644396;
        double r4644398 = r4644392 + r4644397;
        return r4644398;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r4644399 = z;
        double r4644400 = -5.827232257640776e+78;
        bool r4644401 = r4644399 <= r4644400;
        double r4644402 = t;
        double r4644403 = c;
        double r4644404 = r4644402 * r4644403;
        double r4644405 = y;
        double r4644406 = i;
        double r4644407 = r4644405 * r4644406;
        double r4644408 = r4644404 - r4644407;
        double r4644409 = j;
        double r4644410 = x;
        double r4644411 = r4644410 * r4644405;
        double r4644412 = b;
        double r4644413 = r4644403 * r4644412;
        double r4644414 = r4644411 - r4644413;
        double r4644415 = r4644414 * r4644399;
        double r4644416 = a;
        double r4644417 = r4644402 * r4644410;
        double r4644418 = r4644416 * r4644417;
        double r4644419 = r4644415 - r4644418;
        double r4644420 = fma(r4644408, r4644409, r4644419);
        double r4644421 = 2.3673218340026943e+98;
        bool r4644422 = r4644399 <= r4644421;
        double r4644423 = r4644416 * r4644406;
        double r4644424 = r4644403 * r4644399;
        double r4644425 = r4644423 - r4644424;
        double r4644426 = r4644405 * r4644399;
        double r4644427 = r4644402 * r4644416;
        double r4644428 = r4644426 - r4644427;
        double r4644429 = r4644428 * r4644410;
        double r4644430 = fma(r4644425, r4644412, r4644429);
        double r4644431 = cbrt(r4644408);
        double r4644432 = r4644431 * r4644431;
        double r4644433 = r4644431 * r4644409;
        double r4644434 = r4644432 * r4644433;
        double r4644435 = r4644430 + r4644434;
        double r4644436 = r4644422 ? r4644435 : r4644420;
        double r4644437 = r4644401 ? r4644420 : r4644436;
        return r4644437;
}

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 < -5.827232257640776e+78 or 2.3673218340026943e+98 < z

    1. Initial program 19.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. Simplified19.2

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

      \[\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)\]
    4. Simplified11.4

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

    if -5.827232257640776e+78 < z < 2.3673218340026943e+98

    1. Initial program 8.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. Simplified8.5

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

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

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

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

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

Reproduce

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