\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}\;i \leq -8.214285784508065 \cdot 10^{+124}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right) + \left(\left(t \cdot \left(y4 \cdot \left(b \cdot j\right)\right) + k \cdot \left(i \cdot \left(y \cdot y5\right)\right)\right) - \left(k \cdot \left(y4 \cdot \left(y \cdot b\right)\right) + t \cdot \left(i \cdot \left(j \cdot y5\right)\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y1 \cdot y4 - y0 \cdot y5\right)\\
\mathbf{elif}\;i \leq -4.447041415389942 \cdot 10^{-05}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(b \cdot y4 - i \cdot y5\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right) + \left(\left(k \cdot \left(y1 \cdot \left(y2 \cdot y4\right)\right) + y0 \cdot \left(y3 \cdot \left(j \cdot y5\right)\right)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + j \cdot \left(y3 \cdot \left(y1 \cdot y4\right)\right)\right)\right)\\
\mathbf{elif}\;i \leq -9.975735096129856 \cdot 10^{-131}:\\
\;\;\;\;\left(k \cdot y2 - 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 - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(\left(a \cdot \left(z \cdot \left(y1 \cdot y3\right)\right) + y0 \cdot \left(x \cdot \left(c \cdot y2\right)\right)\right) - \left(a \cdot \left(x \cdot \left(y1 \cdot y2\right)\right) + y0 \cdot \left(z \cdot \left(c \cdot y3\right)\right)\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right)\\
\mathbf{elif}\;i \leq 8.102366136004533 \cdot 10^{-234}:\\
\;\;\;\;\left(k \cdot y2 - 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 - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right) + t \cdot \left(j \cdot \left(b \cdot y4 - i \cdot y5\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right)\\
\mathbf{elif}\;i \leq 1205512874.0312564:\\
\;\;\;\;\left(k \cdot y2 - 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 - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0\right) + \left(a \cdot y1\right) \cdot \left(z \cdot y3 - x \cdot y2\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right)\\
\mathbf{elif}\;i \leq 2.3566714618207404 \cdot 10^{+137}:\\
\;\;\;\;\left(k \cdot y2 - 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(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right) + \left(a \cdot \left(\left(x \cdot y - z \cdot t\right) \cdot b\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - i \cdot c\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(b \cdot y0 - i \cdot y1\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(b \cdot y4 - i \cdot y5\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(c \cdot y4 - a \cdot y5\right)\right) - y0 \cdot \left(y5 \cdot \left(k \cdot y2 - j \cdot y3\right)\right)\\
\end{array}(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:precision binary64
(+
(-
(+
(+
(-
(* (- (* 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)))))(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:precision binary64
(if (<= i -8.214285784508065e+124)
(+
(-
(+
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))))
(-
(+ (* t (* y4 (* b j))) (* k (* i (* y y5))))
(+ (* k (* y4 (* y b))) (* t (* i (* j y5))))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5))))
(* (- (* k y2) (* j y3)) (- (* y1 y4) (* y0 y5))))
(if (<= i -4.447041415389942e-05)
(+
(-
(+
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))))
(* (- (* t j) (* y k)) (- (* b y4) (* i y5))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5))))
(-
(+ (* k (* y1 (* y2 y4))) (* y0 (* y3 (* j y5))))
(+ (* y0 (* y2 (* k y5))) (* j (* y3 (* y1 y4))))))
(if (<= i -9.975735096129856e-131)
(+
(* (- (* k y2) (* j y3)) (- (* y1 y4) (* y0 y5)))
(-
(+
(* (- (* t j) (* y k)) (- (* b y4) (* i y5)))
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(-
(+ (* a (* z (* y1 y3))) (* y0 (* x (* c y2))))
(+ (* a (* x (* y1 y2))) (* y0 (* z (* c y3)))))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5)))))
(if (<= i 8.102366136004533e-234)
(+
(* (- (* k y2) (* j y3)) (- (* y1 y4) (* y0 y5)))
(-
(+
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))))
(* t (* j (- (* b y4) (* i y5)))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5)))))
(if (<= i 1205512874.0312564)
(+
(* (- (* k y2) (* j y3)) (- (* y1 y4) (* y0 y5)))
(-
(+
(* (- (* t j) (* y k)) (- (* b y4) (* i y5)))
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(+
(* (- (* x y2) (* z y3)) (* c y0))
(* (* a y1) (- (* z y3) (* x y2))))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5)))))
(if (<= i 2.3566714618207404e+137)
(+
(* (- (* k y2) (* j y3)) (- (* y1 y4) (* y0 y5)))
(-
(+
(* (- (* t j) (* y k)) (- (* b y4) (* i y5)))
(+
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1)))
(-
(* a (* (- (* x y) (* z t)) b))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5)))))
(-
(-
(+
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* i c)))
(* (- (* x j) (* z k)) (- (* b y0) (* i y1))))
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))))
(* (- (* t j) (* y k)) (- (* b y4) (* i y5))))
(* (- (* t y2) (* y y3)) (- (* c y4) (* a y5))))
(* y0 (* y5 (- (* k y2) (* j y3))))))))))))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 (((((((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)));
}
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 tmp;
if (i <= -8.214285784508065e+124) {
tmp = (((((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + (((x * y2) - (z * y3)) * ((c * y0) - (a * y1)))) + (((t * (y4 * (b * j))) + (k * (i * (y * y5)))) - ((k * (y4 * (y * b))) + (t * (i * (j * y5)))))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5)))) + (((k * y2) - (j * y3)) * ((y1 * y4) - (y0 * y5)));
} else if (i <= -4.447041415389942e-05) {
tmp = (((((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + (((x * y2) - (z * y3)) * ((c * y0) - (a * y1)))) + (((t * j) - (y * k)) * ((b * y4) - (i * y5)))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5)))) + (((k * (y1 * (y2 * y4))) + (y0 * (y3 * (j * y5)))) - ((y0 * (y2 * (k * y5))) + (j * (y3 * (y1 * y4)))));
} else if (i <= -9.975735096129856e-131) {
tmp = (((k * y2) - (j * y3)) * ((y1 * y4) - (y0 * y5))) + (((((t * j) - (y * k)) * ((b * y4) - (i * y5))) + (((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + (((a * (z * (y1 * y3))) + (y0 * (x * (c * y2)))) - ((a * (x * (y1 * y2))) + (y0 * (z * (c * y3))))))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5))));
} else if (i <= 8.102366136004533e-234) {
tmp = (((k * y2) - (j * y3)) * ((y1 * y4) - (y0 * y5))) + (((((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + (((x * y2) - (z * y3)) * ((c * y0) - (a * y1)))) + (t * (j * ((b * y4) - (i * y5))))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5))));
} else if (i <= 1205512874.0312564) {
tmp = (((k * y2) - (j * y3)) * ((y1 * y4) - (y0 * y5))) + (((((t * j) - (y * k)) * ((b * y4) - (i * y5))) + (((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + ((((x * y2) - (z * y3)) * (c * y0)) + ((a * y1) * ((z * y3) - (x * y2)))))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5))));
} else if (i <= 2.3566714618207404e+137) {
tmp = (((k * y2) - (j * y3)) * ((y1 * y4) - (y0 * y5))) + (((((t * j) - (y * k)) * ((b * y4) - (i * y5))) + ((((x * y2) - (z * y3)) * ((c * y0) - (a * y1))) + ((a * (((x * y) - (z * t)) * b)) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5))));
} else {
tmp = (((((((x * y) - (z * t)) * ((a * b) - (i * c))) - (((x * j) - (z * k)) * ((b * y0) - (i * y1)))) + (((x * y2) - (z * y3)) * ((c * y0) - (a * y1)))) + (((t * j) - (y * k)) * ((b * y4) - (i * y5)))) - (((t * y2) - (y * y3)) * ((c * y4) - (a * y5)))) - (y0 * (y5 * ((k * y2) - (j * y3))));
}
return tmp;
}




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 | 27.3 |
|---|---|
| Target | 30.8 |
| Herbie | 28.6 |
if i < -8.21428578450806517e124Initial program 32.2
Taylor expanded around 0 32.8
if -8.21428578450806517e124 < i < -4.4470414153899421e-5Initial program 25.1
Taylor expanded around 0 26.3
if -4.4470414153899421e-5 < i < -9.97573509612985612e-131Initial program 25.9
Taylor expanded around 0 28.0
if -9.97573509612985612e-131 < i < 8.10236613600453263e-234Initial program 27.8
Taylor expanded around inf 29.0
if 8.10236613600453263e-234 < i < 1205512874.03125644Initial program 25.6
rmApplied sub-neg_binary64_1439325.6
Applied distribute-rgt-in_binary64_1435025.6
if 1205512874.03125644 < i < 2.3566714618207404e137Initial program 26.7
Taylor expanded around inf 31.4
Simplified31.4
if 2.3566714618207404e137 < i Initial program 31.8
Taylor expanded around 0 32.9
Simplified32.9
Final simplification28.6
herbie shell --seed 2021044
(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)))))