\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}\;b \le -6389942398473198090210217295872:\\
\;\;\;\;\left(a \cdot i - c \cdot z\right) \cdot b + \left(\left(y \cdot \left(x \cdot z\right) - a \cdot \left(x \cdot t\right)\right) + \left(\left(-y \cdot i\right) \cdot j + \left(t \cdot j\right) \cdot c\right)\right)\\
\mathbf{elif}\;b \le 1.002984371457371897530186849635221170932 \cdot 10^{-214}:\\
\;\;\;\;\left(a \cdot \left(i \cdot b\right) - \left(b \cdot z\right) \cdot c\right) + \left(\left(y \cdot z - a \cdot t\right) \cdot x + \left(c \cdot t - y \cdot i\right) \cdot j\right)\\
\mathbf{elif}\;b \le 5.220563116893869664129944069723770605172 \cdot 10^{-121} \lor \neg \left(b \le 26916558763106272\right):\\
\;\;\;\;\left(\left(\left(-i\right) \cdot \left(j \cdot y\right) + \left(t \cdot j\right) \cdot c\right) + \left(y \cdot \left(x \cdot z\right) - \left(x \cdot a\right) \cdot t\right)\right) + \left(a \cdot i - c \cdot z\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot i - c \cdot z\right) \cdot b + \left(\left(y \cdot \left(x \cdot z\right) - a \cdot \left(x \cdot t\right)\right) + \left(\left(-y \cdot i\right) \cdot j + \left(t \cdot j\right) \cdot c\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 r496594 = x;
double r496595 = y;
double r496596 = z;
double r496597 = r496595 * r496596;
double r496598 = t;
double r496599 = a;
double r496600 = r496598 * r496599;
double r496601 = r496597 - r496600;
double r496602 = r496594 * r496601;
double r496603 = b;
double r496604 = c;
double r496605 = r496604 * r496596;
double r496606 = i;
double r496607 = r496606 * r496599;
double r496608 = r496605 - r496607;
double r496609 = r496603 * r496608;
double r496610 = r496602 - r496609;
double r496611 = j;
double r496612 = r496604 * r496598;
double r496613 = r496606 * r496595;
double r496614 = r496612 - r496613;
double r496615 = r496611 * r496614;
double r496616 = r496610 + r496615;
return r496616;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r496617 = b;
double r496618 = -6.389942398473198e+30;
bool r496619 = r496617 <= r496618;
double r496620 = a;
double r496621 = i;
double r496622 = r496620 * r496621;
double r496623 = c;
double r496624 = z;
double r496625 = r496623 * r496624;
double r496626 = r496622 - r496625;
double r496627 = r496626 * r496617;
double r496628 = y;
double r496629 = x;
double r496630 = r496629 * r496624;
double r496631 = r496628 * r496630;
double r496632 = t;
double r496633 = r496629 * r496632;
double r496634 = r496620 * r496633;
double r496635 = r496631 - r496634;
double r496636 = r496628 * r496621;
double r496637 = -r496636;
double r496638 = j;
double r496639 = r496637 * r496638;
double r496640 = r496632 * r496638;
double r496641 = r496640 * r496623;
double r496642 = r496639 + r496641;
double r496643 = r496635 + r496642;
double r496644 = r496627 + r496643;
double r496645 = 1.002984371457372e-214;
bool r496646 = r496617 <= r496645;
double r496647 = r496621 * r496617;
double r496648 = r496620 * r496647;
double r496649 = r496617 * r496624;
double r496650 = r496649 * r496623;
double r496651 = r496648 - r496650;
double r496652 = r496628 * r496624;
double r496653 = r496620 * r496632;
double r496654 = r496652 - r496653;
double r496655 = r496654 * r496629;
double r496656 = r496623 * r496632;
double r496657 = r496656 - r496636;
double r496658 = r496657 * r496638;
double r496659 = r496655 + r496658;
double r496660 = r496651 + r496659;
double r496661 = 5.22056311689387e-121;
bool r496662 = r496617 <= r496661;
double r496663 = 2.691655876310627e+16;
bool r496664 = r496617 <= r496663;
double r496665 = !r496664;
bool r496666 = r496662 || r496665;
double r496667 = -r496621;
double r496668 = r496638 * r496628;
double r496669 = r496667 * r496668;
double r496670 = r496669 + r496641;
double r496671 = r496629 * r496620;
double r496672 = r496671 * r496632;
double r496673 = r496631 - r496672;
double r496674 = r496670 + r496673;
double r496675 = r496674 + r496627;
double r496676 = r496666 ? r496675 : r496644;
double r496677 = r496646 ? r496660 : r496676;
double r496678 = r496619 ? r496644 : r496677;
return r496678;
}




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.2 |
|---|---|
| Target | 16.3 |
| Herbie | 10.6 |
if b < -6.389942398473198e+30 or 5.22056311689387e-121 < b < 2.691655876310627e+16Initial program 9.6
Simplified9.6
Taylor expanded around inf 9.8
Simplified9.2
rmApplied *-un-lft-identity9.2
Applied associate-*l*9.2
Simplified9.4
rmApplied sub-neg9.4
Applied distribute-lft-in9.4
Simplified10.1
Simplified10.1
if -6.389942398473198e+30 < b < 1.002984371457372e-214Initial program 15.7
Simplified15.7
Taylor expanded around inf 10.2
Simplified10.1
if 1.002984371457372e-214 < b < 5.22056311689387e-121 or 2.691655876310627e+16 < b Initial program 9.6
Simplified9.6
Taylor expanded around inf 10.2
Simplified10.2
rmApplied sub-neg10.2
Applied distribute-lft-in10.2
Simplified11.3
Simplified12.0
Final simplification10.6
herbie shell --seed 2019174
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
: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.0) (pow (* i y) 2.0))) (+ (* 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.0) (pow (* i y) 2.0))) (+ (* 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)))))