\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}\;y4 \leq -8.773097809456727 \cdot 10^{-168}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right) + \left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + k \cdot \left(z \cdot \left(y0 \cdot b - y1 \cdot i\right)\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right)\right) - \left(y2 \cdot t - y3 \cdot y\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\right) + \sqrt[3]{y4 \cdot y1 - y0 \cdot y5} \cdot \left(\left(y2 \cdot k - y3 \cdot j\right) \cdot \left(\sqrt[3]{y4 \cdot y1 - y0 \cdot y5} \cdot \sqrt[3]{y4 \cdot y1 - y0 \cdot y5}\right)\right)\\
\mathbf{elif}\;y4 \leq -1.20454235528856 \cdot 10^{-211}:\\
\;\;\;\;\left(y4 \cdot y1 - y0 \cdot y5\right) \cdot \left(y2 \cdot k - y3 \cdot j\right) + \left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right) + \left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right) + \left(\left(a \cdot \left(z \cdot \left(y3 \cdot y1\right)\right) + y0 \cdot \left(x \cdot \left(y2 \cdot c\right)\right)\right) - \left(a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right) + y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right)\right)\right)\right)\right) - \left(y2 \cdot t - y3 \cdot y\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\right)\\
\mathbf{elif}\;y4 \leq -2.638743412727959 \cdot 10^{-294}:\\
\;\;\;\;\left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right) + \left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) - \left(y2 \cdot t - y3 \cdot y\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\right) + k \cdot \left(y2 \cdot \left(y4 \cdot y1 - y0 \cdot y5\right)\right)\\
\mathbf{elif}\;y4 \leq 1.7999408213134473 \cdot 10^{+131}:\\
\;\;\;\;\left(y4 \cdot y1 - y0 \cdot y5\right) \cdot \left(y2 \cdot k - y3 \cdot j\right) + \left(\left(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right) + \left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right) + \left(\left(t \cdot \left(j \cdot \left(y4 \cdot b\right)\right) + k \cdot \left(y \cdot \left(i \cdot y5\right)\right)\right) - \left(k \cdot \left(y \cdot \left(y4 \cdot b\right)\right) + t \cdot \left(j \cdot \left(i \cdot y5\right)\right)\right)\right)\right) - \left(y2 \cdot t - y3 \cdot y\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - i \cdot y5\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(c \cdot y0 - a \cdot y1\right) + \left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(y0 \cdot b - y1 \cdot i\right) \cdot \left(x \cdot j - z \cdot k\right)\right)\right)\right) - \left(y2 \cdot t - y3 \cdot y\right) \cdot \left(y4 \cdot c - a \cdot y5\right)\right) + \left(y0 \cdot y5\right) \cdot \left(y3 \cdot j - y2 \cdot k\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 (<= y4 -8.773097809456727e-168)
(+
(-
(+
(+
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1)))
(+
(* (- (* x y) (* z t)) (- (* a b) (* c i)))
(* k (* z (- (* y0 b) (* y1 i))))))
(* (- (* t j) (* y k)) (- (* y4 b) (* i y5))))
(* (- (* y2 t) (* y3 y)) (- (* y4 c) (* a y5))))
(*
(cbrt (- (* y4 y1) (* y0 y5)))
(*
(- (* y2 k) (* y3 j))
(* (cbrt (- (* y4 y1) (* y0 y5))) (cbrt (- (* y4 y1) (* y0 y5)))))))
(if (<= y4 -1.20454235528856e-211)
(+
(* (- (* y4 y1) (* y0 y5)) (- (* y2 k) (* y3 j)))
(-
(+
(* (- (* t j) (* y k)) (- (* y4 b) (* i y5)))
(+
(-
(* (- (* x y) (* z t)) (- (* a b) (* c i)))
(* (- (* y0 b) (* y1 i)) (- (* x j) (* z k))))
(-
(+ (* a (* z (* y3 y1))) (* y0 (* x (* y2 c))))
(+ (* a (* x (* y2 y1))) (* y0 (* z (* y3 c)))))))
(* (- (* y2 t) (* y3 y)) (- (* y4 c) (* a y5)))))
(if (<= y4 -2.638743412727959e-294)
(+
(-
(+
(* (- (* t j) (* y k)) (- (* y4 b) (* i y5)))
(+
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1)))
(-
(* (- (* x y) (* z t)) (- (* a b) (* c i)))
(* (- (* y0 b) (* y1 i)) (- (* x j) (* z k))))))
(* (- (* y2 t) (* y3 y)) (- (* y4 c) (* a y5))))
(* k (* y2 (- (* y4 y1) (* y0 y5)))))
(if (<= y4 1.7999408213134473e+131)
(+
(* (- (* y4 y1) (* y0 y5)) (- (* y2 k) (* y3 j)))
(-
(+
(+
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1)))
(-
(* (- (* x y) (* z t)) (- (* a b) (* c i)))
(* (- (* y0 b) (* y1 i)) (- (* x j) (* z k)))))
(-
(+ (* t (* j (* y4 b))) (* k (* y (* i y5))))
(+ (* k (* y (* y4 b))) (* t (* j (* i y5))))))
(* (- (* y2 t) (* y3 y)) (- (* y4 c) (* a y5)))))
(+
(-
(+
(* (- (* t j) (* y k)) (- (* y4 b) (* i y5)))
(+
(* (- (* x y2) (* z y3)) (- (* c y0) (* a y1)))
(-
(* (- (* x y) (* z t)) (- (* a b) (* c i)))
(* (- (* y0 b) (* y1 i)) (- (* x j) (* z k))))))
(* (- (* y2 t) (* y3 y)) (- (* y4 c) (* a y5))))
(* (* y0 y5) (- (* y3 j) (* y2 k)))))))))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 (y4 <= -8.773097809456727e-168) {
tmp = ((((((x * y2) - (z * y3)) * ((c * y0) - (a * y1))) + ((((x * y) - (z * t)) * ((a * b) - (c * i))) + (k * (z * ((y0 * b) - (y1 * i)))))) + (((t * j) - (y * k)) * ((y4 * b) - (i * y5)))) - (((y2 * t) - (y3 * y)) * ((y4 * c) - (a * y5)))) + (cbrt((y4 * y1) - (y0 * y5)) * (((y2 * k) - (y3 * j)) * (cbrt((y4 * y1) - (y0 * y5)) * cbrt((y4 * y1) - (y0 * y5)))));
} else if (y4 <= -1.20454235528856e-211) {
tmp = (((y4 * y1) - (y0 * y5)) * ((y2 * k) - (y3 * j))) + (((((t * j) - (y * k)) * ((y4 * b) - (i * y5))) + (((((x * y) - (z * t)) * ((a * b) - (c * i))) - (((y0 * b) - (y1 * i)) * ((x * j) - (z * k)))) + (((a * (z * (y3 * y1))) + (y0 * (x * (y2 * c)))) - ((a * (x * (y2 * y1))) + (y0 * (z * (y3 * c))))))) - (((y2 * t) - (y3 * y)) * ((y4 * c) - (a * y5))));
} else if (y4 <= -2.638743412727959e-294) {
tmp = (((((t * j) - (y * k)) * ((y4 * b) - (i * y5))) + ((((x * y2) - (z * y3)) * ((c * y0) - (a * y1))) + ((((x * y) - (z * t)) * ((a * b) - (c * i))) - (((y0 * b) - (y1 * i)) * ((x * j) - (z * k)))))) - (((y2 * t) - (y3 * y)) * ((y4 * c) - (a * y5)))) + (k * (y2 * ((y4 * y1) - (y0 * y5))));
} else if (y4 <= 1.7999408213134473e+131) {
tmp = (((y4 * y1) - (y0 * y5)) * ((y2 * k) - (y3 * j))) + ((((((x * y2) - (z * y3)) * ((c * y0) - (a * y1))) + ((((x * y) - (z * t)) * ((a * b) - (c * i))) - (((y0 * b) - (y1 * i)) * ((x * j) - (z * k))))) + (((t * (j * (y4 * b))) + (k * (y * (i * y5)))) - ((k * (y * (y4 * b))) + (t * (j * (i * y5)))))) - (((y2 * t) - (y3 * y)) * ((y4 * c) - (a * y5))));
} else {
tmp = (((((t * j) - (y * k)) * ((y4 * b) - (i * y5))) + ((((x * y2) - (z * y3)) * ((c * y0) - (a * y1))) + ((((x * y) - (z * t)) * ((a * b) - (c * i))) - (((y0 * b) - (y1 * i)) * ((x * j) - (z * k)))))) - (((y2 * t) - (y3 * y)) * ((y4 * c) - (a * y5)))) + ((y0 * y5) * ((y3 * j) - (y2 * k)));
}
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.7 |
| Alternative 1 | |
|---|---|
| Error | 28.6 |
| Cost | 27649 |
| Alternative 2 | |
|---|---|
| Error | 27.7 |
| Cost | 8067 |
| Alternative 3 | |
|---|---|
| Error | 28.6 |
| Cost | 7746 |
| Alternative 4 | |
|---|---|
| Error | 29.7 |
| Cost | 6466 |
| Alternative 5 | |
|---|---|
| Error | 28.7 |
| Cost | 7108 |
| Alternative 6 | |
|---|---|
| Error | 29.4 |
| Cost | 6466 |
| Alternative 7 | |
|---|---|
| Error | 29.5 |
| Cost | 6466 |
| Alternative 8 | |
|---|---|
| Error | 29.7 |
| Cost | 6152 |
| Alternative 9 | |
|---|---|
| Error | 30.1 |
| Cost | 5824 |
| Alternative 10 | |
|---|---|
| Error | 62.3 |
| Cost | 64 |
| Alternative 11 | |
|---|---|
| Error | 62.3 |
| Cost | 64 |

if y4 < -8.7730978094567266e-168Initial program 27.7
rmApplied add-cube-cbrt_binary64_1648127.8
Applied associate-*r*_binary64_1638627.8
Taylor expanded around 0 29.9
Simplified29.9
Simplified29.9
if -8.7730978094567266e-168 < y4 < -1.2045423552885599e-211Initial program 25.9
Taylor expanded around 0 28.4
Simplified28.4
Simplified28.4
if -1.2045423552885599e-211 < y4 < -2.63874341272795906e-294Initial program 28.2
Taylor expanded around inf 28.4
Simplified28.4
Simplified28.4
if -2.63874341272795906e-294 < y4 < 1.79994082131344725e131Initial program 26.3
Taylor expanded around 0 27.2
Simplified26.5
Simplified26.5
if 1.79994082131344725e131 < y4 Initial program 31.9
Taylor expanded around 0 37.2
Simplified37.6
Simplified37.6
Final simplification28.7
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)))))