Lines Matching +full:- +full:t
24 template<typename T>
73 template<typename T>
95 constexpr static float abserr_cholesky = 3e-4;
96 constexpr static float relerr_cholesky = 1e-4;
112 constexpr static float abserr_cholesky = 3e-4;
113 constexpr static float relerr_cholesky = 1e-4;
120 constexpr static float abserr_inv = 4.0e-6;
121 constexpr static float relerr_inv = 5.0e-6;
130 constexpr static float abserr_cholesky = 2e-1;
131 constexpr static float relerr_cholesky = 2e-1;
133 constexpr static float abserr_householder = 2e-4;
134 constexpr static float relerr_householder = 2e-3;
138 constexpr static float relerr_qr = 1e-2;
140 constexpr static float abserr_inv = 3e-2;
141 constexpr static float relerr_inv = 3e-2;
263 template<typename T,int R,int C, template<int> typename A>
264 void init_mat(Matrix<T,R,C,A> &pDst,std::size_t r,std::size_t c) in init_mat() argument
285 pDst[i] = T(p[i]); in init_mat()
306 template<typename T,
310 void _matinv(const Matrix<T,NB,NB,A> &a,M && res) in _matinv() argument
313 Matrix<T,NB,NB,TMP_ALLOC> b = a; in _matinv()
321 res.row(r) = T{}; in _matinv()
322 res(r,r) = number_traits<T>::one(); in _matinv()
328 T pivot = b(c,c); in _matinv()
334 T newPivot = b(r,c); in _matinv()
342 if ((pivot!=T{}) && (selectedRow != c)) in _matinv()
347 else if (pivot == T{}) in _matinv()
352 pivot = number_traits<T>::one() / pivot; in _matinv()
361 const T tmp = b(r,c); in _matinv()
362 b.row(r,c) -= b.row(c,c)*tmp; in _matinv()
363 res.row(r) -= res.row(c)*tmp; in _matinv()
368 const T tmp = b(r,c); in _matinv()
369 b.row(r,c) -= b.row(c,c)*tmp; in _matinv()
370 res.row(r) -= res.row(c)*tmp; in _matinv()
378 template<typename T,
382 Matrix<T,NB,NB,TMP_ALLOC> matinv(const Matrix<T,NB,NB,A> &a) in matinv() argument
384 Matrix<T,NB,NB,TMP_ALLOC> res; in matinv()
389 template<typename T,
393 Matrix<T,DYNAMIC,DYNAMIC,TMP_ALLOC> matinv(const Matrix<T,NB,NB,A> &a) in matinv() argument
395 Matrix<T,DYNAMIC,DYNAMIC,TMP_ALLOC> res(a.rows(),a.columns()); in matinv()
400 template<typename T,
404 void matinv(Matrix<T,DYNAMIC,DYNAMIC,TMP_ALLOC> &res, const Matrix<T,NB,NB,A> &a) in matinv() argument
410 template<typename T,int R,int C>
413 std::cout << "----\r\n"; in testinv()
417 PMat<T,R,C> a; in testinv()
419 PMat<T> a(R,C); in testinv()
425 PMat<T> res(R,C); in testinv()
432 PMat<T,R,C> res = matinv(a); in testinv()
439 PMat<T> amod(a); in testinv()
440 PMat<T> cmsis_res(R,C); in testinv()
450 ErrThreshold<T>::abserr_inv,ErrThreshold<T>::relerr_inv)) in testinv()
460 template<typename T,int R,int C>
463 std::cout << "----\r\n"; in testadd()
467 PMat<T,R,C> a; in testadd()
468 PMat<T,R,C> b; in testadd()
470 PMat<T> a(R,C); in testadd()
471 PMat<T> b(R,C); in testadd()
482 PMat<T,R,C> res = a+b; in testadd()
484 PMat<T> res = a+b; in testadd()
505 PMat<T,R,C> cmsis_res; in testadd()
507 PMat<T> cmsis_res(R,C); in testadd()
515 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testadd()
525 template<typename T,int R,int C>
528 std::cout << "----\r\n"; in testdiag()
531 PVector<T,R> a; in testdiag()
533 PVector<T> a(R); in testdiag()
541 PMat<T,R,C> res=PMat<T,R,C>::diagonal(a); in testdiag()
543 PMat<T> res=PMat<T>::diagonal(a); in testdiag()
549 const T* ap = a.const_ptr(); in testdiag()
554 PMat<T,R,C> cmsis_res; in testdiag()
556 PMat<T> cmsis_res(R,C); in testdiag()
558 T* refp = cmsis_res.ptr(); in testdiag()
568 refp[row*C+col] = T{}; in testdiag()
581 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testdiag()
591 template<typename T,int R,int C>
594 std::cout << "----\r\n"; in testouter()
597 PVector<T,R> a; in testouter()
598 PVector<T,C> b; in testouter()
607 PMat<T,R,C> res = outer(a,b); in testouter()
617 PMat<T,R,C> cmsis_res; in testouter()
619 PMat<T> cmsis_res(R,C); in testouter()
621 CMSISOuter<T>::run(a.const_ptr(),b.const_ptr(),cmsis_res.ptr(),R,C); in testouter()
628 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testouter()
637 template<typename T,int R,int C>
640 std::cout << "----\r\n"; in testview()
644 PVector<T,R> a; in testview()
646 PVector<T> a(R); in testview()
651 PMat<T,R,C> res=PMat<T,R,C>::diagonal(a); in testview()
653 PMat<T> res=PMat<T>::diagonal(a); in testview()
661 PMat<T,subsize,subsize> resb; in testview()
663 PMat<T> resb(subsize,subsize); in testview()
675 PMat<T,subsize,subsize> cmsis_res; in testview()
695 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testview()
706 template<typename T,int R,int C>
710 using STO = typename vector_traits<T>::storage_type; in testmatvec()
712 std::cout << "----\r\n"; in testmatvec()
716 PVector<T,C> a; in testmatvec()
718 PVector<T> a(C); in testmatvec()
723 PMat<T,R,C> m; in testmatvec()
725 PMat<T> m(R,C); in testmatvec()
734 PVector<T,R> res = dot(m,a); in testmatvec()
736 PVector<T> res = dot(m,a); in testmatvec()
746 PVector<T,R> cmsis_res; in testmatvec()
748 PVector<T> cmsis_res(R); in testmatvec()
750 typename CMSISMatrixType<T>::type S; in testmatvec()
753 S.pData = reinterpret_cast<STO*>(const_cast<T*>(m.ptr())); in testmatvec()
764 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testmatvec()
772 template<typename T,int R,int C>
775 const T scalar = MatTestConstant<T>::half; in testcomplexmatvec()
776 using STO = typename vector_traits<T>::storage_type; in testcomplexmatvec()
778 std::cout << "----\r\n"; in testcomplexmatvec()
782 PVector<T,C> a; in testcomplexmatvec()
783 PVector<T,C> b; in testcomplexmatvec()
785 PVector<T> a(C); in testcomplexmatvec()
786 PVector<T> b(C); in testcomplexmatvec()
792 PMat<T,R,C> m; in testcomplexmatvec()
794 PMat<T> m(R,C); in testcomplexmatvec()
803 PVector<T,C> tmpv = a + b * scalar; in testcomplexmatvec()
804 PVector<T,R> res = dot(m,tmpv); in testcomplexmatvec()
806 PVector<T> tmpv = a + b * scalar; in testcomplexmatvec()
807 PVector<T> res = dot(m,tmpv); in testcomplexmatvec()
817 PVector<T,R> cmsis_res; in testcomplexmatvec()
818 PVector<T,C> tmp; in testcomplexmatvec()
820 PVector<T> cmsis_res(R); in testcomplexmatvec()
821 PVector<T> tmp(C); in testcomplexmatvec()
823 typename CMSISMatrixType<T>::type S; in testcomplexmatvec()
826 S.pData = reinterpret_cast<STO*>(const_cast<T*>(m.ptr())); in testcomplexmatvec()
844 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testcomplexmatvec()
854 template<typename T,int R, int K,int C>
857 std::cout << "----\r\n"; in testmatmult()
860 using S = typename CMSISMatrixType<T>::scalar; in testmatmult()
863 PMat<T,R,K> ma; in testmatmult()
865 PMat<T> ma(R,K); in testmatmult()
870 PMat<T,K,C> mb; in testmatmult()
872 PMat<T> mb(K,C); in testmatmult()
878 mb += TestConstant<T>::small; in testmatmult()
888 PMat<T,R,C> res = dot(ma,mb); in testmatmult()
890 PMat<T> res = dot(ma,mb); in testmatmult()
904 PMat<T> tmp(C,K); in testmatmult()
909 PMat<T,R,C> cmsis_res; in testmatmult()
911 PMat<T> cmsis_res(R,C); in testmatmult()
915 typename CMSISMatrixType<T>::type SA; in testmatmult()
920 typename CMSISMatrixType<T>::type SB; in testmatmult()
925 typename CMSISMatrixType<T>::type RES; in testmatmult()
940 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testmatmult()
949 template<typename T,int R,int K, int C>
952 std::cout << "----\r\n"; in testsubmatmult()
955 using S = typename CMSISMatrixType<T>::scalar; in testsubmatmult()
960 PMat<T,R+2,K+2> ma; in testsubmatmult()
962 PMat<T> ma(R+2,K+2); in testsubmatmult()
967 PMat<T,K+2,C+2> mb; in testsubmatmult()
969 PMat<T> mb(K+2,C+2); in testsubmatmult()
975 mb += MatTestConstant<T>::value; in testsubmatmult()
984 PMat<T,R,C> res(T{}); in testsubmatmult()
986 PMat<T> res(R,C,T{}); in testsubmatmult()
1002 PMat<T> cmsis_res(R,C); in testsubmatmult()
1003 PMat<T> cmsis_ma(R,K); in testsubmatmult()
1004 PMat<T> cmsis_mb(K,C); in testsubmatmult()
1005 PMat<T> tmp(C,K); in testsubmatmult()
1007 typename CMSISMatrixType<T>::type SA; in testsubmatmult()
1012 typename CMSISMatrixType<T>::type SB; in testsubmatmult()
1017 typename CMSISMatrixType<T>::type RES; in testsubmatmult()
1037 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testsubmatmult()
1047 template<typename T,int R,int C>
1050 std::cout << "----\r\n"; in testmattranspose()
1054 PMat<T,R,C> ma; in testmattranspose()
1056 PMat<T> ma(R,C); in testmattranspose()
1066 PMat<T,C,R> res = ma.transpose(); in testmattranspose()
1068 PMat<T> res = ma.transpose(); in testmattranspose()
1078 PMat<T,C,R> cmsis_res; in testmattranspose()
1080 PMat<T> cmsis_res(C,R); in testmattranspose()
1083 typename CMSISMatrixType<T>::type SA; in testmattranspose()
1086 SA.pData = reinterpret_cast<typename CMSISMatrixType<T>::scalar*>(ma.ptr()); in testmattranspose()
1088 typename CMSISMatrixType<T>::type RES; in testmattranspose()
1091 RES.pData = reinterpret_cast<typename CMSISMatrixType<T>::scalar*>(cmsis_res.ptr()); in testmattranspose()
1102 ErrThreshold<T>::abserr,ErrThreshold<T>::relerr)) in testmattranspose()
1130 typename V,typename T>
1131 inline T _householder(Vector<T,L,A> &res,const V&v,const T eps) in _householder() argument
1133 T alpha = v[0]; in _householder()
1134 T tau; in _householder()
1135 T beta; in _householder()
1138 res[0] = T{}; in _householder()
1139 return(T{}); in _householder()
1141 T xnorm2 = dot(v.sub(1),v.sub(1)); in _householder()
1146 tau = T{}; in _householder()
1147 res = T{}; in _householder()
1157 beta = -_gen_sqrt(alpha*alpha+xnorm2); in _householder()
1159 T r = number_traits<T>::one() / (alpha - beta); in _householder()
1161 tau = (beta - alpha)/beta; in _householder()
1162 res[0] = number_traits<T>::one(); in _householder()
1167 template<typename V,typename T,
1170 SameElementType<V,T>::value &&
1172 auto householder(const V&v,const T threshold) in householder()
1175 Vector<T,NB,TMP_ALLOC> res; in householder()
1176 T beta = _householder(res,v,threshold); in householder()
1177 return std::tuple<T,Vector<T,NB,TMP_ALLOC>>(beta,res); in householder()
1180 template<typename V,typename T,
1183 SameElementType<V,T>::value &&
1185 auto householder(const V&v,const T threshold) in householder()
1187 Vector<T,DYNAMIC,TMP_ALLOC> res(v.length()); in householder()
1188 T beta = _householder(res,v,threshold); in householder()
1189 return std::tuple<T,Vector<T,DYNAMIC,TMP_ALLOC>>(beta,res); in householder()
1192 template<typename V,typename T,typename TMP,
1195 SameElementType<V,T>::value &&
1197 auto householder(const V&v,const T threshold,TMP &res) in householder()
1199 T beta = _householder(res,v,threshold); in householder()
1203 template<typename T>
1228 template<typename T,int NB>
1231 std::cout << "----\r\n" << "N = " << NB << "\r\n"; in testHouseholder()
1233 PVector<T,NB> a; in testHouseholder()
1235 PVector<T> a(NB); in testHouseholder()
1244 auto res = householder(a,HouseholderThreshold<T>::value); in testHouseholder()
1245 //PVector<T,NB> res;// = a + b; in testHouseholder()
1256 PVector<T,NB> ref; in testHouseholder()
1258 PVector<T> ref(NB); in testHouseholder()
1260 T ref_beta = cmsis_householder(a.const_ptr(),ref.ptr(),NB); in testHouseholder()
1264 ErrThreshold<T>::abserr_householder,ErrThreshold<T>::relerr_householder)) in testHouseholder()
1271 ErrThreshold<T>::abserr_householder,ErrThreshold<T>::relerr_householder)) in testHouseholder()
1282 template<typename T,int R,int C,template<int> typename A>
1283 auto QR(const Matrix<T,R,C,A>&m,const T eps,bool wantQ) in QR() argument
1286 Vector<T,C,TMP_ALLOC> tau; in QR()
1287 Matrix<T,R,C,TMP_ALLOC> RM = m; in QR()
1288 Matrix<T,R,R,TMP_ALLOC> Q = Matrix<T,R,R>::identity(); in QR()
1292 Vector<T,R,TMP_ALLOC> tmpvec; in QR()
1293 Matrix<T,1,R,TMP_ALLOC> tmpmat; in QR()
1295 Vector<T> tau(m.columns()); in QR()
1296 Matrix<T> RM = m; in QR()
1297 Matrix<T> Q = Matrix<T>::identity(m.rows()); in QR()
1301 Vector<T> tmpvec(m.rows()); in QR()
1302 Matrix<T> tmpmat(1,m.rows()); in QR()
1309 for(index_t c=0;c<NBC-1;c++) in QR()
1314 MatrixView<T> vt(tmpvec,1,NBR-c); in QR()
1315 dot(tmpmat.sub(0,1,0,NBC-c),vt,RM.sub(c,c)); in QR()
1318 RM.sub(c,c) - beta * outer(tmpvec.sub(0,NBR-c),tmpmat.row(0,0,NBC-c)); in QR()
1321 // Not valid when c == C-1 in QR()
1322 // We don't want to use a test since CMSIS-DSP is not using in QR()
1324 RM.col(c,c+1) = copy(tmpvec.sub(1,NBR-c)); in QR()
1329 auto beta = householder(RM.col(NBC-1,NBC-1),eps,tmpvec); in QR()
1330 tau[NBC-1] = beta; in QR()
1332 MatrixView<T> vt(tmpvec,1,NBR-(NBC-1)); in QR()
1333 dot(tmpmat.sub(0,1,0,NBC-(NBC-1)),vt,RM.sub(NBC-1,NBC-1)); in QR()
1335 RM.sub(NBC-1,NBC-1) = in QR()
1336 RM.sub(NBC-1,NBC-1) - beta * outer(tmpvec.sub(0,NBR-(NBC-1)),tmpmat.row(0,0,NBC-(NBC-1))); in QR()
1343 for(index_t c=NBC-1;c>=0;c--) in QR()
1346 tmpvec[0] = number_traits<T>::one(); in QR()
1348 MatrixView<T> vt(tmpvec,1,NBR-c); in QR()
1349 dot(tmpmat.sub(0,1,0,NBR-c),vt,Q.sub(c,c)); in QR()
1352 Q.sub(c,c) - tau[c] * outer(tmpvec.sub(0,NBR-c),tmpmat.row(0,0,NBR-c)); in QR()
1361 template<typename T,int R,int C>
1364 std::cout << "----\r\n"; in testQR()
1367 PMat<T,R,C> a; in testQR()
1369 PMat<T> a(R,C); in testQR()
1378 auto res = QR(a,HouseholderThreshold<T>::value,true); in testQR()
1397 PMat<T,R,C> cmsis_res; in testQR()
1398 PMat<T,R,C> cmsis_outRp; in testQR()
1399 PMat<T,R,R> cmsis_outQp; in testQR()
1400 PVector<T,C> cmsis_tau; in testQR()
1401 PVector<T,R> cmsis_tmpa; in testQR()
1402 PVector<T,C> cmsis_tmpb; in testQR()
1404 PMat<T> cmsis_res(R,C); in testQR()
1405 PMat<T> cmsis_outRp(R,C); in testQR()
1406 PMat<T> cmsis_outQp(R,R); in testQR()
1407 PVector<T> cmsis_tau(C); in testQR()
1408 PVector<T> cmsis_tmpa(R); in testQR()
1409 PVector<T> cmsis_tmpb(C); in testQR()
1412 typename CMSISMatrixType<T>::type RP; in testQR()
1417 typename CMSISMatrixType<T>::type QP; in testQR()
1422 typename CMSISMatrixType<T>::type IN; in testQR()
1427 //std::cout << "-------\r\n"; in testQR()
1433 arm_status status=cmsis_qr(&IN,HouseholderThreshold<T>::value, in testQR()
1446 ErrThreshold<T>::abserr_qr,ErrThreshold<T>::relerr_qr)) in testQR()
1453 ErrThreshold<T>::abserr_qr,ErrThreshold<T>::relerr_qr)) in testQR()
1459 ErrThreshold<T>::abserr_qr,ErrThreshold<T>::relerr_qr)) in testQR()
1469 template<typename T,int R,template<int> typename A>
1470 auto cholesky(const Matrix<T,R,R,A>&a) in cholesky() argument
1474 Matrix<T,R,R,TMP_ALLOC> g = a; in cholesky()
1475 Vector<T,R,TMP_ALLOC> tmp; in cholesky()
1477 Matrix<T> g = a; in cholesky()
1478 Vector<T> tmp(a.rows()); in cholesky()
1483 g.col(0,0) = g.col(0,0) * (T)(number_traits<T>::one() / _gen_sqrt(g(0,0))); in cholesky()
1489 … g.col(j,j) = (g.col(j,j) - tmp.sub(j)) * (T)(number_traits<T>::one() / _gen_sqrt(g(j,j)- tmp[j])); in cholesky()
1496 template<typename T,int R>
1499 std::cout << "----\r\n"; in testCholesky()
1502 PMat<T,R,R> a; in testCholesky()
1504 PMat<T> a(R,R); in testCholesky()
1516 // temporary buffer like CMSIS-DSP in testCholesky()
1524 PMat<T,R,R> cmsis_res(T{}); in testCholesky()
1526 typename CMSISMatrixType<T>::type OUT; in testCholesky()
1532 typename CMSISMatrixType<T>::type IN; in testCholesky()
1537 //std::cout << "-------\r\n"; in testCholesky()
1550 ErrThreshold<T>::abserr_cholesky,ErrThreshold<T>::relerr_cholesky)) in testCholesky()
1557 template<typename TT,typename ...T>
1562 testinv<TT,T::value...>(); in all()
1566 template<typename TT,typename ...T>
1571 testouter<TT,T::value...>(); in all()
1575 template<typename TT,typename ...T>
1580 testmatvec<TT,T::value...>(); in all()
1584 template<typename TT,typename ...T>
1589 testcomplexmatvec<TT,T::value...>(); in all()
1593 template<typename TT,typename ...T>
1598 testadd <TT,T::value...>(); in all()
1602 template<typename TT,typename ...T>
1607 testmattranspose<TT,T::value...>(); in all()
1611 template<typename TT,typename ...T>
1616 testmatmult<TT,T::value...>(); in all()
1620 template<typename TT,typename ...T>
1625 testsubmatmult<TT,T::value...>(); in all()
1630 template<typename TT,typename... T>
1635 (mp_push_front<T,TT>::all(),...); in all()
1644 template<typename T>
1650 const int nb_tails = TailForTests<T>::tail; in matrix_all_test()
1651 const int nb_loops = TailForTests<T>::loop; in matrix_all_test()
1689 if constexpr (number_traits<T>::is_float) in matrix_all_test()
1694 title<T>("Householder"); in matrix_all_test()
1695 testHouseholder<T,NBVEC_4>(); in matrix_all_test()
1696 testHouseholder<T,NBVEC_16>(); in matrix_all_test()
1697 testHouseholder<T,NBVEC_32>(); in matrix_all_test()
1699 title<T>("QR"); in matrix_all_test()
1700 testQR<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1701 testQR<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1702 testQR<T,NBVEC_32,NBVEC_32>(); in matrix_all_test()
1704 title<T>("Cholesky"); in matrix_all_test()
1705 testCholesky<T,NBVEC_4>(); in matrix_all_test()
1706 testCholesky<T,NBVEC_16>(); in matrix_all_test()
1707 testCholesky<T,NBVEC_32>(); in matrix_all_test()
1712 title<T>("Matrix inverse"); in matrix_all_test()
1713 testinv<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1714 testinv<T,NBVEC_8,NBVEC_8>(); in matrix_all_test()
1715 testinv<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1722 title<T>("Matrix outer product"); in matrix_all_test()
1724 testouter<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1725 testouter<T,NBVEC_8,NBVEC_8>(); in matrix_all_test()
1726 testouter<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1730 title<T>("Matrix outer product"); in matrix_all_test()
1734 if constexpr (!std::is_same<T,double>::value) in matrix_all_test()
1737 title<T>("Matrix times vector"); in matrix_all_test()
1739 testmatvec<T,NBVEC_4 ,NBVEC_4>(); in matrix_all_test()
1740 testmatvec<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1741 testmatvec<T,NBVEC_32,NBVEC_32>(); in matrix_all_test()
1742 testmatvec<T,NBVEC_44,NBVEC_44>(); in matrix_all_test()
1743 testmatvec<T,NBVEC_47,NBVEC_47>(); in matrix_all_test()
1747 title<T>("Matrix times vector"); in matrix_all_test()
1752 title<T>("Matrix times vector expression"); in matrix_all_test()
1754 testcomplexmatvec<T,NBVEC_4 ,NBVEC_4>(); in matrix_all_test()
1755 testcomplexmatvec<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1756 testcomplexmatvec<T,NBVEC_32,NBVEC_32>(); in matrix_all_test()
1757 testcomplexmatvec<T,NBVEC_44,NBVEC_44>(); in matrix_all_test()
1758 testcomplexmatvec<T,NBVEC_47,NBVEC_47>(); in matrix_all_test()
1762 title<T>("Matrix times vector expression"); in matrix_all_test()
1767 if constexpr (!std::is_same<T,Q7>::value && !std::is_same<T,double>::value) in matrix_all_test()
1770 title<T>("Matrix add"); in matrix_all_test()
1772 testadd<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1773 testadd<T,NBVEC_8,NBVEC_8>(); in matrix_all_test()
1774 testadd<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1778 title<T>("Matrix add"); in matrix_all_test()
1784 title<T>("Matrix diag"); in matrix_all_test()
1786 testdiag<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1787 testdiag<T,NBVEC_8,NBVEC_8>(); in matrix_all_test()
1788 testdiag<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1790 title<T>("Matrix submatrix"); in matrix_all_test()
1792 testview<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1796 title<T>("Matrix multiply"); in matrix_all_test()
1797 testmatmult<T,NBVEC_4,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1798 testmatmult<T,NBVEC_16,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1799 testmatmult<T,NBVEC_32,NBVEC_32,NBVEC_32>(); in matrix_all_test()
1805 title<T>("Matrix transpose"); in matrix_all_test()
1806 testmattranspose<T,NBVEC_2,NBVEC_2>(); in matrix_all_test()
1807 testmattranspose<T,NBVEC_3,NBVEC_3>(); in matrix_all_test()
1808 testmattranspose<T,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1809 testmattranspose<T,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1810 testmattranspose<T,NBVEC_32,NBVEC_32>(); in matrix_all_test()
1814 title<T>("Matrix transpose"); in matrix_all_test()
1819 title<T>("Matrix multiply"); in matrix_all_test()
1824 title<T>("Submatrix multiply"); in matrix_all_test()
1825 testsubmatmult<T,NBVEC_4,NBVEC_4,NBVEC_4>(); in matrix_all_test()
1826 testsubmatmult<T,NBVEC_16,NBVEC_16,NBVEC_16>(); in matrix_all_test()
1830 title<T>("Submatrix multiply"); in matrix_all_test()
1834 //testsubmatmult<T,NBVEC_32>(); in matrix_all_test()