1 #include "TMV_Test.h"
2 #include "TMV_Test_1.h"
3 #include "TMV.h"
4 
5 #define NOLDIVEQ
6 #define NORDIVEQ
7 #include "TMV_TestMatrixDivArith.h"
8 
TestTriDiv_C2()9 template <class T> void TestTriDiv_C2()
10 {
11     const int N = 10;
12 
13     tmv::Matrix<T> m(N,N);
14     for (int i=0; i<N; ++i) for (int j=0; j<N; ++j) m(i,j) = T(0.4+0.02*i-0.05*j);
15     m.diag().addToAll(5);
16     m.diag(1).addToAll(T(0.32));
17     m.diag(-1).addToAll(T(0.91));
18 
19     tmv::Matrix<std::complex<T> > cm(m);
20     cm += std::complex<T>(10,2);
21     cm.diag(1) *= std::complex<T>(T(-0.5),T(-0.8));
22     cm.diag(-1) *= std::complex<T>(T(-0.7),T(0.1));
23 
24     tmv::UpperTriMatrix<T,tmv::NonUnitDiag> a1(m);
25     tmv::UpperTriMatrix<std::complex<T>,tmv::NonUnitDiag> ca1(cm);
26 
27     tmv::UpperTriMatrixView<T> a1v = a1.view();
28     tmv::UpperTriMatrixView<std::complex<T> > ca1v = ca1.view();
29     tmv::LowerTriMatrixView<T> a1t = a1.transpose();
30     tmv::LowerTriMatrixView<std::complex<T> > ca1t = ca1.transpose();
31 
32     tmv::DiagMatrix<T> d(m);
33     tmv::DiagMatrix<std::complex<T> > cd(cm);
34     tmv::DiagMatrixView<T> dv = d.view();
35     tmv::DiagMatrixView<std::complex<T> > cdv = cd.view();
36 
37     TestMatrixDivArith1(tmv::LU,a1v,dv,ca1v,cdv,"D/U");
38     TestMatrixDivArith1(tmv::LU,a1t,dv,ca1t,cdv,"D/L");
39 
40 #if (XTEST & 2)
41     tmv::UpperTriMatrix<T,tmv::UnitDiag> a2(m);
42     tmv::UpperTriMatrix<std::complex<T>,tmv::UnitDiag> ca2(cm);
43 
44     tmv::UpperTriMatrixView<T> a2v = a2.view();
45     tmv::UpperTriMatrixView<std::complex<T> > ca2v = ca2.view();
46     tmv::LowerTriMatrixView<T> a2t = a2.transpose();
47     tmv::LowerTriMatrixView<std::complex<T> > ca2t = ca2.transpose();
48 
49     TestMatrixDivArith1(tmv::LU,a2v,dv,ca2v,cdv,"D/U");
50     TestMatrixDivArith1(tmv::LU,a2t,dv,ca2t,cdv,"D/L");
51 #endif
52 }
53 
54 #ifdef TEST_DOUBLE
55 template void TestTriDiv_C2<double>();
56 #endif
57 #ifdef TEST_FLOAT
58 template void TestTriDiv_C2<float>();
59 #endif
60 #ifdef TEST_LONGDOUBLE
61 template void TestTriDiv_C2<long double>();
62 #endif
63