\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 -3.3735883346778377 \cdot 10^{-126}:\\
\;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(\sqrt[3]{c \cdot t - i \cdot y} \cdot \sqrt[3]{c \cdot t - i \cdot y}\right)\right) \cdot \sqrt[3]{c \cdot t - i \cdot y}\\
\mathbf{elif}\;x \le 3.288698165822717 \cdot 10^{-124}:\\
\;\;\;\;\left(0 - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\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) + \left(j \cdot \mathsf{fma}\left(c, t, -y \cdot i\right) + j \cdot \mathsf{fma}\left(-y, i, y \cdot i\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 r434778 = x;
double r434779 = y;
double r434780 = z;
double r434781 = r434779 * r434780;
double r434782 = t;
double r434783 = a;
double r434784 = r434782 * r434783;
double r434785 = r434781 - r434784;
double r434786 = r434778 * r434785;
double r434787 = b;
double r434788 = c;
double r434789 = r434788 * r434780;
double r434790 = i;
double r434791 = r434790 * r434783;
double r434792 = r434789 - r434791;
double r434793 = r434787 * r434792;
double r434794 = r434786 - r434793;
double r434795 = j;
double r434796 = r434788 * r434782;
double r434797 = r434790 * r434779;
double r434798 = r434796 - r434797;
double r434799 = r434795 * r434798;
double r434800 = r434794 + r434799;
return r434800;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r434801 = x;
double r434802 = -3.373588334677838e-126;
bool r434803 = r434801 <= r434802;
double r434804 = y;
double r434805 = z;
double r434806 = a;
double r434807 = t;
double r434808 = r434806 * r434807;
double r434809 = -r434808;
double r434810 = fma(r434804, r434805, r434809);
double r434811 = r434801 * r434810;
double r434812 = -r434806;
double r434813 = fma(r434812, r434807, r434808);
double r434814 = r434801 * r434813;
double r434815 = r434811 + r434814;
double r434816 = b;
double r434817 = c;
double r434818 = r434817 * r434805;
double r434819 = i;
double r434820 = r434819 * r434806;
double r434821 = r434818 - r434820;
double r434822 = r434816 * r434821;
double r434823 = r434815 - r434822;
double r434824 = j;
double r434825 = r434817 * r434807;
double r434826 = r434819 * r434804;
double r434827 = r434825 - r434826;
double r434828 = cbrt(r434827);
double r434829 = r434828 * r434828;
double r434830 = r434824 * r434829;
double r434831 = r434830 * r434828;
double r434832 = r434823 + r434831;
double r434833 = 3.288698165822717e-124;
bool r434834 = r434801 <= r434833;
double r434835 = 0.0;
double r434836 = r434835 - r434822;
double r434837 = r434824 * r434827;
double r434838 = r434836 + r434837;
double r434839 = cbrt(r434821);
double r434840 = r434839 * r434839;
double r434841 = r434816 * r434840;
double r434842 = r434841 * r434839;
double r434843 = r434815 - r434842;
double r434844 = r434804 * r434819;
double r434845 = -r434844;
double r434846 = fma(r434817, r434807, r434845);
double r434847 = r434824 * r434846;
double r434848 = -r434804;
double r434849 = fma(r434848, r434819, r434844);
double r434850 = r434824 * r434849;
double r434851 = r434847 + r434850;
double r434852 = r434843 + r434851;
double r434853 = r434834 ? r434838 : r434852;
double r434854 = r434803 ? r434832 : r434853;
return r434854;
}




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
| Original | 12.0 |
|---|---|
| Target | 15.5 |
| Herbie | 12.7 |
if x < -3.373588334677838e-126Initial program 9.8
rmApplied prod-diff9.8
Applied distribute-lft-in9.8
rmApplied add-cube-cbrt10.0
Applied associate-*r*10.0
if -3.373588334677838e-126 < x < 3.288698165822717e-124Initial program 16.2
Taylor expanded around 0 17.6
if 3.288698165822717e-124 < x Initial program 9.3
rmApplied prod-diff9.3
Applied distribute-lft-in9.3
rmApplied prod-diff9.3
Applied distribute-lft-in9.3
rmApplied add-cube-cbrt9.5
Applied associate-*r*9.6
Final simplification12.7
herbie shell --seed 2020062 +o rules:numerics
(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)))))