\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 -1.4986631122414473 \cdot 10^{-284} \lor \neg \left(b \le 2.39488469224657437 \cdot 10^{-241}\right):\\
\;\;\;\;\left(\left(\sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)}\right) \cdot \sqrt[3]{\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \sqrt[3]{y \cdot z - t \cdot a}} - b \cdot \left(c \cdot z - i \cdot a\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) - 0\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 r527705 = x;
double r527706 = y;
double r527707 = z;
double r527708 = r527706 * r527707;
double r527709 = t;
double r527710 = a;
double r527711 = r527709 * r527710;
double r527712 = r527708 - r527711;
double r527713 = r527705 * r527712;
double r527714 = b;
double r527715 = c;
double r527716 = r527715 * r527707;
double r527717 = i;
double r527718 = r527717 * r527710;
double r527719 = r527716 - r527718;
double r527720 = r527714 * r527719;
double r527721 = r527713 - r527720;
double r527722 = j;
double r527723 = r527715 * r527709;
double r527724 = r527717 * r527706;
double r527725 = r527723 - r527724;
double r527726 = r527722 * r527725;
double r527727 = r527721 + r527726;
return r527727;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r527728 = b;
double r527729 = -1.4986631122414473e-284;
bool r527730 = r527728 <= r527729;
double r527731 = 2.3948846922465744e-241;
bool r527732 = r527728 <= r527731;
double r527733 = !r527732;
bool r527734 = r527730 || r527733;
double r527735 = x;
double r527736 = y;
double r527737 = z;
double r527738 = r527736 * r527737;
double r527739 = t;
double r527740 = a;
double r527741 = r527739 * r527740;
double r527742 = r527738 - r527741;
double r527743 = r527735 * r527742;
double r527744 = cbrt(r527743);
double r527745 = r527744 * r527744;
double r527746 = cbrt(r527742);
double r527747 = r527746 * r527746;
double r527748 = r527735 * r527747;
double r527749 = r527748 * r527746;
double r527750 = cbrt(r527749);
double r527751 = r527745 * r527750;
double r527752 = c;
double r527753 = r527752 * r527737;
double r527754 = i;
double r527755 = r527754 * r527740;
double r527756 = r527753 - r527755;
double r527757 = r527728 * r527756;
double r527758 = r527751 - r527757;
double r527759 = j;
double r527760 = r527752 * r527739;
double r527761 = r527754 * r527736;
double r527762 = r527760 - r527761;
double r527763 = r527759 * r527762;
double r527764 = r527758 + r527763;
double r527765 = 0.0;
double r527766 = r527743 - r527765;
double r527767 = r527766 + r527763;
double r527768 = r527734 ? r527764 : r527767;
return r527768;
}




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.9 |
| Herbie | 12.1 |
if b < -1.4986631122414473e-284 or 2.3948846922465744e-241 < b Initial program 11.4
rmApplied add-cube-cbrt11.7
rmApplied add-cube-cbrt11.6
Applied associate-*r*11.6
if -1.4986631122414473e-284 < b < 2.3948846922465744e-241Initial program 18.3
Taylor expanded around 0 16.5
Final simplification12.1
herbie shell --seed 2020100
(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)))))