\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}\;\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) \le -5.81059302235525334 \cdot 10^{282}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\left(b \cdot c\right) \cdot z + b \cdot \left(-i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;\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) \le 1.7267276916147896 \cdot 10^{303}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-i \cdot a\right)\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)}\right) \cdot \sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(t \cdot \left(j \cdot c\right) + a \cdot \left(i \cdot b\right)\right) - i \cdot \left(j \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 r614095 = x;
double r614096 = y;
double r614097 = z;
double r614098 = r614096 * r614097;
double r614099 = t;
double r614100 = a;
double r614101 = r614099 * r614100;
double r614102 = r614098 - r614101;
double r614103 = r614095 * r614102;
double r614104 = b;
double r614105 = c;
double r614106 = r614105 * r614097;
double r614107 = i;
double r614108 = r614107 * r614100;
double r614109 = r614106 - r614108;
double r614110 = r614104 * r614109;
double r614111 = r614103 - r614110;
double r614112 = j;
double r614113 = r614105 * r614099;
double r614114 = r614107 * r614096;
double r614115 = r614113 - r614114;
double r614116 = r614112 * r614115;
double r614117 = r614111 + r614116;
return r614117;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r614118 = x;
double r614119 = y;
double r614120 = z;
double r614121 = r614119 * r614120;
double r614122 = t;
double r614123 = a;
double r614124 = r614122 * r614123;
double r614125 = r614121 - r614124;
double r614126 = r614118 * r614125;
double r614127 = b;
double r614128 = c;
double r614129 = r614128 * r614120;
double r614130 = i;
double r614131 = r614130 * r614123;
double r614132 = r614129 - r614131;
double r614133 = r614127 * r614132;
double r614134 = r614126 - r614133;
double r614135 = j;
double r614136 = r614128 * r614122;
double r614137 = r614130 * r614119;
double r614138 = r614136 - r614137;
double r614139 = r614135 * r614138;
double r614140 = r614134 + r614139;
double r614141 = -5.810593022355253e+282;
bool r614142 = r614140 <= r614141;
double r614143 = r614127 * r614128;
double r614144 = r614143 * r614120;
double r614145 = -r614131;
double r614146 = r614127 * r614145;
double r614147 = r614144 + r614146;
double r614148 = r614126 - r614147;
double r614149 = r614148 + r614139;
double r614150 = 1.7267276916147896e+303;
bool r614151 = r614140 <= r614150;
double r614152 = r614127 * r614129;
double r614153 = r614152 + r614146;
double r614154 = r614126 - r614153;
double r614155 = cbrt(r614139);
double r614156 = r614155 * r614155;
double r614157 = r614156 * r614155;
double r614158 = r614154 + r614157;
double r614159 = r614135 * r614128;
double r614160 = r614122 * r614159;
double r614161 = r614130 * r614127;
double r614162 = r614123 * r614161;
double r614163 = r614160 + r614162;
double r614164 = r614135 * r614119;
double r614165 = r614130 * r614164;
double r614166 = r614163 - r614165;
double r614167 = r614151 ? r614158 : r614166;
double r614168 = r614142 ? r614149 : r614167;
return r614168;
}




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 | 16.2 |
| Herbie | 9.4 |
if (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))) < -5.810593022355253e+282Initial program 45.6
rmApplied sub-neg45.6
Applied distribute-lft-in45.6
rmApplied associate-*r*40.3
if -5.810593022355253e+282 < (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))) < 1.7267276916147896e+303Initial program 0.9
rmApplied sub-neg0.9
Applied distribute-lft-in0.9
rmApplied add-cube-cbrt1.3
if 1.7267276916147896e+303 < (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))) Initial program 60.6
Taylor expanded around inf 36.3
Final simplification9.4
herbie shell --seed 2020065
(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)))))