\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;
}




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
Results
| Original | 12.7 |
|---|---|
| Target | 16.6 |
| Herbie | 10.4 |
if j < -1.0994599011625377e+40 or 5.679918969588786e+109 < j Initial program 8.3
rmApplied sub-neg8.3
Applied distribute-lft-in8.3
Simplified8.2
if -1.0994599011625377e+40 < j < 5.679918969588786e+109Initial program 14.2
rmApplied sub-neg14.2
Applied distribute-lft-in14.2
Simplified14.7
rmApplied distribute-lft-neg-in14.7
Applied associate-*r*14.5
Simplified14.5
rmApplied sub-neg14.5
Applied distribute-lft-in14.5
Simplified12.8
Simplified11.2
Final simplification10.4
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)))))