Average Error: 11.7 → 12.0
Time: 28.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}\;j \le -1.85781810003466 \cdot 10^{-146}:\\ \;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + \left(-\left(a \cdot t\right) \cdot x\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - y \cdot i\right)\\ \mathbf{elif}\;j \le 6.49122377284293 \cdot 10^{-195}:\\ \;\;\;\;\left(\left(-\left(a \cdot t\right) \cdot x\right) + x \cdot \left(z \cdot y\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + \left(-\left(a \cdot t\right) \cdot x\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - y \cdot i\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}\;j \le -1.85781810003466 \cdot 10^{-146}:\\
\;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + \left(-\left(a \cdot t\right) \cdot x\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - y \cdot i\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r2328394 = x;
        double r2328395 = y;
        double r2328396 = z;
        double r2328397 = r2328395 * r2328396;
        double r2328398 = t;
        double r2328399 = a;
        double r2328400 = r2328398 * r2328399;
        double r2328401 = r2328397 - r2328400;
        double r2328402 = r2328394 * r2328401;
        double r2328403 = b;
        double r2328404 = c;
        double r2328405 = r2328404 * r2328396;
        double r2328406 = i;
        double r2328407 = r2328406 * r2328399;
        double r2328408 = r2328405 - r2328407;
        double r2328409 = r2328403 * r2328408;
        double r2328410 = r2328402 - r2328409;
        double r2328411 = j;
        double r2328412 = r2328404 * r2328398;
        double r2328413 = r2328406 * r2328395;
        double r2328414 = r2328412 - r2328413;
        double r2328415 = r2328411 * r2328414;
        double r2328416 = r2328410 + r2328415;
        return r2328416;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r2328417 = j;
        double r2328418 = -1.85781810003466e-146;
        bool r2328419 = r2328417 <= r2328418;
        double r2328420 = x;
        double r2328421 = y;
        double r2328422 = r2328420 * r2328421;
        double r2328423 = z;
        double r2328424 = r2328422 * r2328423;
        double r2328425 = a;
        double r2328426 = t;
        double r2328427 = r2328425 * r2328426;
        double r2328428 = r2328427 * r2328420;
        double r2328429 = -r2328428;
        double r2328430 = r2328424 + r2328429;
        double r2328431 = b;
        double r2328432 = c;
        double r2328433 = r2328432 * r2328423;
        double r2328434 = i;
        double r2328435 = r2328434 * r2328425;
        double r2328436 = r2328433 - r2328435;
        double r2328437 = r2328431 * r2328436;
        double r2328438 = r2328430 - r2328437;
        double r2328439 = r2328432 * r2328426;
        double r2328440 = r2328421 * r2328434;
        double r2328441 = r2328439 - r2328440;
        double r2328442 = r2328417 * r2328441;
        double r2328443 = r2328438 + r2328442;
        double r2328444 = 6.49122377284293e-195;
        bool r2328445 = r2328417 <= r2328444;
        double r2328446 = r2328423 * r2328421;
        double r2328447 = r2328420 * r2328446;
        double r2328448 = r2328429 + r2328447;
        double r2328449 = r2328448 - r2328437;
        double r2328450 = r2328445 ? r2328449 : r2328443;
        double r2328451 = r2328419 ? r2328443 : r2328450;
        return r2328451;
}

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 2 regimes
  2. if j < -1.85781810003466e-146 or 6.49122377284293e-195 < j

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

      \[\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-in10.1

      \[\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. Using strategy rm
    6. Applied associate-*r*10.2

      \[\leadsto \left(\left(\color{blue}{\left(x \cdot y\right) \cdot z} + 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)\]

    if -1.85781810003466e-146 < j < 6.49122377284293e-195

    1. Initial program 16.0

      \[\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-neg16.0

      \[\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-in16.0

      \[\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. Taylor expanded around 0 16.8

      \[\leadsto \left(\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) + \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification12.0

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

Reproduce

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