\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}\;b \le -1.885820288721452747199851344770466863725 \cdot 10^{95}:\\
\;\;\;\;\left(\left(\sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x} \cdot \sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x}\right) \cdot \sqrt[3]{\left(y \cdot z - a \cdot t\right) \cdot x} + j \cdot \left(a \cdot c - y \cdot i\right)\right) + \left(t \cdot i - c \cdot z\right) \cdot b\\
\mathbf{elif}\;b \le -1.758338690148164602644415584605192188924 \cdot 10^{-166}:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{elif}\;b \le 5.504662105172458263088453427769459127963 \cdot 10^{-251}:\\
\;\;\;\;\left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right) + \left(\left(\left(j \cdot c\right) \cdot a + \left(-\left(y \cdot j\right) \cdot i\right)\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\mathbf{elif}\;b \le 6.454516511442097649947162038850472776326 \cdot 10^{-203}:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{elif}\;b \le 6.877712242978713089253008401315914491855 \cdot 10^{-78}:\\
\;\;\;\;\left(\left(t \cdot b\right) \cdot i - \sqrt[3]{z} \cdot \left(\left(c \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right) \cdot b\right)\right) + \left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\mathbf{elif}\;b \le 60816444.42864446341991424560546875:\\
\;\;\;\;\left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) + \left(\left(-y \cdot \left(j \cdot i\right)\right) + c \cdot \left(j \cdot a\right)\right)\right) + \left(\left(t \cdot b\right) \cdot i - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t \cdot i - c \cdot z\right) \cdot \sqrt{b}\right) \cdot \sqrt{b} + \left(j \cdot \left(a \cdot c - y \cdot i\right) + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r735935 = x;
double r735936 = y;
double r735937 = z;
double r735938 = r735936 * r735937;
double r735939 = t;
double r735940 = a;
double r735941 = r735939 * r735940;
double r735942 = r735938 - r735941;
double r735943 = r735935 * r735942;
double r735944 = b;
double r735945 = c;
double r735946 = r735945 * r735937;
double r735947 = i;
double r735948 = r735939 * r735947;
double r735949 = r735946 - r735948;
double r735950 = r735944 * r735949;
double r735951 = r735943 - r735950;
double r735952 = j;
double r735953 = r735945 * r735940;
double r735954 = r735936 * r735947;
double r735955 = r735953 - r735954;
double r735956 = r735952 * r735955;
double r735957 = r735951 + r735956;
return r735957;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r735958 = b;
double r735959 = -1.8858202887214527e+95;
bool r735960 = r735958 <= r735959;
double r735961 = y;
double r735962 = z;
double r735963 = r735961 * r735962;
double r735964 = a;
double r735965 = t;
double r735966 = r735964 * r735965;
double r735967 = r735963 - r735966;
double r735968 = x;
double r735969 = r735967 * r735968;
double r735970 = cbrt(r735969);
double r735971 = r735970 * r735970;
double r735972 = r735971 * r735970;
double r735973 = j;
double r735974 = c;
double r735975 = r735964 * r735974;
double r735976 = i;
double r735977 = r735961 * r735976;
double r735978 = r735975 - r735977;
double r735979 = r735973 * r735978;
double r735980 = r735972 + r735979;
double r735981 = r735965 * r735976;
double r735982 = r735974 * r735962;
double r735983 = r735981 - r735982;
double r735984 = r735983 * r735958;
double r735985 = r735980 + r735984;
double r735986 = -1.7583386901481646e-166;
bool r735987 = r735958 <= r735986;
double r735988 = r735962 * r735968;
double r735989 = r735988 * r735961;
double r735990 = r735968 * r735965;
double r735991 = r735990 * r735964;
double r735992 = r735989 - r735991;
double r735993 = r735973 * r735976;
double r735994 = r735961 * r735993;
double r735995 = -r735994;
double r735996 = r735973 * r735964;
double r735997 = r735974 * r735996;
double r735998 = r735995 + r735997;
double r735999 = r735992 + r735998;
double r736000 = r735965 * r735958;
double r736001 = r736000 * r735976;
double r736002 = r735974 * r735958;
double r736003 = r736002 * r735962;
double r736004 = r736001 - r736003;
double r736005 = r735999 + r736004;
double r736006 = 5.504662105172458e-251;
bool r736007 = r735958 <= r736006;
double r736008 = r735973 * r735974;
double r736009 = r736008 * r735964;
double r736010 = r735961 * r735973;
double r736011 = r736010 * r735976;
double r736012 = -r736011;
double r736013 = r736009 + r736012;
double r736014 = r736013 + r735969;
double r736015 = r736004 + r736014;
double r736016 = 6.454516511442098e-203;
bool r736017 = r735958 <= r736016;
double r736018 = 6.877712242978713e-78;
bool r736019 = r735958 <= r736018;
double r736020 = cbrt(r735962);
double r736021 = r736020 * r736020;
double r736022 = r735974 * r736021;
double r736023 = r736022 * r735958;
double r736024 = r736020 * r736023;
double r736025 = r736001 - r736024;
double r736026 = r735979 + r735969;
double r736027 = r736025 + r736026;
double r736028 = 60816444.42864446;
bool r736029 = r735958 <= r736028;
double r736030 = sqrt(r735958);
double r736031 = r735983 * r736030;
double r736032 = r736031 * r736030;
double r736033 = r736032 + r736026;
double r736034 = r736029 ? r736005 : r736033;
double r736035 = r736019 ? r736027 : r736034;
double r736036 = r736017 ? r736005 : r736035;
double r736037 = r736007 ? r736015 : r736036;
double r736038 = r735987 ? r736005 : r736037;
double r736039 = r735960 ? r735985 : r736038;
return r736039;
}




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 | 12.3 |
|---|---|
| Target | 19.7 |
| Herbie | 9.2 |
if b < -1.8858202887214527e+95Initial program 6.4
Simplified6.4
rmApplied add-cube-cbrt6.6
if -1.8858202887214527e+95 < b < -1.7583386901481646e-166 or 5.504662105172458e-251 < b < 6.454516511442098e-203 or 6.877712242978713e-78 < b < 60816444.42864446Initial program 13.0
Simplified13.0
Taylor expanded around inf 10.0
Simplified10.1
Taylor expanded around inf 10.9
Simplified9.8
rmApplied associate-*r*10.1
rmApplied sub-neg10.1
Applied distribute-lft-in10.1
Simplified10.3
Simplified9.3
if -1.7583386901481646e-166 < b < 5.504662105172458e-251Initial program 17.3
Simplified17.3
Taylor expanded around inf 10.9
Simplified10.9
rmApplied sub-neg10.9
Applied distribute-lft-in10.9
Simplified11.9
Simplified10.8
if 6.454516511442098e-203 < b < 6.877712242978713e-78Initial program 15.8
Simplified15.8
Taylor expanded around inf 10.4
Simplified10.4
rmApplied add-cube-cbrt10.5
Applied associate-*r*10.5
Simplified11.5
if 60816444.42864446 < b Initial program 7.2
Simplified7.2
rmApplied add-sqr-sqrt7.4
Applied associate-*r*7.4
Simplified7.4
Final simplification9.2
herbie shell --seed 2019194
(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)))))