\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}\;j \le -7.230020761502895504952278131466171914023 \cdot 10^{-109}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 2.841837214549664549498805049411080034753 \cdot 10^{59}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(\left(-b\right) \cdot i\right) \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 r328817 = x;
double r328818 = y;
double r328819 = z;
double r328820 = r328818 * r328819;
double r328821 = t;
double r328822 = a;
double r328823 = r328821 * r328822;
double r328824 = r328820 - r328823;
double r328825 = r328817 * r328824;
double r328826 = b;
double r328827 = c;
double r328828 = r328827 * r328819;
double r328829 = i;
double r328830 = r328829 * r328822;
double r328831 = r328828 - r328830;
double r328832 = r328826 * r328831;
double r328833 = r328825 - r328832;
double r328834 = j;
double r328835 = r328827 * r328821;
double r328836 = r328829 * r328818;
double r328837 = r328835 - r328836;
double r328838 = r328834 * r328837;
double r328839 = r328833 + r328838;
return r328839;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r328840 = j;
double r328841 = -7.2300207615028955e-109;
bool r328842 = r328840 <= r328841;
double r328843 = x;
double r328844 = y;
double r328845 = z;
double r328846 = r328844 * r328845;
double r328847 = t;
double r328848 = a;
double r328849 = r328847 * r328848;
double r328850 = r328846 - r328849;
double r328851 = r328843 * r328850;
double r328852 = b;
double r328853 = cbrt(r328852);
double r328854 = r328853 * r328853;
double r328855 = c;
double r328856 = r328855 * r328845;
double r328857 = i;
double r328858 = r328857 * r328848;
double r328859 = r328856 - r328858;
double r328860 = r328853 * r328859;
double r328861 = r328854 * r328860;
double r328862 = r328851 - r328861;
double r328863 = r328855 * r328847;
double r328864 = r328857 * r328844;
double r328865 = r328863 - r328864;
double r328866 = r328840 * r328865;
double r328867 = r328862 + r328866;
double r328868 = 2.8418372145496645e+59;
bool r328869 = r328840 <= r328868;
double r328870 = r328852 * r328855;
double r328871 = r328845 * r328870;
double r328872 = -r328858;
double r328873 = r328852 * r328872;
double r328874 = r328871 + r328873;
double r328875 = r328851 - r328874;
double r328876 = r328840 * r328855;
double r328877 = r328847 * r328876;
double r328878 = r328840 * r328844;
double r328879 = r328857 * r328878;
double r328880 = -r328879;
double r328881 = r328877 + r328880;
double r328882 = r328875 + r328881;
double r328883 = -r328852;
double r328884 = r328883 * r328857;
double r328885 = r328884 * r328848;
double r328886 = r328871 + r328885;
double r328887 = r328851 - r328886;
double r328888 = r328887 + r328866;
double r328889 = r328869 ? r328882 : r328888;
double r328890 = r328842 ? r328867 : r328889;
return r328890;
}




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 | 9.6 |
if j < -7.2300207615028955e-109Initial program 8.8
rmApplied add-cube-cbrt9.1
Applied associate-*l*9.1
if -7.2300207615028955e-109 < j < 2.8418372145496645e+59Initial program 15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
Simplified15.5
rmApplied sub-neg15.5
Applied distribute-lft-in15.5
Simplified13.2
Simplified10.5
if 2.8418372145496645e+59 < j Initial program 6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified7.1
rmApplied distribute-lft-neg-in7.1
Applied associate-*r*7.5
Simplified7.5
Final simplification9.6
herbie shell --seed 2019323
(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)))))