\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}\;a \le -1.9093385244904942 \cdot 10^{32} \lor \neg \left(a \le 9.3561614731253176 \cdot 10^{-41}\right):\\
\;\;\;\;\left(a \cdot \left(i \cdot b\right) - \left(z \cdot \left(b \cdot c\right) + a \cdot \left(x \cdot t\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\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) + -1 \cdot \left(i \cdot \left(y \cdot j\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 r553501 = x;
double r553502 = y;
double r553503 = z;
double r553504 = r553502 * r553503;
double r553505 = t;
double r553506 = a;
double r553507 = r553505 * r553506;
double r553508 = r553504 - r553507;
double r553509 = r553501 * r553508;
double r553510 = b;
double r553511 = c;
double r553512 = r553511 * r553503;
double r553513 = i;
double r553514 = r553513 * r553506;
double r553515 = r553512 - r553514;
double r553516 = r553510 * r553515;
double r553517 = r553509 - r553516;
double r553518 = j;
double r553519 = r553511 * r553505;
double r553520 = r553513 * r553502;
double r553521 = r553519 - r553520;
double r553522 = r553518 * r553521;
double r553523 = r553517 + r553522;
return r553523;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r553524 = a;
double r553525 = -1.9093385244904942e+32;
bool r553526 = r553524 <= r553525;
double r553527 = 9.356161473125318e-41;
bool r553528 = r553524 <= r553527;
double r553529 = !r553528;
bool r553530 = r553526 || r553529;
double r553531 = i;
double r553532 = b;
double r553533 = r553531 * r553532;
double r553534 = r553524 * r553533;
double r553535 = z;
double r553536 = c;
double r553537 = r553532 * r553536;
double r553538 = r553535 * r553537;
double r553539 = x;
double r553540 = t;
double r553541 = r553539 * r553540;
double r553542 = r553524 * r553541;
double r553543 = r553538 + r553542;
double r553544 = r553534 - r553543;
double r553545 = j;
double r553546 = r553536 * r553540;
double r553547 = y;
double r553548 = r553531 * r553547;
double r553549 = r553546 - r553548;
double r553550 = r553545 * r553549;
double r553551 = r553544 + r553550;
double r553552 = r553547 * r553535;
double r553553 = r553540 * r553524;
double r553554 = r553552 - r553553;
double r553555 = r553539 * r553554;
double r553556 = r553536 * r553535;
double r553557 = r553531 * r553524;
double r553558 = r553556 - r553557;
double r553559 = r553532 * r553558;
double r553560 = r553555 - r553559;
double r553561 = r553545 * r553536;
double r553562 = r553540 * r553561;
double r553563 = -1.0;
double r553564 = r553547 * r553545;
double r553565 = r553531 * r553564;
double r553566 = r553563 * r553565;
double r553567 = r553562 + r553566;
double r553568 = r553560 + r553567;
double r553569 = r553530 ? r553551 : r553568;
return r553569;
}




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.0 |
|---|---|
| Target | 16.0 |
| Herbie | 10.3 |
if a < -1.9093385244904942e+32 or 9.356161473125318e-41 < a Initial program 16.1
Taylor expanded around inf 13.5
if -1.9093385244904942e+32 < a < 9.356161473125318e-41Initial program 9.2
rmApplied add-cube-cbrt9.6
Applied associate-*l*9.6
rmApplied sub-neg9.6
Applied distribute-lft-in9.6
Applied distribute-lft-in9.6
Simplified8.9
Simplified8.7
Taylor expanded around inf 8.1
Final simplification10.3
herbie shell --seed 2020024
(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)))))