Average Error: 12.7 → 10.4
Time: 23.9s
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.0994599011625377 \cdot 10^{40} \lor \neg \left(j \le 5.67991896958878625 \cdot 10^{109}\right):\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z\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) + \left(-b \cdot i\right) \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\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}\;j \le -1.0994599011625377 \cdot 10^{40} \lor \neg \left(j \le 5.67991896958878625 \cdot 10^{109}\right):\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\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) + \left(-b \cdot i\right) \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\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 r454998 = x;
        double r454999 = y;
        double r455000 = z;
        double r455001 = r454999 * r455000;
        double r455002 = t;
        double r455003 = a;
        double r455004 = r455002 * r455003;
        double r455005 = r455001 - r455004;
        double r455006 = r454998 * r455005;
        double r455007 = b;
        double r455008 = c;
        double r455009 = r455008 * r455000;
        double r455010 = i;
        double r455011 = r455010 * r455003;
        double r455012 = r455009 - r455011;
        double r455013 = r455007 * r455012;
        double r455014 = r455006 - r455013;
        double r455015 = j;
        double r455016 = r455008 * r455002;
        double r455017 = r455010 * r454999;
        double r455018 = r455016 - r455017;
        double r455019 = r455015 * r455018;
        double r455020 = r455014 + r455019;
        return r455020;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r455021 = j;
        double r455022 = -1.0994599011625377e+40;
        bool r455023 = r455021 <= r455022;
        double r455024 = 5.679918969588786e+109;
        bool r455025 = r455021 <= r455024;
        double r455026 = !r455025;
        bool r455027 = r455023 || r455026;
        double r455028 = x;
        double r455029 = y;
        double r455030 = z;
        double r455031 = r455029 * r455030;
        double r455032 = r455028 * r455031;
        double r455033 = a;
        double r455034 = t;
        double r455035 = r455028 * r455034;
        double r455036 = r455033 * r455035;
        double r455037 = -r455036;
        double r455038 = r455032 + r455037;
        double r455039 = b;
        double r455040 = c;
        double r455041 = r455040 * r455030;
        double r455042 = i;
        double r455043 = r455042 * r455033;
        double r455044 = r455041 - r455043;
        double r455045 = r455039 * r455044;
        double r455046 = r455038 - r455045;
        double r455047 = r455040 * r455034;
        double r455048 = r455042 * r455029;
        double r455049 = r455047 - r455048;
        double r455050 = r455021 * r455049;
        double r455051 = r455046 + r455050;
        double r455052 = r455034 * r455033;
        double r455053 = r455031 - r455052;
        double r455054 = r455028 * r455053;
        double r455055 = r455039 * r455040;
        double r455056 = r455030 * r455055;
        double r455057 = r455039 * r455042;
        double r455058 = -r455057;
        double r455059 = r455058 * r455033;
        double r455060 = r455056 + r455059;
        double r455061 = r455054 - r455060;
        double r455062 = r455021 * r455040;
        double r455063 = r455034 * r455062;
        double r455064 = r455021 * r455029;
        double r455065 = r455042 * r455064;
        double r455066 = -r455065;
        double r455067 = r455063 + r455066;
        double r455068 = r455061 + r455067;
        double r455069 = r455027 ? r455051 : r455068;
        return r455069;
}

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.7
Target16.6
Herbie10.4
\[\begin{array}{l} \mathbf{if}\;t \lt -8.1209789191959122 \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.7125538182184851 \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} - {\left(i \cdot y\right)}^{2}\right)}{c \cdot t + i \cdot y}\\ \mathbf{elif}\;t \lt -7.63353334603158369 \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} - {\left(i \cdot y\right)}^{2}\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 2 regimes
  2. if j < -1.0994599011625377e+40 or 5.679918969588786e+109 < j

    1. Initial program 8.3

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

      \[\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-in8.3

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

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

    if -1.0994599011625377e+40 < j < 5.679918969588786e+109

    1. Initial program 14.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 sub-neg14.2

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

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

      \[\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)\]
    6. Using strategy rm
    7. Applied distribute-lft-neg-in14.7

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

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

      \[\leadsto \left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \color{blue}{\left(-b \cdot i\right)} \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
    10. Using strategy rm
    11. Applied sub-neg14.5

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;j \le -1.0994599011625377 \cdot 10^{40} \lor \neg \left(j \le 5.67991896958878625 \cdot 10^{109}\right):\\ \;\;\;\;\left(\left(x \cdot \left(y \cdot z\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) + \left(-b \cdot i\right) \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\ \end{array}\]

Reproduce

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