\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\begin{array}{l}
\mathbf{if}\;t \le -1.27542244027725172 \cdot 10^{-70} \lor \neg \left(t \le 1.17214136499042794 \cdot 10^{-41}\right):\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-j\right) \cdot \left(i \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z - t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r583061 = x;
double r583062 = y;
double r583063 = z;
double r583064 = r583062 * r583063;
double r583065 = t;
double r583066 = a;
double r583067 = r583065 * r583066;
double r583068 = r583064 - r583067;
double r583069 = r583061 * r583068;
double r583070 = b;
double r583071 = c;
double r583072 = r583071 * r583063;
double r583073 = i;
double r583074 = r583073 * r583066;
double r583075 = r583072 - r583074;
double r583076 = r583070 * r583075;
double r583077 = r583069 - r583076;
double r583078 = j;
double r583079 = r583071 * r583065;
double r583080 = r583073 * r583062;
double r583081 = r583079 - r583080;
double r583082 = r583078 * r583081;
double r583083 = r583077 + r583082;
return r583083;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r583084 = t;
double r583085 = -1.2754224402772517e-70;
bool r583086 = r583084 <= r583085;
double r583087 = 1.172141364990428e-41;
bool r583088 = r583084 <= r583087;
double r583089 = !r583088;
bool r583090 = r583086 || r583089;
double r583091 = x;
double r583092 = y;
double r583093 = z;
double r583094 = r583092 * r583093;
double r583095 = a;
double r583096 = r583084 * r583095;
double r583097 = r583094 - r583096;
double r583098 = r583091 * r583097;
double r583099 = b;
double r583100 = c;
double r583101 = r583100 * r583093;
double r583102 = i;
double r583103 = r583102 * r583095;
double r583104 = r583101 - r583103;
double r583105 = r583099 * r583104;
double r583106 = r583098 - r583105;
double r583107 = j;
double r583108 = r583107 * r583100;
double r583109 = r583084 * r583108;
double r583110 = -r583107;
double r583111 = r583102 * r583092;
double r583112 = r583110 * r583111;
double r583113 = r583109 + r583112;
double r583114 = r583106 + r583113;
double r583115 = cbrt(r583091);
double r583116 = r583115 * r583115;
double r583117 = r583115 * r583097;
double r583118 = r583116 * r583117;
double r583119 = r583118 - r583105;
double r583120 = r583100 * r583084;
double r583121 = r583120 - r583111;
double r583122 = r583107 * r583121;
double r583123 = r583119 + r583122;
double r583124 = r583090 ? r583114 : r583123;
return r583124;
}




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.5 |
|---|---|
| Target | 16.3 |
| Herbie | 11.3 |
if t < -1.2754224402772517e-70 or 1.172141364990428e-41 < t Initial program 15.4
rmApplied add-cube-cbrt15.7
Applied associate-*l*15.7
rmApplied sub-neg15.7
Applied distribute-lft-in15.7
Applied distribute-lft-in15.7
Simplified12.8
Simplified12.7
if -1.2754224402772517e-70 < t < 1.172141364990428e-41Initial program 9.8
rmApplied add-cube-cbrt10.0
Applied associate-*l*10.1
Final simplification11.3
herbie shell --seed 2020083
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))