\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}\;x \le -1.08141462104782994358330296205636066627 \cdot 10^{176}:\\
\;\;\;\;\left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\\
\mathbf{elif}\;x \le 7.119702239955606097577624404870553168265 \cdot 10^{153}:\\
\;\;\;\;\left(\left(\left(-t\right) \cdot \left(x \cdot a\right) + z \cdot \left(y \cdot x\right)\right) - \left(c \cdot z - t \cdot i\right) \cdot b\right) + \left(c \cdot a - y \cdot i\right) \cdot j\\
\mathbf{else}:\\
\;\;\;\;\left(c \cdot a - y \cdot i\right) \cdot j + \left(\left(y \cdot z\right) \cdot x + x \cdot \left(-t \cdot a\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r25145053 = x;
double r25145054 = y;
double r25145055 = z;
double r25145056 = r25145054 * r25145055;
double r25145057 = t;
double r25145058 = a;
double r25145059 = r25145057 * r25145058;
double r25145060 = r25145056 - r25145059;
double r25145061 = r25145053 * r25145060;
double r25145062 = b;
double r25145063 = c;
double r25145064 = r25145063 * r25145055;
double r25145065 = i;
double r25145066 = r25145057 * r25145065;
double r25145067 = r25145064 - r25145066;
double r25145068 = r25145062 * r25145067;
double r25145069 = r25145061 - r25145068;
double r25145070 = j;
double r25145071 = r25145063 * r25145058;
double r25145072 = r25145054 * r25145065;
double r25145073 = r25145071 - r25145072;
double r25145074 = r25145070 * r25145073;
double r25145075 = r25145069 + r25145074;
return r25145075;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r25145076 = x;
double r25145077 = -1.08141462104783e+176;
bool r25145078 = r25145076 <= r25145077;
double r25145079 = y;
double r25145080 = z;
double r25145081 = r25145079 * r25145080;
double r25145082 = r25145081 * r25145076;
double r25145083 = t;
double r25145084 = a;
double r25145085 = r25145083 * r25145084;
double r25145086 = -r25145085;
double r25145087 = r25145076 * r25145086;
double r25145088 = r25145082 + r25145087;
double r25145089 = c;
double r25145090 = r25145089 * r25145080;
double r25145091 = i;
double r25145092 = r25145083 * r25145091;
double r25145093 = r25145090 - r25145092;
double r25145094 = b;
double r25145095 = r25145093 * r25145094;
double r25145096 = r25145088 - r25145095;
double r25145097 = 7.119702239955606e+153;
bool r25145098 = r25145076 <= r25145097;
double r25145099 = -r25145083;
double r25145100 = r25145076 * r25145084;
double r25145101 = r25145099 * r25145100;
double r25145102 = r25145079 * r25145076;
double r25145103 = r25145080 * r25145102;
double r25145104 = r25145101 + r25145103;
double r25145105 = r25145104 - r25145095;
double r25145106 = r25145089 * r25145084;
double r25145107 = r25145079 * r25145091;
double r25145108 = r25145106 - r25145107;
double r25145109 = j;
double r25145110 = r25145108 * r25145109;
double r25145111 = r25145105 + r25145110;
double r25145112 = r25145110 + r25145088;
double r25145113 = r25145098 ? r25145111 : r25145112;
double r25145114 = r25145078 ? r25145096 : r25145113;
return r25145114;
}




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.1 |
|---|---|
| Target | 19.7 |
| Herbie | 11.3 |
if x < -1.08141462104783e+176Initial program 7.5
rmApplied sub-neg7.5
Applied distribute-lft-in7.5
Taylor expanded around 0 15.7
if -1.08141462104783e+176 < x < 7.119702239955606e+153Initial program 12.9
rmApplied sub-neg12.9
Applied distribute-lft-in12.9
Taylor expanded around inf 11.9
Simplified11.7
rmApplied associate-*r*10.6
if 7.119702239955606e+153 < x Initial program 6.9
rmApplied sub-neg6.9
Applied distribute-lft-in6.9
Taylor expanded around 0 15.3
Final simplification11.3
herbie shell --seed 2019171
(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)))))