\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 -2.88745775492739174 \cdot 10^{-157}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\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 1.4823283017637211 \cdot 10^{-217}:\\
\;\;\;\;\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(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)}\right) \cdot \sqrt[3]{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 r591845 = x;
double r591846 = y;
double r591847 = z;
double r591848 = r591846 * r591847;
double r591849 = t;
double r591850 = a;
double r591851 = r591849 * r591850;
double r591852 = r591848 - r591851;
double r591853 = r591845 * r591852;
double r591854 = b;
double r591855 = c;
double r591856 = r591855 * r591847;
double r591857 = i;
double r591858 = r591857 * r591850;
double r591859 = r591856 - r591858;
double r591860 = r591854 * r591859;
double r591861 = r591853 - r591860;
double r591862 = j;
double r591863 = r591855 * r591849;
double r591864 = r591857 * r591846;
double r591865 = r591863 - r591864;
double r591866 = r591862 * r591865;
double r591867 = r591861 + r591866;
return r591867;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r591868 = x;
double r591869 = -2.8874577549273917e-157;
bool r591870 = r591868 <= r591869;
double r591871 = y;
double r591872 = z;
double r591873 = r591871 * r591872;
double r591874 = t;
double r591875 = a;
double r591876 = r591874 * r591875;
double r591877 = r591873 - r591876;
double r591878 = r591868 * r591877;
double r591879 = b;
double r591880 = c;
double r591881 = r591880 * r591872;
double r591882 = i;
double r591883 = r591882 * r591875;
double r591884 = r591881 - r591883;
double r591885 = r591879 * r591884;
double r591886 = r591878 - r591885;
double r591887 = j;
double r591888 = r591880 * r591874;
double r591889 = r591882 * r591871;
double r591890 = r591888 - r591889;
double r591891 = cbrt(r591890);
double r591892 = r591891 * r591891;
double r591893 = r591887 * r591892;
double r591894 = r591893 * r591891;
double r591895 = r591886 + r591894;
double r591896 = 1.482328301763721e-217;
bool r591897 = r591868 <= r591896;
double r591898 = 0.0;
double r591899 = r591898 - r591885;
double r591900 = r591887 * r591890;
double r591901 = r591899 + r591900;
double r591902 = cbrt(r591900);
double r591903 = r591902 * r591902;
double r591904 = r591903 * r591902;
double r591905 = r591886 + r591904;
double r591906 = r591897 ? r591901 : r591905;
double r591907 = r591870 ? r591895 : r591906;
return r591907;
}




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.1 |
if x < -2.8874577549273917e-157Initial program 9.3
rmApplied add-cube-cbrt9.6
Applied associate-*r*9.6
if -2.8874577549273917e-157 < x < 1.482328301763721e-217Initial program 17.9
Taylor expanded around 0 17.3
if 1.482328301763721e-217 < x Initial program 10.8
rmApplied add-cube-cbrt11.0
Final simplification12.1
herbie shell --seed 2020036
(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)))))