\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)
\begin{array}{l}
\mathbf{if}\;y2 \le -2.6363992935165653 \cdot 10^{36}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + \left(x \cdot j - z \cdot k\right) \cdot \left(i \cdot y1 - b \cdot y0\right)\right) + \left(a \cdot \left(y3 \cdot \left(z \cdot y1\right)\right) - \left(y0 \cdot \left(z \cdot \left(c \cdot y3\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(b \cdot y4 - i \cdot y5\right)\right) + \left(y2 \cdot t - y \cdot y3\right) \cdot \left(a \cdot y5 - c \cdot y4\right)\right) + \left(y2 \cdot k - j \cdot y3\right) \cdot \left(y1 \cdot y4 - y0 \cdot y5\right)\\
\mathbf{elif}\;y2 \le -2.8685675761138032 \cdot 10^{-274}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y1 \cdot y4 - y0 \cdot y5\right) + \left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(b \cdot y4 - i \cdot y5\right) + \left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + \left(y1 \cdot \left(i \cdot \left(x \cdot j - z \cdot k\right)\right) + y0 \cdot \left(b \cdot \left(z \cdot k - x \cdot j\right)\right)\right)\right) + \left(y2 \cdot x - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right)\right) - \sqrt[3]{\left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)} \cdot \left(\sqrt[3]{\left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)} \cdot \sqrt[3]{\left(y2 \cdot t - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)}\right)\right)\\
\mathbf{elif}\;y2 \le 1.38320153188012774 \cdot 10^{30}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y1 \cdot y4 - y0 \cdot y5\right) + \left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(b \cdot y4 - i \cdot y5\right) + \left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + \left(x \cdot j - z \cdot k\right) \cdot \left(i \cdot y1 - b \cdot y0\right)\right) + \left(y2 \cdot x - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right)\right) + \left(\left(y \cdot \left(y3 \cdot \left(c \cdot y4\right)\right) + y5 \cdot \left(a \cdot \left(y2 \cdot t\right)\right)\right) - a \cdot \left(y3 \cdot \left(y \cdot y5\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y2 \cdot k - j \cdot y3\right) \cdot \left(y1 \cdot y4 - y0 \cdot y5\right) + \left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + \left(x \cdot j - z \cdot k\right) \cdot \left(i \cdot y1 - b \cdot y0\right)\right) + \left(y2 \cdot x - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right) + \left(y4 \cdot \left(b \cdot \left(t \cdot j - y \cdot k\right)\right) + \left(i \cdot y5\right) \cdot \left(y \cdot k - t \cdot j\right)\right)\right) + \left(y2 \cdot t - y \cdot y3\right) \cdot \left(a \cdot y5 - c \cdot y4\right)\right)\\
\end{array}double code(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
return ((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (((double) (a * b)) - ((double) (c * i)))))) - ((double) (((double) (((double) (x * j)) - ((double) (z * k)))) * ((double) (((double) (y0 * b)) - ((double) (y1 * i)))))))) + ((double) (((double) (((double) (x * y2)) - ((double) (z * y3)))) * ((double) (((double) (y0 * c)) - ((double) (y1 * a)))))))) + ((double) (((double) (((double) (t * j)) - ((double) (y * k)))) * ((double) (((double) (y4 * b)) - ((double) (y5 * i)))))))) - ((double) (((double) (((double) (t * y2)) - ((double) (y * y3)))) * ((double) (((double) (y4 * c)) - ((double) (y5 * a)))))))) + ((double) (((double) (((double) (k * y2)) - ((double) (j * y3)))) * ((double) (((double) (y4 * y1)) - ((double) (y5 * y0))))))));
}
double code(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double VAR;
if ((y2 <= -2.6363992935165653e+36)) {
VAR = ((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (((double) (a * b)) - ((double) (c * i)))))) + ((double) (((double) (((double) (x * j)) - ((double) (z * k)))) * ((double) (((double) (i * y1)) - ((double) (b * y0)))))))) + ((double) (((double) (a * ((double) (y3 * ((double) (z * y1)))))) - ((double) (((double) (y0 * ((double) (z * ((double) (c * y3)))))) + ((double) (a * ((double) (x * ((double) (y2 * y1)))))))))))) + ((double) (((double) (((double) (t * j)) - ((double) (y * k)))) * ((double) (((double) (b * y4)) - ((double) (i * y5)))))))) + ((double) (((double) (((double) (y2 * t)) - ((double) (y * y3)))) * ((double) (((double) (a * y5)) - ((double) (c * y4)))))))) + ((double) (((double) (((double) (y2 * k)) - ((double) (j * y3)))) * ((double) (((double) (y1 * y4)) - ((double) (y0 * y5))))))));
} else {
double VAR_1;
if ((y2 <= -2.868567576113803e-274)) {
VAR_1 = ((double) (((double) (((double) (((double) (y2 * k)) - ((double) (j * y3)))) * ((double) (((double) (y1 * y4)) - ((double) (y0 * y5)))))) + ((double) (((double) (((double) (((double) (((double) (t * j)) - ((double) (y * k)))) * ((double) (((double) (b * y4)) - ((double) (i * y5)))))) + ((double) (((double) (((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (((double) (a * b)) - ((double) (c * i)))))) + ((double) (((double) (y1 * ((double) (i * ((double) (((double) (x * j)) - ((double) (z * k)))))))) + ((double) (y0 * ((double) (b * ((double) (((double) (z * k)) - ((double) (x * j)))))))))))) + ((double) (((double) (((double) (y2 * x)) - ((double) (z * y3)))) * ((double) (((double) (c * y0)) - ((double) (a * y1)))))))))) - ((double) (((double) cbrt(((double) (((double) (((double) (y2 * t)) - ((double) (y * y3)))) * ((double) (((double) (c * y4)) - ((double) (a * y5)))))))) * ((double) (((double) cbrt(((double) (((double) (((double) (y2 * t)) - ((double) (y * y3)))) * ((double) (((double) (c * y4)) - ((double) (a * y5)))))))) * ((double) cbrt(((double) (((double) (((double) (y2 * t)) - ((double) (y * y3)))) * ((double) (((double) (c * y4)) - ((double) (a * y5))))))))))))))));
} else {
double VAR_2;
if ((y2 <= 1.3832015318801277e+30)) {
VAR_2 = ((double) (((double) (((double) (((double) (y2 * k)) - ((double) (j * y3)))) * ((double) (((double) (y1 * y4)) - ((double) (y0 * y5)))))) + ((double) (((double) (((double) (((double) (((double) (t * j)) - ((double) (y * k)))) * ((double) (((double) (b * y4)) - ((double) (i * y5)))))) + ((double) (((double) (((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (((double) (a * b)) - ((double) (c * i)))))) + ((double) (((double) (((double) (x * j)) - ((double) (z * k)))) * ((double) (((double) (i * y1)) - ((double) (b * y0)))))))) + ((double) (((double) (((double) (y2 * x)) - ((double) (z * y3)))) * ((double) (((double) (c * y0)) - ((double) (a * y1)))))))))) + ((double) (((double) (((double) (y * ((double) (y3 * ((double) (c * y4)))))) + ((double) (y5 * ((double) (a * ((double) (y2 * t)))))))) - ((double) (a * ((double) (y3 * ((double) (y * y5))))))))))));
} else {
VAR_2 = ((double) (((double) (((double) (((double) (y2 * k)) - ((double) (j * y3)))) * ((double) (((double) (y1 * y4)) - ((double) (y0 * y5)))))) + ((double) (((double) (((double) (((double) (((double) (((double) (((double) (x * y)) - ((double) (z * t)))) * ((double) (((double) (a * b)) - ((double) (c * i)))))) + ((double) (((double) (((double) (x * j)) - ((double) (z * k)))) * ((double) (((double) (i * y1)) - ((double) (b * y0)))))))) + ((double) (((double) (((double) (y2 * x)) - ((double) (z * y3)))) * ((double) (((double) (c * y0)) - ((double) (a * y1)))))))) + ((double) (((double) (y4 * ((double) (b * ((double) (((double) (t * j)) - ((double) (y * k)))))))) + ((double) (((double) (i * y5)) * ((double) (((double) (y * k)) - ((double) (t * j)))))))))) + ((double) (((double) (((double) (y2 * t)) - ((double) (y * y3)))) * ((double) (((double) (a * y5)) - ((double) (c * y4))))))))));
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}




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




