\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}\;y \le -7.276076652476422723184151660607198493295 \cdot 10^{-42}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - \left(b \cdot \left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;y \le -2.765207802801297782227349629851777181967 \cdot 10^{-96}:\\
\;\;\;\;\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) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{elif}\;y \le 7.448778321262618814210345647292621144017 \cdot 10^{-301}:\\
\;\;\;\;\left(\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(\sqrt[3]{x} \cdot \left(y \cdot z\right)\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - \left(z \cdot \left(b \cdot c\right) + \left(-i \cdot a\right) \cdot b\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;y \le 1.714973672352425960028893737750560179991 \cdot 10^{93}:\\
\;\;\;\;\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) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + \left(-\left(x \cdot a\right) \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \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 r610666 = x;
double r610667 = y;
double r610668 = z;
double r610669 = r610667 * r610668;
double r610670 = t;
double r610671 = a;
double r610672 = r610670 * r610671;
double r610673 = r610669 - r610672;
double r610674 = r610666 * r610673;
double r610675 = b;
double r610676 = c;
double r610677 = r610676 * r610668;
double r610678 = i;
double r610679 = r610678 * r610671;
double r610680 = r610677 - r610679;
double r610681 = r610675 * r610680;
double r610682 = r610674 - r610681;
double r610683 = j;
double r610684 = r610676 * r610670;
double r610685 = r610678 * r610667;
double r610686 = r610684 - r610685;
double r610687 = r610683 * r610686;
double r610688 = r610682 + r610687;
return r610688;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r610689 = y;
double r610690 = -7.276076652476423e-42;
bool r610691 = r610689 <= r610690;
double r610692 = x;
double r610693 = z;
double r610694 = r610689 * r610693;
double r610695 = r610692 * r610694;
double r610696 = a;
double r610697 = t;
double r610698 = r610692 * r610697;
double r610699 = r610696 * r610698;
double r610700 = -r610699;
double r610701 = r610695 + r610700;
double r610702 = b;
double r610703 = c;
double r610704 = r610703 * r610693;
double r610705 = i;
double r610706 = r610705 * r610696;
double r610707 = r610704 - r610706;
double r610708 = cbrt(r610707);
double r610709 = r610708 * r610708;
double r610710 = r610702 * r610709;
double r610711 = r610710 * r610708;
double r610712 = r610701 - r610711;
double r610713 = j;
double r610714 = r610703 * r610697;
double r610715 = r610705 * r610689;
double r610716 = r610714 - r610715;
double r610717 = r610713 * r610716;
double r610718 = r610712 + r610717;
double r610719 = -2.7652078028012978e-96;
bool r610720 = r610689 <= r610719;
double r610721 = r610697 * r610696;
double r610722 = r610694 - r610721;
double r610723 = r610692 * r610722;
double r610724 = r610702 * r610707;
double r610725 = r610723 - r610724;
double r610726 = r610713 * r610703;
double r610727 = r610697 * r610726;
double r610728 = r610713 * r610689;
double r610729 = r610705 * r610728;
double r610730 = -r610729;
double r610731 = r610727 + r610730;
double r610732 = r610725 + r610731;
double r610733 = 7.448778321262619e-301;
bool r610734 = r610689 <= r610733;
double r610735 = cbrt(r610692);
double r610736 = r610735 * r610735;
double r610737 = r610735 * r610694;
double r610738 = r610736 * r610737;
double r610739 = r610738 + r610700;
double r610740 = r610702 * r610703;
double r610741 = r610693 * r610740;
double r610742 = -r610706;
double r610743 = r610742 * r610702;
double r610744 = r610741 + r610743;
double r610745 = r610739 - r610744;
double r610746 = r610745 + r610717;
double r610747 = 1.714973672352426e+93;
bool r610748 = r610689 <= r610747;
double r610749 = r610692 * r610696;
double r610750 = r610749 * r610697;
double r610751 = -r610750;
double r610752 = r610695 + r610751;
double r610753 = r610752 - r610724;
double r610754 = r610753 + r610717;
double r610755 = r610748 ? r610732 : r610754;
double r610756 = r610734 ? r610746 : r610755;
double r610757 = r610720 ? r610732 : r610756;
double r610758 = r610691 ? r610718 : r610757;
return r610758;
}




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.1 |
|---|---|
| Target | 15.8 |
| Herbie | 12.0 |
if y < -7.276076652476423e-42Initial program 15.1
rmApplied sub-neg15.1
Applied distribute-lft-in15.1
Simplified14.7
rmApplied add-cube-cbrt14.9
Applied associate-*r*14.9
if -7.276076652476423e-42 < y < -2.7652078028012978e-96 or 7.448778321262619e-301 < y < 1.714973672352426e+93Initial program 9.0
rmApplied sub-neg9.0
Applied distribute-lft-in9.0
Simplified9.6
Simplified9.5
if -2.7652078028012978e-96 < y < 7.448778321262619e-301Initial program 10.4
rmApplied sub-neg10.4
Applied distribute-lft-in10.4
Simplified10.4
rmApplied add-cube-cbrt10.5
Applied associate-*l*10.5
rmApplied sub-neg10.5
Applied distribute-lft-in10.5
Simplified9.8
Simplified9.8
if 1.714973672352426e+93 < y Initial program 20.8
rmApplied sub-neg20.8
Applied distribute-lft-in20.8
Simplified20.4
rmApplied associate-*r*19.9
Simplified19.9
Final simplification12.0
herbie shell --seed 2019350
(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)))))