\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 r1154163 = x;
double r1154164 = y;
double r1154165 = z;
double r1154166 = r1154164 * r1154165;
double r1154167 = t;
double r1154168 = a;
double r1154169 = r1154167 * r1154168;
double r1154170 = r1154166 - r1154169;
double r1154171 = r1154163 * r1154170;
double r1154172 = b;
double r1154173 = c;
double r1154174 = r1154173 * r1154165;
double r1154175 = i;
double r1154176 = r1154175 * r1154168;
double r1154177 = r1154174 - r1154176;
double r1154178 = r1154172 * r1154177;
double r1154179 = r1154171 - r1154178;
double r1154180 = j;
double r1154181 = r1154173 * r1154167;
double r1154182 = r1154175 * r1154164;
double r1154183 = r1154181 - r1154182;
double r1154184 = r1154180 * r1154183;
double r1154185 = r1154179 + r1154184;
return r1154185;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r1154186 = x;
double r1154187 = -5.710542496751218e+34;
bool r1154188 = r1154186 <= r1154187;
double r1154189 = y;
double r1154190 = z;
double r1154191 = r1154189 * r1154190;
double r1154192 = t;
double r1154193 = a;
double r1154194 = r1154192 * r1154193;
double r1154195 = r1154191 - r1154194;
double r1154196 = r1154186 * r1154195;
double r1154197 = b;
double r1154198 = c;
double r1154199 = r1154198 * r1154190;
double r1154200 = i;
double r1154201 = r1154200 * r1154193;
double r1154202 = r1154199 - r1154201;
double r1154203 = r1154197 * r1154202;
double r1154204 = r1154196 - r1154203;
double r1154205 = j;
double r1154206 = r1154192 * r1154205;
double r1154207 = r1154206 * r1154198;
double r1154208 = r1154200 * r1154205;
double r1154209 = r1154208 * r1154189;
double r1154210 = -r1154209;
double r1154211 = r1154207 + r1154210;
double r1154212 = r1154204 + r1154211;
double r1154213 = 1.419491066943148e-153;
bool r1154214 = r1154186 <= r1154213;
double r1154215 = r1154191 * r1154186;
double r1154216 = r1154186 * r1154192;
double r1154217 = r1154193 * r1154216;
double r1154218 = -r1154217;
double r1154219 = r1154215 + r1154218;
double r1154220 = r1154219 - r1154203;
double r1154221 = r1154205 * r1154189;
double r1154222 = r1154200 * r1154221;
double r1154223 = -r1154222;
double r1154224 = r1154207 + r1154223;
double r1154225 = r1154220 + r1154224;
double r1154226 = r1154197 * r1154198;
double r1154227 = r1154190 * r1154226;
double r1154228 = -r1154201;
double r1154229 = r1154228 * r1154197;
double r1154230 = r1154227 + r1154229;
double r1154231 = r1154196 - r1154230;
double r1154232 = r1154231 + r1154224;
double r1154233 = r1154214 ? r1154225 : r1154232;
double r1154234 = r1154188 ? r1154212 : r1154233;
return r1154234;
}




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)))))