\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}\;x \le -5.71054249675121781 \cdot 10^{34}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(t \cdot j\right) \cdot c + \left(-\left(i \cdot j\right) \cdot y\right)\right)\\
\mathbf{elif}\;x \le 1.419491066943148 \cdot 10^{-153}:\\
\;\;\;\;\left(\left(\left(y \cdot z\right) \cdot x + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(t \cdot j\right) \cdot c + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(-i \cdot a\right) \cdot b\right)\right) + \left(\left(t \cdot j\right) \cdot c + \left(-i \cdot \left(j \cdot y\right)\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 r1199090 = x;
double r1199091 = y;
double r1199092 = z;
double r1199093 = r1199091 * r1199092;
double r1199094 = t;
double r1199095 = a;
double r1199096 = r1199094 * r1199095;
double r1199097 = r1199093 - r1199096;
double r1199098 = r1199090 * r1199097;
double r1199099 = b;
double r1199100 = c;
double r1199101 = r1199100 * r1199092;
double r1199102 = i;
double r1199103 = r1199102 * r1199095;
double r1199104 = r1199101 - r1199103;
double r1199105 = r1199099 * r1199104;
double r1199106 = r1199098 - r1199105;
double r1199107 = j;
double r1199108 = r1199100 * r1199094;
double r1199109 = r1199102 * r1199091;
double r1199110 = r1199108 - r1199109;
double r1199111 = r1199107 * r1199110;
double r1199112 = r1199106 + r1199111;
return r1199112;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r1199113 = x;
double r1199114 = -5.710542496751218e+34;
bool r1199115 = r1199113 <= r1199114;
double r1199116 = y;
double r1199117 = z;
double r1199118 = r1199116 * r1199117;
double r1199119 = t;
double r1199120 = a;
double r1199121 = r1199119 * r1199120;
double r1199122 = r1199118 - r1199121;
double r1199123 = r1199113 * r1199122;
double r1199124 = b;
double r1199125 = c;
double r1199126 = r1199125 * r1199117;
double r1199127 = i;
double r1199128 = r1199127 * r1199120;
double r1199129 = r1199126 - r1199128;
double r1199130 = r1199124 * r1199129;
double r1199131 = r1199123 - r1199130;
double r1199132 = j;
double r1199133 = r1199119 * r1199132;
double r1199134 = r1199133 * r1199125;
double r1199135 = r1199127 * r1199132;
double r1199136 = r1199135 * r1199116;
double r1199137 = -r1199136;
double r1199138 = r1199134 + r1199137;
double r1199139 = r1199131 + r1199138;
double r1199140 = 1.419491066943148e-153;
bool r1199141 = r1199113 <= r1199140;
double r1199142 = r1199118 * r1199113;
double r1199143 = r1199113 * r1199119;
double r1199144 = r1199120 * r1199143;
double r1199145 = -r1199144;
double r1199146 = r1199142 + r1199145;
double r1199147 = r1199146 - r1199130;
double r1199148 = r1199132 * r1199116;
double r1199149 = r1199127 * r1199148;
double r1199150 = -r1199149;
double r1199151 = r1199134 + r1199150;
double r1199152 = r1199147 + r1199151;
double r1199153 = r1199124 * r1199125;
double r1199154 = r1199117 * r1199153;
double r1199155 = -r1199128;
double r1199156 = r1199155 * r1199124;
double r1199157 = r1199154 + r1199156;
double r1199158 = r1199123 - r1199157;
double r1199159 = r1199158 + r1199151;
double r1199160 = r1199141 ? r1199152 : r1199159;
double r1199161 = r1199115 ? r1199139 : r1199160;
return r1199161;
}




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 | 16.3 |
| Herbie | 11.3 |
if x < -5.710542496751218e+34Initial program 6.6
rmApplied sub-neg6.6
Applied distribute-lft-in6.6
Simplified8.1
Simplified8.0
rmApplied associate-*r*8.0
rmApplied associate-*r*8.4
if -5.710542496751218e+34 < x < 1.419491066943148e-153Initial program 15.7
rmApplied sub-neg15.7
Applied distribute-lft-in15.7
Simplified15.7
Simplified15.4
rmApplied associate-*r*15.5
rmApplied sub-neg15.5
Applied distribute-lft-in15.5
Simplified15.5
Simplified13.0
if 1.419491066943148e-153 < x Initial program 10.0
rmApplied sub-neg10.0
Applied distribute-lft-in10.0
Simplified10.8
Simplified10.5
rmApplied associate-*r*10.1
rmApplied sub-neg10.1
Applied distribute-lft-in10.1
Simplified10.1
Simplified10.1
Final simplification11.3
herbie shell --seed 2020047
(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)))))