Average Error: 11.7 → 9.1
Time: 35.3s
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}\;x \le -7.615026889800153126326834238619769676443 \cdot 10^{-85}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\ \mathbf{elif}\;x \le 1.841813406452417059844069174980175504475 \cdot 10^{-51}:\\ \;\;\;\;\left(\left(y \cdot \left(z \cdot x\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\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}\;x \le -7.615026889800153126326834238619769676443 \cdot 10^{-85}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r83366 = x;
        double r83367 = y;
        double r83368 = z;
        double r83369 = r83367 * r83368;
        double r83370 = t;
        double r83371 = a;
        double r83372 = r83370 * r83371;
        double r83373 = r83369 - r83372;
        double r83374 = r83366 * r83373;
        double r83375 = b;
        double r83376 = c;
        double r83377 = r83376 * r83368;
        double r83378 = i;
        double r83379 = r83378 * r83371;
        double r83380 = r83377 - r83379;
        double r83381 = r83375 * r83380;
        double r83382 = r83374 - r83381;
        double r83383 = j;
        double r83384 = r83376 * r83370;
        double r83385 = r83378 * r83367;
        double r83386 = r83384 - r83385;
        double r83387 = r83383 * r83386;
        double r83388 = r83382 + r83387;
        return r83388;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r83389 = x;
        double r83390 = -7.615026889800153e-85;
        bool r83391 = r83389 <= r83390;
        double r83392 = y;
        double r83393 = z;
        double r83394 = r83392 * r83393;
        double r83395 = t;
        double r83396 = a;
        double r83397 = r83395 * r83396;
        double r83398 = r83394 - r83397;
        double r83399 = r83389 * r83398;
        double r83400 = b;
        double r83401 = c;
        double r83402 = r83401 * r83393;
        double r83403 = i;
        double r83404 = r83403 * r83396;
        double r83405 = r83402 - r83404;
        double r83406 = r83400 * r83405;
        double r83407 = r83399 - r83406;
        double r83408 = j;
        double r83409 = r83408 * r83401;
        double r83410 = r83395 * r83409;
        double r83411 = r83408 * r83392;
        double r83412 = r83403 * r83411;
        double r83413 = -r83412;
        double r83414 = r83410 + r83413;
        double r83415 = r83407 + r83414;
        double r83416 = 1.841813406452417e-51;
        bool r83417 = r83389 <= r83416;
        double r83418 = r83393 * r83389;
        double r83419 = r83392 * r83418;
        double r83420 = r83389 * r83395;
        double r83421 = r83396 * r83420;
        double r83422 = -r83421;
        double r83423 = r83419 + r83422;
        double r83424 = r83423 - r83406;
        double r83425 = r83401 * r83395;
        double r83426 = r83403 * r83392;
        double r83427 = r83425 - r83426;
        double r83428 = r83408 * r83427;
        double r83429 = r83424 + r83428;
        double r83430 = r83400 * r83401;
        double r83431 = r83393 * r83430;
        double r83432 = -r83404;
        double r83433 = r83400 * r83432;
        double r83434 = r83431 + r83433;
        double r83435 = r83399 - r83434;
        double r83436 = r83435 + r83428;
        double r83437 = r83417 ? r83429 : r83436;
        double r83438 = r83391 ? r83415 : r83437;
        return r83438;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if x < -7.615026889800153e-85

    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. Using strategy rm
    3. Applied sub-neg8.5

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \color{blue}{\left(c \cdot t + \left(-i \cdot y\right)\right)}\]
    4. Applied distribute-lft-in8.5

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

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

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

    if -7.615026889800153e-85 < x < 1.841813406452417e-51

    1. Initial program 15.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. Using strategy rm
    3. Applied sub-neg15.5

      \[\leadsto \left(x \cdot \color{blue}{\left(y \cdot z + \left(-t \cdot a\right)\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    4. Applied distribute-lft-in15.5

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

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

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

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

    if 1.841813406452417e-51 < x

    1. Initial program 8.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. Using strategy rm
    3. Applied sub-neg8.1

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \color{blue}{\left(c \cdot z + \left(-i \cdot a\right)\right)}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    4. Applied distribute-lft-in8.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -7.615026889800153126326834238619769676443 \cdot 10^{-85}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\ \mathbf{elif}\;x \le 1.841813406452417059844069174980175504475 \cdot 10^{-51}:\\ \;\;\;\;\left(\left(y \cdot \left(z \cdot x\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019306 
(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)))))