\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 -3.558679195290626040559800458140671253204 \lor \neg \left(j \le 4.784801129022457779255706995671921542182 \cdot 10^{-23}\right):\\
\;\;\;\;\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) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot z\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{y} + \left(-a \cdot \left(x \cdot t\right)\right)\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)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r346855 = x;
double r346856 = y;
double r346857 = z;
double r346858 = r346856 * r346857;
double r346859 = t;
double r346860 = a;
double r346861 = r346859 * r346860;
double r346862 = r346858 - r346861;
double r346863 = r346855 * r346862;
double r346864 = b;
double r346865 = c;
double r346866 = r346865 * r346857;
double r346867 = i;
double r346868 = r346867 * r346860;
double r346869 = r346866 - r346868;
double r346870 = r346864 * r346869;
double r346871 = r346863 - r346870;
double r346872 = j;
double r346873 = r346865 * r346859;
double r346874 = r346867 * r346856;
double r346875 = r346873 - r346874;
double r346876 = r346872 * r346875;
double r346877 = r346871 + r346876;
return r346877;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r346878 = j;
double r346879 = -3.558679195290626;
bool r346880 = r346878 <= r346879;
double r346881 = 4.784801129022458e-23;
bool r346882 = r346878 <= r346881;
double r346883 = !r346882;
bool r346884 = r346880 || r346883;
double r346885 = x;
double r346886 = y;
double r346887 = z;
double r346888 = r346886 * r346887;
double r346889 = t;
double r346890 = a;
double r346891 = r346889 * r346890;
double r346892 = r346888 - r346891;
double r346893 = r346885 * r346892;
double r346894 = b;
double r346895 = c;
double r346896 = r346894 * r346895;
double r346897 = r346887 * r346896;
double r346898 = i;
double r346899 = r346898 * r346890;
double r346900 = -r346899;
double r346901 = r346894 * r346900;
double r346902 = r346897 + r346901;
double r346903 = r346893 - r346902;
double r346904 = r346895 * r346889;
double r346905 = r346898 * r346886;
double r346906 = r346904 - r346905;
double r346907 = r346878 * r346906;
double r346908 = r346903 + r346907;
double r346909 = r346885 * r346887;
double r346910 = cbrt(r346886);
double r346911 = r346910 * r346910;
double r346912 = r346909 * r346911;
double r346913 = r346912 * r346910;
double r346914 = r346885 * r346889;
double r346915 = r346890 * r346914;
double r346916 = -r346915;
double r346917 = r346913 + r346916;
double r346918 = r346895 * r346887;
double r346919 = r346918 - r346899;
double r346920 = r346894 * r346919;
double r346921 = r346917 - r346920;
double r346922 = r346878 * r346895;
double r346923 = r346889 * r346922;
double r346924 = r346878 * r346886;
double r346925 = r346898 * r346924;
double r346926 = -r346925;
double r346927 = r346923 + r346926;
double r346928 = r346921 + r346927;
double r346929 = r346884 ? r346908 : r346928;
return r346929;
}




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.5 |
|---|---|
| Target | 16.3 |
| Herbie | 9.0 |
if j < -3.558679195290626 or 4.784801129022458e-23 < j Initial program 7.6
rmApplied sub-neg7.6
Applied distribute-lft-in7.6
Simplified7.8
if -3.558679195290626 < j < 4.784801129022458e-23Initial program 15.9
rmApplied sub-neg15.9
Applied distribute-lft-in15.9
Simplified15.9
Simplified15.8
rmApplied associate-*r*15.3
rmApplied add-cube-cbrt15.5
Applied associate-*r*15.5
rmApplied sub-neg15.5
Applied distribute-lft-in15.5
Simplified13.0
Simplified9.8
Final simplification9.0
herbie shell --seed 2019303
(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.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-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.63353334603158369e-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)))))