\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)
\begin{array}{l}
\mathbf{if}\;i \le -1.098621597560500380851074574237268675645 \cdot 10^{88}:\\
\;\;\;\;\left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(\left(j \cdot y\right) \cdot \left(-i\right) + \left(j \cdot a\right) \cdot c\right)\\
\mathbf{elif}\;i \le -7.555102642495296578879189953916183397157 \cdot 10^{-37}:\\
\;\;\;\;\left(\left(\left(\left(-t\right) \cdot x\right) \cdot a + y \cdot \left(x \cdot z\right)\right) - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\
\mathbf{elif}\;i \le -4.744514932447807268011490676531841412419 \cdot 10^{-89}:\\
\;\;\;\;\left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(\left(j \cdot y\right) \cdot \left(-i\right) + \left(j \cdot a\right) \cdot c\right)\\
\mathbf{elif}\;i \le 1.515365183825760339583393401309137577846 \cdot 10^{-274}:\\
\;\;\;\;\left(\left(\left(\left(-t\right) \cdot x\right) \cdot a + y \cdot \left(x \cdot z\right)\right) - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\
\mathbf{elif}\;i \le 1.569768768932546917440066029425131537044 \cdot 10^{-76}:\\
\;\;\;\;\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\left(\sqrt[3]{j} \cdot \sqrt[3]{\mathsf{fma}\left(a, c, i \cdot \left(-y\right)\right)}\right) \cdot \left(\sqrt[3]{\mathsf{fma}\left(c, a, i \cdot \left(-y\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(c, a, i \cdot \left(-y\right)\right)}\right)\right) + \left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(z \cdot c - t \cdot i\right) \cdot b\right)\\
\mathbf{elif}\;i \le 4.436112083125670348687690237201276105115 \cdot 10^{133}:\\
\;\;\;\;\left(\left(\left(\left(-t\right) \cdot x\right) \cdot a + y \cdot \left(x \cdot z\right)\right) - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\
\mathbf{else}:\\
\;\;\;\;\left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(\left(b \cdot t\right) \cdot \left(-i\right) + b \cdot \left(z \cdot c\right)\right)\right) + \left(\left(j \cdot y\right) \cdot \left(-i\right) + \left(j \cdot a\right) \cdot c\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r523932 = x;
double r523933 = y;
double r523934 = z;
double r523935 = r523933 * r523934;
double r523936 = t;
double r523937 = a;
double r523938 = r523936 * r523937;
double r523939 = r523935 - r523938;
double r523940 = r523932 * r523939;
double r523941 = b;
double r523942 = c;
double r523943 = r523942 * r523934;
double r523944 = i;
double r523945 = r523936 * r523944;
double r523946 = r523943 - r523945;
double r523947 = r523941 * r523946;
double r523948 = r523940 - r523947;
double r523949 = j;
double r523950 = r523942 * r523937;
double r523951 = r523933 * r523944;
double r523952 = r523950 - r523951;
double r523953 = r523949 * r523952;
double r523954 = r523948 + r523953;
return r523954;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r523955 = i;
double r523956 = -1.0986215975605004e+88;
bool r523957 = r523955 <= r523956;
double r523958 = y;
double r523959 = z;
double r523960 = r523958 * r523959;
double r523961 = t;
double r523962 = a;
double r523963 = r523961 * r523962;
double r523964 = r523960 - r523963;
double r523965 = x;
double r523966 = r523964 * r523965;
double r523967 = b;
double r523968 = r523967 * r523961;
double r523969 = -r523955;
double r523970 = r523968 * r523969;
double r523971 = c;
double r523972 = r523959 * r523971;
double r523973 = r523967 * r523972;
double r523974 = r523970 + r523973;
double r523975 = r523966 - r523974;
double r523976 = j;
double r523977 = r523976 * r523958;
double r523978 = r523977 * r523969;
double r523979 = r523976 * r523962;
double r523980 = r523979 * r523971;
double r523981 = r523978 + r523980;
double r523982 = r523975 + r523981;
double r523983 = -7.555102642495297e-37;
bool r523984 = r523955 <= r523983;
double r523985 = -r523961;
double r523986 = r523985 * r523965;
double r523987 = r523986 * r523962;
double r523988 = r523965 * r523959;
double r523989 = r523958 * r523988;
double r523990 = r523987 + r523989;
double r523991 = r523990 - r523974;
double r523992 = r523971 * r523962;
double r523993 = r523958 * r523955;
double r523994 = r523992 - r523993;
double r523995 = r523994 * r523976;
double r523996 = r523991 + r523995;
double r523997 = -4.744514932447807e-89;
bool r523998 = r523955 <= r523997;
double r523999 = 1.5153651838257603e-274;
bool r524000 = r523955 <= r523999;
double r524001 = 1.569768768932547e-76;
bool r524002 = r523955 <= r524001;
double r524003 = cbrt(r523976);
double r524004 = r524003 * r524003;
double r524005 = -r523958;
double r524006 = r523955 * r524005;
double r524007 = fma(r523962, r523971, r524006);
double r524008 = cbrt(r524007);
double r524009 = r524003 * r524008;
double r524010 = fma(r523971, r523962, r524006);
double r524011 = cbrt(r524010);
double r524012 = r524011 * r524011;
double r524013 = r524009 * r524012;
double r524014 = r524004 * r524013;
double r524015 = r523961 * r523955;
double r524016 = r523972 - r524015;
double r524017 = r524016 * r523967;
double r524018 = r523966 - r524017;
double r524019 = r524014 + r524018;
double r524020 = 4.4361120831256703e+133;
bool r524021 = r523955 <= r524020;
double r524022 = r524021 ? r523996 : r523982;
double r524023 = r524002 ? r524019 : r524022;
double r524024 = r524000 ? r523996 : r524023;
double r524025 = r523998 ? r523982 : r524024;
double r524026 = r523984 ? r523996 : r524025;
double r524027 = r523957 ? r523982 : r524026;
return r524027;
}




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
| Original | 12.3 |
|---|---|
| Target | 20.2 |
| Herbie | 10.6 |
if i < -1.0986215975605004e+88 or -7.555102642495297e-37 < i < -4.744514932447807e-89 or 4.4361120831256703e+133 < i Initial program 18.9
rmApplied sub-neg18.9
Applied distribute-lft-in18.9
Simplified15.0
rmApplied sub-neg15.0
Applied distribute-lft-in15.0
Simplified14.7
Simplified9.2
if -1.0986215975605004e+88 < i < -7.555102642495297e-37 or -4.744514932447807e-89 < i < 1.5153651838257603e-274 or 1.569768768932547e-76 < i < 4.4361120831256703e+133Initial program 10.2
rmApplied sub-neg10.2
Applied distribute-lft-in10.2
Simplified11.6
rmApplied sub-neg11.6
Applied distribute-lft-in11.6
Simplified11.7
Simplified11.7
if 1.5153651838257603e-274 < i < 1.569768768932547e-76Initial program 9.1
rmApplied add-cube-cbrt9.4
Applied associate-*l*9.4
Simplified9.4
rmApplied add-cube-cbrt9.5
Applied associate-*l*9.5
Simplified9.5
Final simplification10.6
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z t a b c i j)
:name "Data.Colour.Matrix:determinant from colour-2.3.3, A"
:herbie-target
(if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2.0) (pow (* t i) 2.0))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i)))) (if (< x 3.2113527362226803e-147) (- (* (- (* b i) (* x a)) t) (- (* z (* c b)) (* j (- (* c a) (* y i))))) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2.0) (pow (* t i) 2.0))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* t i)))) (* j (- (* c a) (* y i)))))