Average Error: 12.8 → 11.6
Time: 1.1m
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 -1.3908394767462318 \cdot 10^{-09}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{z \cdot c - i \cdot a} \cdot \left(b \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{z \cdot c - i \cdot a}\right)\right)\right)\\ \mathbf{elif}\;x \le -1.1954740575885239 \cdot 10^{-185}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(x \cdot \left(y \cdot z\right) - \left(x \cdot t\right) \cdot a\right) - \left(\left(i \cdot b\right) \cdot \left(-a\right) + \left(b \cdot z\right) \cdot c\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) - b \cdot \left(z \cdot c - i \cdot a\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}\;x \le -1.3908394767462318 \cdot 10^{-09}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{z \cdot c - i \cdot a} \cdot \left(b \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{z \cdot c - i \cdot a}\right)\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) - b \cdot \left(z \cdot c - i \cdot a\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 r23791356 = x;
        double r23791357 = y;
        double r23791358 = z;
        double r23791359 = r23791357 * r23791358;
        double r23791360 = t;
        double r23791361 = a;
        double r23791362 = r23791360 * r23791361;
        double r23791363 = r23791359 - r23791362;
        double r23791364 = r23791356 * r23791363;
        double r23791365 = b;
        double r23791366 = c;
        double r23791367 = r23791366 * r23791358;
        double r23791368 = i;
        double r23791369 = r23791368 * r23791361;
        double r23791370 = r23791367 - r23791369;
        double r23791371 = r23791365 * r23791370;
        double r23791372 = r23791364 - r23791371;
        double r23791373 = j;
        double r23791374 = r23791366 * r23791360;
        double r23791375 = r23791368 * r23791357;
        double r23791376 = r23791374 - r23791375;
        double r23791377 = r23791373 * r23791376;
        double r23791378 = r23791372 + r23791377;
        return r23791378;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r23791379 = x;
        double r23791380 = -1.3908394767462318e-09;
        bool r23791381 = r23791379 <= r23791380;
        double r23791382 = c;
        double r23791383 = t;
        double r23791384 = r23791382 * r23791383;
        double r23791385 = i;
        double r23791386 = y;
        double r23791387 = r23791385 * r23791386;
        double r23791388 = r23791384 - r23791387;
        double r23791389 = j;
        double r23791390 = r23791388 * r23791389;
        double r23791391 = z;
        double r23791392 = r23791386 * r23791391;
        double r23791393 = a;
        double r23791394 = r23791393 * r23791383;
        double r23791395 = r23791392 - r23791394;
        double r23791396 = r23791395 * r23791379;
        double r23791397 = r23791391 * r23791382;
        double r23791398 = r23791385 * r23791393;
        double r23791399 = r23791397 - r23791398;
        double r23791400 = cbrt(r23791399);
        double r23791401 = b;
        double r23791402 = r23791400 * r23791400;
        double r23791403 = r23791401 * r23791402;
        double r23791404 = r23791400 * r23791403;
        double r23791405 = r23791396 - r23791404;
        double r23791406 = r23791390 + r23791405;
        double r23791407 = -1.1954740575885239e-185;
        bool r23791408 = r23791379 <= r23791407;
        double r23791409 = r23791379 * r23791392;
        double r23791410 = r23791379 * r23791383;
        double r23791411 = r23791410 * r23791393;
        double r23791412 = r23791409 - r23791411;
        double r23791413 = r23791385 * r23791401;
        double r23791414 = -r23791393;
        double r23791415 = r23791413 * r23791414;
        double r23791416 = r23791401 * r23791391;
        double r23791417 = r23791416 * r23791382;
        double r23791418 = r23791415 + r23791417;
        double r23791419 = r23791412 - r23791418;
        double r23791420 = r23791390 + r23791419;
        double r23791421 = r23791391 * r23791379;
        double r23791422 = r23791421 * r23791386;
        double r23791423 = r23791422 - r23791411;
        double r23791424 = r23791401 * r23791399;
        double r23791425 = r23791423 - r23791424;
        double r23791426 = r23791390 + r23791425;
        double r23791427 = r23791408 ? r23791420 : r23791426;
        double r23791428 = r23791381 ? r23791406 : r23791427;
        return r23791428;
}

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

Target

Original12.8
Target17.0
Herbie11.6
\[\begin{array}{l} \mathbf{if}\;t \lt -8.120978919195912 \cdot 10^{-33}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \mathbf{elif}\;t \lt -4.712553818218485 \cdot 10^{-169}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \frac{j \cdot \left({\left(c \cdot t\right)}^{2.0} - {\left(i \cdot y\right)}^{2.0}\right)}{c \cdot t + i \cdot y}\\ \mathbf{elif}\;t \lt -7.633533346031584 \cdot 10^{-308}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \mathbf{elif}\;t \lt 1.0535888557455487 \cdot 10^{-139}:\\ \;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \frac{j \cdot \left({\left(c \cdot t\right)}^{2.0} - {\left(i \cdot y\right)}^{2.0}\right)}{c \cdot t + i \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(z \cdot y - a \cdot t\right) - \left(b \cdot \left(z \cdot c - a \cdot i\right) - \left(c \cdot t - y \cdot i\right) \cdot j\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -1.3908394767462318e-09

    1. Initial program 7.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. Using strategy rm
    3. Applied add-cube-cbrt7.8

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \color{blue}{\left(\left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    4. Applied associate-*r*7.8

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

    if -1.3908394767462318e-09 < x < -1.1954740575885239e-185

    1. Initial program 14.8

      \[\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 add-cube-cbrt15.1

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

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - \color{blue}{\left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    5. Taylor expanded around inf 12.8

      \[\leadsto \left(\color{blue}{\left(x \cdot \left(z \cdot y\right) - a \cdot \left(x \cdot t\right)\right)} - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    6. Using strategy rm
    7. Applied sub-neg12.8

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

      \[\leadsto \left(\left(x \cdot \left(z \cdot y\right) - a \cdot \left(x \cdot t\right)\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \color{blue}{\left(\sqrt[3]{b} \cdot \left(c \cdot z\right) + \sqrt[3]{b} \cdot \left(-i \cdot a\right)\right)}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    9. Applied distribute-lft-in12.8

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

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

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

    if -1.1954740575885239e-185 < x

    1. Initial program 13.9

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

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

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - \color{blue}{\left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    5. Taylor expanded around inf 13.8

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

      \[\leadsto \left(\left(\color{blue}{\left(x \cdot z\right) \cdot y} - a \cdot \left(x \cdot t\right)\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    8. Taylor expanded around inf 12.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.3908394767462318 \cdot 10^{-09}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{z \cdot c - i \cdot a} \cdot \left(b \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{z \cdot c - i \cdot a}\right)\right)\right)\\ \mathbf{elif}\;x \le -1.1954740575885239 \cdot 10^{-185}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(x \cdot \left(y \cdot z\right) - \left(x \cdot t\right) \cdot a\right) - \left(\left(i \cdot b\right) \cdot \left(-a\right) + \left(b \cdot z\right) \cdot c\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) - b \cdot \left(z \cdot c - i \cdot a\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 
(FPCore (x y z t a b c i j)
  :name "Linear.Matrix:det33 from linear-1.19.1.3"

  :herbie-target
  (if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))

  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))