Bits error versus k




Bits error versus y0




Bits error versus y1




Bits error versus y2




Bits error versus y3




Bits error versus y4




Bits error versus y5
Results
| Original | 26.4 |
|---|---|
| Target | 30.0 |
| Herbie | 27.9 |
if y2 < -2.6363992935165653e36Initial program 29.8
Taylor expanded around inf 33.8
Simplified33.8
if -2.6363992935165653e36 < y2 < -2.8685675761138032e-274Initial program 24.4
rmApplied add-cube-cbrt24.5
Simplified24.5
Simplified24.5
rmApplied sub-neg24.5
Applied distribute-lft-in24.5
Simplified24.8
Simplified25.3
if -2.8685675761138032e-274 < y2 < 1.38320153188012774e30Initial program 26.0
Taylor expanded around inf 27.3
Simplified27.3
if 1.38320153188012774e30 < y2 Initial program 28.7
rmApplied sub-neg28.7
Applied distribute-lft-in28.7
Simplified29.3
Simplified29.3
Final simplification27.9
herbie shell --seed 2020184
(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:name "Linear.Matrix:det44 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< y4 -7.206256231996481e+60) (- (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))))) (- (/ (- (* y2 t) (* y3 y)) (/ 1.0 (- (* y4 c) (* y5 a)))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (if (< y4 -3.364603505246317e-66) (+ (- (- (- (* (* t c) (* i z)) (* (* a t) (* b z))) (* (* y c) (* i x))) (* (- (* b y0) (* i y1)) (- (* j x) (* k z)))) (- (* (- (* y0 c) (* a y1)) (- (* x y2) (* z y3))) (- (* (- (* t y2) (* y y3)) (- (* y4 c) (* a y5))) (* (- (* y1 y4) (* y5 y0)) (- (* k y2) (* j y3)))))) (if (< y4 -1.2000065055686116e-105) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 6.718963124057495e-279) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (if (< y4 4.77962681403792e-222) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 2.2852241541266835e-175) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (- (* k (* i (* z y1))) (+ (* j (* i (* x y1))) (* y0 (* k (* z b)))))) (- (* z (* y3 (* a y1))) (+ (* y2 (* x (* a y1))) (* y0 (* z (* c y3)))))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))))))))
(+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (* (- (* x j) (* z k)) (- (* y0 b) (* y1 i)))) (* (- (* x y2) (* z y3)) (- (* y0 c) (* y1 a)))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0)))))