44 #include "Teuchos_UnitTestHarness.hpp"
45 #include "Teuchos_TestingHelpers.hpp"
46 #include "Teuchos_UnitTestRepository.hpp"
47 #include "Teuchos_GlobalMPISession.hpp"
58 typedef Teuchos::SerialDenseMatrix<ordinal_type,scalar_type>
SDM;
70 SDM B(m,m), C(n,n), S(m,n), T(m,n);
78 T.multiply(Teuchos::NO_TRANS, Teuchos::NO_TRANS, 1.0, B, S, 0.0);
79 A.multiply(Teuchos::NO_TRANS, Teuchos::NO_TRANS, 1.0, T, C, 0.0);
84 Teuchos::FancyOStream& out) {
90 Teuchos::Array<scalar_type> w(m, 1.0);
92 qr_func(k, A, w, Q, R);
94 TEUCHOS_TEST_EQUALITY(Q.numRows(), m, out, success);
95 TEUCHOS_TEST_EQUALITY(Q.numCols(), k, out, success);
96 TEUCHOS_TEST_EQUALITY(R.numRows(), k, out, success);
97 TEUCHOS_TEST_EQUALITY(R.numCols(), k, out, success);
101 QR.multiply(Teuchos::NO_TRANS, Teuchos::NO_TRANS, 1.0, Q, R, 0.0);
102 SDM AA(Teuchos::View, A, m, k);
106 SDM eye(k,k), QTQ(k,k);
109 QTQ.multiply(Teuchos::TRANS, Teuchos::NO_TRANS, 1.0, Q, Q, 0.0);
117 Teuchos::FancyOStream& out) {
124 Teuchos::Array<ordinal_type> piv;
125 qr_func(A, Q, R, piv);
127 TEUCHOS_TEST_EQUALITY(Q.numRows(), m, out, success);
128 TEUCHOS_TEST_EQUALITY(Q.numCols(), k, out, success);
129 TEUCHOS_TEST_EQUALITY(R.numRows(), k, out, success);
130 TEUCHOS_TEST_EQUALITY(R.numCols(), n, out, success);
131 TEUCHOS_TEST_EQUALITY(piv.size(), n, out, success);
134 SDM AP(m,n), QR(m,n);
137 AP(i,
j) = A(i,piv[
j]);
138 QR.multiply(Teuchos::NO_TRANS, Teuchos::NO_TRANS, 1.0, Q, R, 0.0);
142 SDM eye(k,k), QTQ(k,k);
145 QTQ.multiply(Teuchos::TRANS, Teuchos::NO_TRANS, 1.0, Q, Q, 0.0);
154 Teuchos::FancyOStream& out) {
160 Teuchos::Array<ordinal_type> piv(n);
163 Teuchos::Array<scalar_type> w(m, 1.0);
166 TEUCHOS_TEST_EQUALITY(rank, k, out, success);
167 TEUCHOS_TEST_EQUALITY(Q.numRows(), m, out, success);
168 TEUCHOS_TEST_EQUALITY(Q.numCols(), k, out, success);
169 TEUCHOS_TEST_EQUALITY(R.numRows(), k, out, success);
170 TEUCHOS_TEST_EQUALITY(R.numCols(), k, out, success);
171 TEUCHOS_TEST_EQUALITY(piv.size(), n, out, success);
174 SDM AP(m,k), QR(m,k);
177 AP(i,
j) = A(i,piv[
j]);
178 QR.multiply(Teuchos::NO_TRANS, Teuchos::NO_TRANS, 1.0, Q, R, 0.0);
182 SDM eye(k,k), Qt(m,k), QTQ(k,k);
186 Qt(i,
j) = w[i]*Q(i,
j);
188 QTQ.multiply(Teuchos::TRANS, Teuchos::NO_TRANS, 1.0, Qt, Q, 0.0);
305 Teuchos::GlobalMPISession mpiSession(&argc, &
argv);
306 return Teuchos::UnitTestRepository::runUnitTestsFromMain(argc,
argv);