\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)
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot a - y \cdot i\right)}\right) \cdot \sqrt[3]{\left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\sqrt[3]{j} \cdot \left(c \cdot a - y \cdot i\right)\right)}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r424179033 = x;
double r424179034 = y;
double r424179035 = z;
double r424179036 = r424179034 * r424179035;
double r424179037 = t;
double r424179038 = a;
double r424179039 = r424179037 * r424179038;
double r424179040 = r424179036 - r424179039;
double r424179041 = r424179033 * r424179040;
double r424179042 = b;
double r424179043 = c;
double r424179044 = r424179043 * r424179035;
double r424179045 = i;
double r424179046 = r424179037 * r424179045;
double r424179047 = r424179044 - r424179046;
double r424179048 = r424179042 * r424179047;
double r424179049 = r424179041 - r424179048;
double r424179050 = j;
double r424179051 = r424179043 * r424179038;
double r424179052 = r424179034 * r424179045;
double r424179053 = r424179051 - r424179052;
double r424179054 = r424179050 * r424179053;
double r424179055 = r424179049 + r424179054;
return r424179055;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r424179056 = x;
double r424179057 = y;
double r424179058 = z;
double r424179059 = r424179057 * r424179058;
double r424179060 = t;
double r424179061 = a;
double r424179062 = r424179060 * r424179061;
double r424179063 = r424179059 - r424179062;
double r424179064 = r424179056 * r424179063;
double r424179065 = b;
double r424179066 = c;
double r424179067 = r424179066 * r424179058;
double r424179068 = i;
double r424179069 = r424179060 * r424179068;
double r424179070 = r424179067 - r424179069;
double r424179071 = r424179065 * r424179070;
double r424179072 = r424179064 - r424179071;
double r424179073 = j;
double r424179074 = r424179066 * r424179061;
double r424179075 = r424179057 * r424179068;
double r424179076 = r424179074 - r424179075;
double r424179077 = r424179073 * r424179076;
double r424179078 = cbrt(r424179077);
double r424179079 = r424179078 * r424179078;
double r424179080 = cbrt(r424179073);
double r424179081 = r424179080 * r424179080;
double r424179082 = r424179080 * r424179076;
double r424179083 = r424179081 * r424179082;
double r424179084 = cbrt(r424179083);
double r424179085 = r424179079 * r424179084;
double r424179086 = r424179072 + r424179085;
return r424179086;
}




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.4 |
|---|---|
| Target | 19.9 |
| Herbie | 12.7 |
Initial program 12.4
rmApplied add-cube-cbrt12.7
rmApplied add-cube-cbrt12.7
Applied associate-*l*12.7
Final simplification12.7
herbie shell --seed 2019173
(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)))))