\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)
\begin{array}{l}
\mathbf{if}\;y1 \le -3.33065402157400899 \cdot 10^{94}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\right)\\
\mathbf{elif}\;y1 \le -4.44302302716477763 \cdot 10^{-19}:\\
\;\;\;\;\left(\left(\left(\left(0 - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;y1 \le 1.20665447034761603 \cdot 10^{-143}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(a \cdot \left(y3 \cdot \left(y \cdot y5\right)\right) - \left(y \cdot \left(y3 \cdot \left(y4 \cdot c\right)\right) + y5 \cdot \left(a \cdot \left(y2 \cdot t\right)\right)\right)\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r690733 = x;
double r690734 = y;
double r690735 = r690733 * r690734;
double r690736 = z;
double r690737 = t;
double r690738 = r690736 * r690737;
double r690739 = r690735 - r690738;
double r690740 = a;
double r690741 = b;
double r690742 = r690740 * r690741;
double r690743 = c;
double r690744 = i;
double r690745 = r690743 * r690744;
double r690746 = r690742 - r690745;
double r690747 = r690739 * r690746;
double r690748 = j;
double r690749 = r690733 * r690748;
double r690750 = k;
double r690751 = r690736 * r690750;
double r690752 = r690749 - r690751;
double r690753 = y0;
double r690754 = r690753 * r690741;
double r690755 = y1;
double r690756 = r690755 * r690744;
double r690757 = r690754 - r690756;
double r690758 = r690752 * r690757;
double r690759 = r690747 - r690758;
double r690760 = y2;
double r690761 = r690733 * r690760;
double r690762 = y3;
double r690763 = r690736 * r690762;
double r690764 = r690761 - r690763;
double r690765 = r690753 * r690743;
double r690766 = r690755 * r690740;
double r690767 = r690765 - r690766;
double r690768 = r690764 * r690767;
double r690769 = r690759 + r690768;
double r690770 = r690737 * r690748;
double r690771 = r690734 * r690750;
double r690772 = r690770 - r690771;
double r690773 = y4;
double r690774 = r690773 * r690741;
double r690775 = y5;
double r690776 = r690775 * r690744;
double r690777 = r690774 - r690776;
double r690778 = r690772 * r690777;
double r690779 = r690769 + r690778;
double r690780 = r690737 * r690760;
double r690781 = r690734 * r690762;
double r690782 = r690780 - r690781;
double r690783 = r690773 * r690743;
double r690784 = r690775 * r690740;
double r690785 = r690783 - r690784;
double r690786 = r690782 * r690785;
double r690787 = r690779 - r690786;
double r690788 = r690750 * r690760;
double r690789 = r690748 * r690762;
double r690790 = r690788 - r690789;
double r690791 = r690773 * r690755;
double r690792 = r690775 * r690753;
double r690793 = r690791 - r690792;
double r690794 = r690790 * r690793;
double r690795 = r690787 + r690794;
return r690795;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r690796 = y1;
double r690797 = -3.330654021574009e+94;
bool r690798 = r690796 <= r690797;
double r690799 = x;
double r690800 = y;
double r690801 = r690799 * r690800;
double r690802 = z;
double r690803 = t;
double r690804 = r690802 * r690803;
double r690805 = r690801 - r690804;
double r690806 = a;
double r690807 = b;
double r690808 = r690806 * r690807;
double r690809 = c;
double r690810 = i;
double r690811 = r690809 * r690810;
double r690812 = r690808 - r690811;
double r690813 = r690805 * r690812;
double r690814 = j;
double r690815 = r690799 * r690814;
double r690816 = k;
double r690817 = r690802 * r690816;
double r690818 = r690815 - r690817;
double r690819 = y0;
double r690820 = r690819 * r690807;
double r690821 = r690796 * r690810;
double r690822 = r690820 - r690821;
double r690823 = r690818 * r690822;
double r690824 = r690813 - r690823;
double r690825 = y2;
double r690826 = r690799 * r690825;
double r690827 = y3;
double r690828 = r690802 * r690827;
double r690829 = r690826 - r690828;
double r690830 = r690819 * r690809;
double r690831 = r690796 * r690806;
double r690832 = r690830 - r690831;
double r690833 = r690829 * r690832;
double r690834 = r690824 + r690833;
double r690835 = r690803 * r690814;
double r690836 = r690800 * r690816;
double r690837 = r690835 - r690836;
double r690838 = y4;
double r690839 = r690838 * r690807;
double r690840 = y5;
double r690841 = r690840 * r690810;
double r690842 = r690839 - r690841;
double r690843 = r690837 * r690842;
double r690844 = r690834 + r690843;
double r690845 = r690803 * r690825;
double r690846 = r690800 * r690827;
double r690847 = r690845 - r690846;
double r690848 = r690838 * r690809;
double r690849 = r690840 * r690806;
double r690850 = r690848 - r690849;
double r690851 = r690847 * r690850;
double r690852 = r690844 - r690851;
double r690853 = r690814 * r690840;
double r690854 = r690827 * r690853;
double r690855 = r690819 * r690854;
double r690856 = r690816 * r690840;
double r690857 = r690825 * r690856;
double r690858 = r690819 * r690857;
double r690859 = r690814 * r690838;
double r690860 = r690827 * r690859;
double r690861 = r690796 * r690860;
double r690862 = r690858 + r690861;
double r690863 = r690855 - r690862;
double r690864 = r690852 + r690863;
double r690865 = -4.443023027164778e-19;
bool r690866 = r690796 <= r690865;
double r690867 = 0.0;
double r690868 = r690867 - r690823;
double r690869 = r690868 + r690833;
double r690870 = r690869 + r690843;
double r690871 = r690870 - r690851;
double r690872 = r690816 * r690825;
double r690873 = r690814 * r690827;
double r690874 = r690872 - r690873;
double r690875 = r690838 * r690796;
double r690876 = r690840 * r690819;
double r690877 = r690875 - r690876;
double r690878 = r690874 * r690877;
double r690879 = r690871 + r690878;
double r690880 = 1.206654470347616e-143;
bool r690881 = r690796 <= r690880;
double r690882 = r690800 * r690840;
double r690883 = r690827 * r690882;
double r690884 = r690806 * r690883;
double r690885 = r690827 * r690848;
double r690886 = r690800 * r690885;
double r690887 = r690825 * r690803;
double r690888 = r690806 * r690887;
double r690889 = r690840 * r690888;
double r690890 = r690886 + r690889;
double r690891 = r690884 - r690890;
double r690892 = r690844 - r690891;
double r690893 = r690892 + r690878;
double r690894 = r690881 ? r690864 : r690893;
double r690895 = r690866 ? r690879 : r690894;
double r690896 = r690798 ? r690864 : r690895;
return r690896;
}




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




Bits error versus k




Bits error versus y0




Bits error versus y1




Bits error versus y2




Bits error versus y3




Bits error versus y4




Bits error versus y5
Results
| Original | 26.9 |
|---|---|
| Target | 30.6 |
| Herbie | 29.5 |
if y1 < -3.330654021574009e+94 or -4.443023027164778e-19 < y1 < 1.206654470347616e-143Initial program 27.3
Taylor expanded around inf 29.9
if -3.330654021574009e+94 < y1 < -4.443023027164778e-19Initial program 25.8
Taylor expanded around 0 28.7
if 1.206654470347616e-143 < y1 Initial program 26.6
Taylor expanded around inf 28.9
Final simplification29.5
herbie shell --seed 2020021
(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:name "Linear.Matrix:det44 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< y4 -7.206256231996481e+60) (- (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))))) (- (/ (- (* y2 t) (* y3 y)) (/ 1 (- (* y4 c) (* y5 a)))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (if (< y4 -3.364603505246317e-66) (+ (- (- (- (* (* t c) (* i z)) (* (* a t) (* b z))) (* (* y c) (* i x))) (* (- (* b y0) (* i y1)) (- (* j x) (* k z)))) (- (* (- (* y0 c) (* a y1)) (- (* x y2) (* z y3))) (- (* (- (* t y2) (* y y3)) (- (* y4 c) (* a y5))) (* (- (* y1 y4) (* y5 y0)) (- (* k y2) (* j y3)))))) (if (< y4 -1.2000065055686116e-105) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 6.718963124057495e-279) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (if (< y4 4.77962681403792e-222) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 2.2852241541266835e-175) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (- (* k (* i (* z y1))) (+ (* j (* i (* x y1))) (* y0 (* k (* z b)))))) (- (* z (* y3 (* a y1))) (+ (* y2 (* x (* a y1))) (* y0 (* z (* c y3)))))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))))))))
(+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (* (- (* x j) (* z k)) (- (* y0 b) (* y1 i)))) (* (- (* x y2) (* z y3)) (- (* y0 c) (* y1 a)))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0)))))