\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 -797.53682869769:\\
\;\;\;\;\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.00452736762116509 \cdot 10^{-41}:\\
\;\;\;\;\left(\left(y \cdot \left(z \cdot x\right) + \left(-t \cdot \left(x \cdot a\right)\right)\right) - \left(z \cdot \left(b \cdot c\right) + \left(-i \cdot a\right) \cdot b\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(\left(z \cdot b\right) \cdot c + \left(-i \cdot a\right) \cdot b\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 r633980 = x;
double r633981 = y;
double r633982 = z;
double r633983 = r633981 * r633982;
double r633984 = t;
double r633985 = a;
double r633986 = r633984 * r633985;
double r633987 = r633983 - r633986;
double r633988 = r633980 * r633987;
double r633989 = b;
double r633990 = c;
double r633991 = r633990 * r633982;
double r633992 = i;
double r633993 = r633992 * r633985;
double r633994 = r633991 - r633993;
double r633995 = r633989 * r633994;
double r633996 = r633988 - r633995;
double r633997 = j;
double r633998 = r633990 * r633984;
double r633999 = r633992 * r633981;
double r634000 = r633998 - r633999;
double r634001 = r633997 * r634000;
double r634002 = r633996 + r634001;
return r634002;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r634003 = x;
double r634004 = -797.53682869769;
bool r634005 = r634003 <= r634004;
double r634006 = y;
double r634007 = z;
double r634008 = r634006 * r634007;
double r634009 = t;
double r634010 = a;
double r634011 = r634009 * r634010;
double r634012 = r634008 - r634011;
double r634013 = r634003 * r634012;
double r634014 = b;
double r634015 = c;
double r634016 = r634015 * r634007;
double r634017 = i;
double r634018 = r634017 * r634010;
double r634019 = r634016 - r634018;
double r634020 = r634014 * r634019;
double r634021 = r634013 - r634020;
double r634022 = j;
double r634023 = r634022 * r634015;
double r634024 = r634009 * r634023;
double r634025 = r634022 * r634006;
double r634026 = r634017 * r634025;
double r634027 = -r634026;
double r634028 = r634024 + r634027;
double r634029 = r634021 + r634028;
double r634030 = 1.0045273676211651e-41;
bool r634031 = r634003 <= r634030;
double r634032 = r634007 * r634003;
double r634033 = r634006 * r634032;
double r634034 = r634003 * r634010;
double r634035 = r634009 * r634034;
double r634036 = -r634035;
double r634037 = r634033 + r634036;
double r634038 = r634014 * r634015;
double r634039 = r634007 * r634038;
double r634040 = -r634018;
double r634041 = r634040 * r634014;
double r634042 = r634039 + r634041;
double r634043 = r634037 - r634042;
double r634044 = r634015 * r634009;
double r634045 = r634017 * r634006;
double r634046 = r634044 - r634045;
double r634047 = r634022 * r634046;
double r634048 = r634043 + r634047;
double r634049 = r634007 * r634014;
double r634050 = r634049 * r634015;
double r634051 = r634050 + r634041;
double r634052 = r634013 - r634051;
double r634053 = r634052 + r634047;
double r634054 = r634031 ? r634048 : r634053;
double r634055 = r634005 ? r634029 : r634054;
return r634055;
}




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 | 11.9 |
|---|---|
| Target | 16.0 |
| Herbie | 9.2 |
if x < -797.53682869769Initial program 6.6
rmApplied sub-neg6.6
Applied distribute-lft-in6.6
Simplified7.7
Simplified7.7
if -797.53682869769 < x < 1.0045273676211651e-41Initial program 15.1
rmApplied sub-neg15.1
Applied distribute-lft-in15.1
Simplified15.4
Simplified15.4
rmApplied sub-neg15.4
Applied distribute-lft-in15.4
Simplified15.4
Simplified13.1
Taylor expanded around inf 13.1
rmApplied associate-*l*9.8
if 1.0045273676211651e-41 < x Initial program 8.0
rmApplied sub-neg8.0
Applied distribute-lft-in8.0
Simplified8.3
Simplified8.3
rmApplied associate-*r*8.8
Final simplification9.2
herbie shell --seed 2020042
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
: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) (pow (* i y) 2))) (+ (* 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) (pow (* i y) 2))) (+ (* 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)))))