16 #define STYPE std::complex<double>
18 template<
typename TYPE>
28 int main(
int argc,
char* argv[])
33 if (argc>1)
if (argv[1][0]==
'-' && argv[1][1]==
'v') verbose =
true;
38 int numberFailedTests = 0;
40 std::string testName =
"";
44 if (verbose) std::cout<<std::endl<<
"********** CHECKING TEUCHOS SERIAL DENSE MATRIX **********"<<std::endl<<std::endl;
48 if (verbose) std::cout <<
"default constructor -- construct empty matrix ";
50 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
53 if (verbose) std::cout <<
"successful."<<std::endl;
59 if (verbose) std::cout <<
"constructor 1 -- empty matrix with given dimensions ";
60 if ( Con1Test.
numRows()!=3 || Con1Test.
numCols()!=4 || Con1Test( 1, 2 )!=0.0 ) {
61 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
64 if (verbose) std::cout <<
"successful."<<std::endl;
70 for(i = 0; i < 9; i++)
75 Con2Test1ExpRes.
shape(2, 3);
76 Con2Test1ExpRes(0, 0) = 0; Con2Test1ExpRes(0, 1) = 2; Con2Test1ExpRes(0, 2) = 4;
77 Con2Test1ExpRes(1, 0) = 1; Con2Test1ExpRes(1, 1) = 3; Con2Test1ExpRes(1, 2) = 5;
80 numberFailedTests +=
PrintTestResults(
"constructor 2 -- construct matrix from array subrange", Con2Test1, Con2Test1ExpRes, verbose);
85 DMatrix Con3TestCopy( Con2Test1ExpRes );
86 if(verbose) std::cout <<
"constructor 3 -- copy constructor ";
87 if ( Con3TestCopy != Con2Test1ExpRes ) {
88 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
91 if (verbose) std::cout <<
"successful."<<std::endl;
95 if(verbose) std::cout <<
"constructor 3 -- copy constructor (transposed) ";
96 if ( Con3TestCopyTrans(2, 0) != Con2Test1ExpRes(0, 2) ) {
97 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
100 if (verbose) std::cout <<
"successful."<<std::endl;
107 Con4TestSubmatrix.
shape(2, 2);
108 Con4TestSubmatrix(0, 0) = 4; Con4TestSubmatrix(0, 1) = 7;
109 Con4TestSubmatrix(1, 0) = 5; Con4TestSubmatrix(1, 1) = 8;
111 numberFailedTests +=
PrintTestResults(
"constructor 4 -- submatrix copy", Con4TestCopy1, Con4TestSubmatrix, verbose);
113 numberFailedTests +=
PrintTestResults(
"constructor 4 -- full matrix copy", Con4TestCopy2, Con4TestOrig, verbose);
115 numberFailedTests +=
PrintTestResults(
"constructor 4 -- full matrix view", Con4TestView1, Con4TestSubmatrix, verbose);
117 numberFailedTests +=
PrintTestResults(
"constructor 4 -- submatrix view", Con4TestView2, Con4TestOrig, verbose);
123 AAA(0, 0) = 1; AAA(0, 1) = 2; AAA(0, 2) = 3;
124 AAA(1, 0) = 4; AAA(1, 1) = 5; AAA(1, 2) = 6;
125 AAA(2, 0) = 7; AAA(2, 1) = 8; AAA(2, 2) = 9;
130 numberFailedTests +=
PrintTestResults(
"normFrobenius of a 3x3", AAA.normFrobenius(), 3.0, verbose);
137 DMatrix DimTest0x0A, DimTest0x0B, DimTest2x0, DimTest1x2, DimTest2x1, DimTest2x2A, DimTest2x2B,
138 DimTest3x3, DimTest0x2, DimTest0x0Result, DimTest1x1Result, DimTest2x0Result, DimTest1x2Result, DimTest2x1Result, DimTest2x2Result,
139 DimTest2x3Result, DimTest0x2Result, DimTest3x3Result;
141 DimTest0x2.
shape(0, 2);
142 DimTest2x0.shape(2, 0);
143 DimTest1x2.shape(1, 2);
144 DimTest2x1.shape(2, 1);
145 DimTest2x2A.shape(2, 2);
146 DimTest2x2B.shape(2, 2);
147 DimTest3x3.shape(3, 3);
148 DimTest0x2Result.shape(0, 2);
149 DimTest1x1Result.shape(1, 1);
150 DimTest2x0Result.shape(2, 0);
151 DimTest1x2Result.shape(1, 2);
152 DimTest2x1Result.shape(2, 1);
153 DimTest2x2Result.shape(2, 2);
154 DimTest2x3Result.shape(2, 3);
155 DimTest3x3Result.shape(3, 3);
158 testName =
"multiply() -- dimensions -- compatible square matrices";
159 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
161 testName =
"multiply() -- dimensions -- incompatible square matrices";
162 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
164 testName =
"multiply() -- dimensions -- compatible nonsquare matrices";
165 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
167 testName =
"multiply() -- dimensions -- compatible nonsquare matrices";
168 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
170 testName =
"multiply() -- dimensions -- incompatible nonsquare matrices";
171 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
173 testName =
"multiply() -- dimensions -- incompatible nonsquare matrices";
174 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
176 testName =
"multiply() -- dimensions -- first operand bad numCols";
177 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
179 testName =
"multiply() -- dimensions -- second operand bad numRows";
180 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
182 testName =
"multiply() -- dimensions -- second operand bad numCols";
183 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
187 DMatrix MultTest2x2A, MultTest2x2B, MultTest3x3A, MultTest3x3B, MultTest2x2ATimes2x2B,
188 MultTest3x3ATimes3x3B, MultTest2x2BTimes2x2A, MultTest3x3BTimes3x3A, MultTest2x2ATimes2x2BExpResult, MultTest2x2BTimes2x2AExpResult,
189 MultTest3x3ATimes3x3BExpResult, MultTest3x3BTimes3x3AExpResult, MultTest2x3A, MultTest2x3B, MultTest3x2A, MultTest3x2B,
190 MultTest2x3ATimes3x2B, MultTest3x2ATimes2x3B, MultTest2x3BTimes3x2A, MultTest3x2BTimes2x3A, MultTest2x3ATimes3x2BExpResult,
191 MultTest3x2ATimes2x3BExpResult, MultTest2x3BTimes3x2AExpResult, MultTest3x2BTimes2x3AExpResult;
193 MultTest2x2A.
shape(2, 2);
194 MultTest2x2B.
shape(2, 2);
195 MultTest3x3A.
shape(3, 3);
196 MultTest3x3B.
shape(3, 3);
197 MultTest2x2ATimes2x2B.
shape(2, 2);
198 MultTest2x2BTimes2x2A.
shape(2, 2);
199 MultTest3x3ATimes3x3B.
shape(3, 3);
200 MultTest3x3BTimes3x3A.
shape(3, 3);
201 MultTest2x2ATimes2x2BExpResult.
shape(2, 2);
202 MultTest2x2BTimes2x2AExpResult.
shape(2, 2);
203 MultTest3x3ATimes3x3BExpResult.
shape(3, 3);
204 MultTest3x3BTimes3x3AExpResult.
shape(3, 3);
205 MultTest2x3A.
shape(2, 3);
206 MultTest2x3B.
shape(2, 3);
207 MultTest3x2A.
shape(3, 2);
208 MultTest3x2B.
shape(3, 2);
209 MultTest2x3ATimes3x2B.
shape(2, 2);
210 MultTest3x2ATimes2x3B.
shape(3, 3);
211 MultTest2x3BTimes3x2A.
shape(2, 2);
212 MultTest3x2BTimes2x3A.
shape(3, 3);
213 MultTest2x3ATimes3x2BExpResult.
shape(2, 2);
214 MultTest3x2ATimes2x3BExpResult.
shape(3, 3);
215 MultTest2x3BTimes3x2AExpResult.
shape(2, 2);
216 MultTest3x2BTimes2x3AExpResult.
shape(3, 3);
218 for(i = 0; i < 2; i++)
220 for(j = 0; j < 2; j++)
222 MultTest2x2A(i, j) = i + j;
223 MultTest2x2B(i, j) = (i * j) + 1;
226 for(i = 0; i < 3; i++)
228 for(j = 0; j < 3; j++)
230 MultTest3x3A(i, j) = i + j;
231 MultTest3x3B(i, j) = (i * j) + 1;
235 MultTest2x2ATimes2x2BExpResult(0, 0) = 1; MultTest2x2ATimes2x2BExpResult(0, 1) = 2;
236 MultTest2x2ATimes2x2BExpResult(1, 0) = 3; MultTest2x2ATimes2x2BExpResult(1, 1) = 5;
237 MultTest2x2BTimes2x2AExpResult(0, 0) = 1; MultTest2x2BTimes2x2AExpResult(0, 1) = 3;
238 MultTest2x2BTimes2x2AExpResult(1, 0) = 2; MultTest2x2BTimes2x2AExpResult(1, 1) = 5;
239 MultTest3x3ATimes3x3BExpResult(0, 0) = 3; MultTest3x3ATimes3x3BExpResult(0, 1) = 8; MultTest3x3ATimes3x3BExpResult(0, 2) = 13;
240 MultTest3x3ATimes3x3BExpResult(1, 0) = 6; MultTest3x3ATimes3x3BExpResult(1, 1) = 14; MultTest3x3ATimes3x3BExpResult(1, 2) = 22;
241 MultTest3x3ATimes3x3BExpResult(2, 0) = 9; MultTest3x3ATimes3x3BExpResult(2, 1) = 20; MultTest3x3ATimes3x3BExpResult(2, 2) = 31;
242 MultTest3x3BTimes3x3AExpResult(0, 0) = 3; MultTest3x3BTimes3x3AExpResult(0, 1) = 6; MultTest3x3BTimes3x3AExpResult(0, 2) = 9;
243 MultTest3x3BTimes3x3AExpResult(1, 0) = 8; MultTest3x3BTimes3x3AExpResult(1, 1) = 14; MultTest3x3BTimes3x3AExpResult(1, 2) = 20;
244 MultTest3x3BTimes3x3AExpResult(2, 0) = 13; MultTest3x3BTimes3x3AExpResult(2, 1) = 22; MultTest3x3BTimes3x3AExpResult(2, 2) = 31;
245 MultTest2x3A(0, 0) = 1; MultTest2x3A(0, 1) = 2; MultTest2x3A(0, 2) = 3;
246 MultTest2x3A(1, 0) = 4; MultTest2x3A(1, 1) = 5; MultTest2x3A(1, 2) = 6;
247 MultTest3x2A(0, 0) = 1; MultTest3x2A(0, 1) = 2;
248 MultTest3x2A(1, 0) = 3; MultTest3x2A(1, 1) = 4;
249 MultTest3x2A(2, 0) = 5; MultTest3x2A(2, 1) = 6;
250 MultTest2x3B(0, 0) = 0; MultTest2x3B(0, 1) = 2; MultTest2x3B(0, 2) = 4;
251 MultTest2x3B(1, 0) = 6; MultTest2x3B(1, 1) = 8; MultTest2x3B(1, 2) = 10;
252 MultTest3x2B(0, 0) = 0; MultTest3x2B(0, 1) = 2;
253 MultTest3x2B(1, 0) = 4; MultTest3x2B(1, 1) = 6;
254 MultTest3x2B(2, 0) = 8; MultTest3x2B(2, 1) = 10;
255 MultTest2x3ATimes3x2BExpResult(0, 0) = 32; MultTest2x3ATimes3x2BExpResult(0, 1) = 44;
256 MultTest2x3ATimes3x2BExpResult(1, 0) = 68; MultTest2x3ATimes3x2BExpResult(1, 1) = 98;
257 MultTest3x2ATimes2x3BExpResult(0, 0) = 12; MultTest3x2ATimes2x3BExpResult(0, 1) = 18; MultTest3x2ATimes2x3BExpResult(0, 2) = 24;
258 MultTest3x2ATimes2x3BExpResult(1, 0) = 24; MultTest3x2ATimes2x3BExpResult(1, 1) = 38; MultTest3x2ATimes2x3BExpResult(1, 2) = 52;
259 MultTest3x2ATimes2x3BExpResult(2, 0) = 36; MultTest3x2ATimes2x3BExpResult(2, 1) = 58; MultTest3x2ATimes2x3BExpResult(2, 2) = 80;
260 MultTest2x3BTimes3x2AExpResult(0, 0) = 26; MultTest2x3BTimes3x2AExpResult(0, 1) = 32;
261 MultTest2x3BTimes3x2AExpResult(1, 0) = 80; MultTest2x3BTimes3x2AExpResult(1, 1) = 104;
262 MultTest3x2BTimes2x3AExpResult(0, 0) = 8; MultTest3x2BTimes2x3AExpResult(0, 1) = 10; MultTest3x2BTimes2x3AExpResult(0, 2) = 12;
263 MultTest3x2BTimes2x3AExpResult(1, 0) = 28; MultTest3x2BTimes2x3AExpResult(1, 1) = 38; MultTest3x2BTimes2x3AExpResult(1, 2) = 48;
264 MultTest3x2BTimes2x3AExpResult(2, 0) = 48; MultTest3x2BTimes2x3AExpResult(2, 1) = 66; MultTest3x2BTimes2x3AExpResult(2, 2) = 84;
267 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x2 * 2x2", MultTest2x2ATimes2x2B, MultTest2x2ATimes2x2BExpResult, verbose);
269 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x2 * 2x2", MultTest2x2BTimes2x2A, MultTest2x2BTimes2x2AExpResult, verbose);
271 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x3 * 3x3", MultTest3x3ATimes3x3B, MultTest3x3ATimes3x3BExpResult, verbose);
273 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x3 * 3x3", MultTest3x3BTimes3x3A, MultTest3x3BTimes3x3AExpResult, verbose);
275 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x3 * 3x2", MultTest2x3ATimes3x2B, MultTest2x3ATimes3x2BExpResult, verbose);
277 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x3 * 3x2", MultTest2x3BTimes3x2A, MultTest2x3BTimes3x2AExpResult, verbose);
279 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x2 * 2x3", MultTest3x2ATimes2x3B, MultTest3x2ATimes2x3BExpResult, verbose);
281 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x2 * 2x3", MultTest3x2BTimes2x3A, MultTest3x2BTimes2x3AExpResult, verbose);
283 DMatrix MultTestHugeA, MultTestHugeB, MultTestHugeATimesHugeBExpResult,
284 MultTestHugeATimesHugeB;
286 const int hugeSize = 100;
287 MultTestHugeA.
shape(hugeSize, hugeSize);
288 MultTestHugeB.
shape(hugeSize, hugeSize);
289 MultTestHugeATimesHugeBExpResult.
shape(hugeSize, hugeSize);
290 MultTestHugeATimesHugeB.
shape(hugeSize, hugeSize);
292 for(i = 0; i < hugeSize; i++)
294 for(j = 0; j < hugeSize; j++)
296 MultTestHugeA(i, j) = j;
297 MultTestHugeB(i, j) = i;
298 MultTestHugeATimesHugeBExpResult(i, j) = 328350;
303 MultTestHugeA, MultTestHugeB, 1.0);
305 "multiply() -- mult. results -- huge * huge",
306 MultTestHugeATimesHugeB, MultTestHugeATimesHugeBExpResult, verbose);
314 if (verbose) std::cout <<
"scale() -- scale matrix by some number ";
315 returnCode = ScalTest.
scale( 8.0 );
316 if (ScalTest(2, 3) == 8.0) {
317 if (verbose) std::cout<<
"successful." <<std::endl;
319 if (verbose) std::cout<<
"unsuccessful." <<std::endl;
324 if (verbose) std::cout <<
"scale() -- point-wise scale matrix ";
325 ScalTest.
scale( ScalTest2 );
326 if (ScalTest.
normOne() == 0.0) {
327 if (verbose) std::cout<<
"successful." <<std::endl;
329 if (verbose) std::cout<<
"unsuccessful." <<std::endl;
337 testName =
"random() -- enter random entries into matrix";
338 returnCode = CCC.
random();
339 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
341 testName =
"putScalar() -- set every entry of this matrix to 1.0";
343 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
347 if (verbose) std::cout <<
"assign() -- copy the values of an input matrix ";
349 if (verbose) std::cout<<
"successful" <<std::endl;
351 if (verbose) std::cout<<
"unsuccessful" <<std::endl;
359 if (verbose) std::cout <<
"swap() -- swap the values and attributes of two matrices -- ";
361 bool op_result = ( (CCCswap == copyCCC) && (CCC == copyCCCswap) );
363 std::cout << (op_result ?
"successful" :
"failed" )<<std::endl;
373 if (verbose) std::cout <<
"operator= -- small(empty) = large(view) ";
375 if (verbose) std::cout<<
"successful" <<std::endl;
377 if (verbose) std::cout<<
"unsuccessful" <<std::endl;
381 if (verbose) std::cout <<
"operator= -- small(view) = large(copy) ";
383 if (verbose) std::cout<<
"successful"<<std::endl;
385 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
391 if (verbose) std::cout <<
"operator= -- large(copy) = small(copy) ";
393 if (verbose) std::cout<<
"successful"<<std::endl;
395 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
399 if (verbose) std::cout <<
"operator= -- large(copy) = small(view) ";
401 if(verbose) std::cout<<
"successful" <<std::endl;
403 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
408 CCCtest1 += CCCtest3;
409 if (verbose) std::cout <<
"operator+= -- add two matrices of the same size, but different leading dimension ";
410 if (CCCtest1(1,1)==2.0) {
411 if(verbose) std::cout<<
"successful" <<std::endl;
413 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
416 if (verbose) std::cout <<
"operator+= -- add two matrices of different size (nothing should change) ";
418 if (CCCtest1(1,1)==2.0) {
419 if(verbose) std::cout<<
"successful" <<std::endl;
421 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
428 MultTestHugeATimesHugeB.
reshape(10, 10);
429 op_result = (MultTestHugeATimesHugeB == MultTestHugeATimesHugeBExpResult);
431 std::cout <<
"operator== -- results -- small == huge "<< (op_result ==
false ?
"successful" :
"failed" )<<std::endl;
433 op_result = (MultTestHugeATimesHugeB != MultTestHugeATimesHugeBExpResult);
435 std::cout <<
"operator!= -- results -- small != huge "<< (op_result ==
true ?
"successful" :
"failed" )<<std::endl;
436 std::cout << std::endl<< MultTestHugeATimesHugeB << std::endl;
443 if (verbose) std::cout<<std::endl<<
"********** CHECKING TEUCHOS SERIAL DENSE VECTOR **********"<<std::endl<<std::endl;
446 if (verbose) std::cout <<
"default constructor -- construct empty std::vector ";
448 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
451 if (verbose) std::cout <<
"successful."<<std::endl;
457 if (verbose) std::cout <<
"constructor 1 -- empty std::vector with given dimensions ";
458 if ( Con1TestV.
length()!=3 || Con1TestV.
numCols()!=1 || Con1TestV( 1 )!=0.0 ) {
459 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
462 if (verbose) std::cout <<
"successful."<<std::endl;
468 if (verbose) std::cout <<
"constructor 2 -- construct std::vector from array subrange ";
469 if ( Con2Test1V.
numRows()!=4 || Con2Test1V.
numCols()!=1 || Con2Test1V[ 2 ]!=2.0 ) {
470 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
473 if (verbose) std::cout <<
"successful."<<std::endl;
478 DVector Con3TestCopyV( Con2Test1V );
479 if(verbose) std::cout <<
"constructor 3 -- copy constructor ";
480 if ( Con3TestCopyV != Con2Test1V ) {
481 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
484 if (verbose) std::cout <<
"successful."<<std::endl;
491 if (verbose) std::cout <<
"non-method helper function -- construct vector view of second column of matrix ";
492 if ( ColViewTestV.
normInf() != 1.0 || ColViewTestV.
normOne() != 3.0 ) {
493 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
496 if (verbose) std::cout <<
"successful."<<std::endl;
504 numberFailedTests +=
PrintTestResults(
"normFrobenius of a 3x1 std::vector", Con2Test1V.normFrobenius(), 2.0, verbose);
509 SizeTestV1.
size( 5 );
510 if(verbose) std::cout <<
"size() -- test ";
511 if (SizeTestV1( 4 )!= 0.0) {
512 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
515 if (verbose) std::cout <<
"successful."<<std::endl;
518 SizeTestV1.resize( 10 );
519 if(verbose) std::cout <<
"resize() -- test small --> large ";
520 if (SizeTestV1[ 4 ]!= 2.0 || SizeTestV1[ 8 ]!=0.0 ) {
521 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
524 if (verbose) std::cout <<
"successful."<<std::endl;
526 SizeTestV1.resize( 3 );
527 if(verbose) std::cout <<
"resize() -- test large --> small ";
528 if (SizeTestV1( 2 )!= 2.0) {
529 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
532 if (verbose) std::cout <<
"successful."<<std::endl;
538 OpEqTestV3 = OpEqTestV2;
539 if (verbose) std::cout <<
"operator= -- small(empty) = large(view) ";
540 if (OpEqTestV3.length()==3 && OpEqTestV3.values()==OpEqTestV2.values()) {
541 if (verbose) std::cout<<
"successful"<<std::endl;
543 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
546 OpEqTestV3 = OpEqTestV1;
547 if (verbose) std::cout <<
"operator= -- small(view) = large(copy) ";
548 if (OpEqTestV3.length()==10 && OpEqTestV3.values()!=OpEqTestV1.
values()) {
549 if (verbose) std::cout<<
"successful"<<std::endl;
551 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
555 OpEqTestV3 = OpEqTestV1;
556 if (verbose) std::cout <<
"operator= -- small(copy) = large(copy) ";
557 if (OpEqTestV3.length()==10 && OpEqTestV3.values()!=OpEqTestV1.
values() && OpEqTestV3[ 9 ]==3.0) {
558 if (verbose) std::cout<<
"successful"<<std::endl;
560 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
564 DVector OpSumTestV1( OpEqTestV2 );
565 OpSumTestV1 += OpEqTestV2;
566 if (verbose) std::cout <<
"operator+= -- add two vectors of the same size, but different leading dimension ";
567 if (OpSumTestV1( 1 )==6.0) {
568 if (verbose) std::cout<<
"successful" <<std::endl;
570 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
573 if (verbose) std::cout <<
"operator+= -- add two vectors of different size (nothing should change) ";
574 OpSumTestV1 += OpEqTestV1;
575 if (OpSumTestV1( 1 )==6.0) {
576 if (verbose) std::cout<<
"successful" <<std::endl;
578 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
584 if(verbose) std::cout <<
"operator== -- test large == small ";
585 if (OpCompTestV1 == SizeTestV1) {
586 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
589 if (verbose) std::cout <<
"successful."<<std::endl;
591 if(verbose) std::cout <<
"operator!= -- test large != small ";
592 if (OpCompTestV1 != SizeTestV1) {
593 if (verbose) std::cout <<
"successful."<<std::endl;
595 if (verbose) std::cout <<
"successful."<<std::endl;
599 DVector ColSetTestV( AAA.numRows() );
601 bool ret = Teuchos::setCol<OTYPE,STYPE>( ColSetTestV, col, AAA );
602 if (verbose) std::cout <<
"non-method helper function -- set second column of matrix with vector ";
603 if ( ColViewTestV.
normInf() != 2.0 || ColViewTestV.
normOne() != 6.0 || ret == false ) {
604 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
607 if (verbose) std::cout <<
"successful."<<std::endl;
612 if(numberFailedTests > 0)
615 std::cout <<
"Number of failed tests: " << numberFailedTests << std::endl;
616 std::cout <<
"End Result: TEST FAILED" << std::endl;
620 if(numberFailedTests == 0)
621 std::cout <<
"End Result: TEST PASSED" << std::endl;
626 template<
typename TYPE>
627 int PrintTestResults(std::string testName, TYPE calculatedResult, TYPE expectedResult,
bool verbose)
630 if(calculatedResult == expectedResult)
632 if(verbose) std::cout << testName <<
" successful." << std::endl;
637 if(verbose) std::cout << testName <<
" unsuccessful." << std::endl;
643 int ReturnCodeCheck(std::string testName,
int returnCode,
int expectedResult,
bool verbose)
646 if(expectedResult == 0)
650 if(verbose) std::cout << testName <<
" test successful." << std::endl;
655 if(verbose) std::cout << testName <<
" test unsuccessful. Return code was " << returnCode <<
"." << std::endl;
663 if(verbose) std::cout << testName <<
" test successful -- failed as expected." << std::endl;
668 if(verbose) std::cout << testName <<
" test unsuccessful -- did not fail as expected. Return code was " << returnCode <<
"." << std::endl;
ScalarTraits< ScalarType >::magnitudeType normOne() const
Returns the 1-norm of the matrix.
ScalarType * values() const
Data array access method.
static T one()
Returns representation of one for this ordinal type.
int PrintTestResults(std::string, TYPE, TYPE, bool)
Non-member helper functions on the templated serial, dense matrix/vector classes. ...
Templated serial dense matrix class.
Teuchos::SerialDenseVector< int, std::complex< Real > > DVector
void swap(SerialDenseMatrix< OrdinalType, ScalarType > &B)
Swap values between this matrix and incoming matrix.
int multiply(ETransp transa, ETransp transb, ScalarType alpha, const SerialDenseMatrix< OrdinalType, ScalarType > &A, const SerialDenseMatrix< OrdinalType, ScalarType > &B, ScalarType beta)
Multiply A * B and add them to this; this = beta * this + alpha*A*B.
int scale(const ScalarType alpha)
Scale this matrix by alpha; *this = alpha**this.
This class creates and provides basic support for dense vectors of templated type as a specialization...
ScalarTraits< ScalarType >::magnitudeType normFrobenius() const
Returns the Frobenius-norm of the matrix.
This structure defines some basic traits for a scalar field type.
bool empty() const
Returns whether this matrix is empty.
int putScalar(const ScalarType value=Teuchos::ScalarTraits< ScalarType >::zero())
Set all values in the matrix to a constant value.
OrdinalType length() const
Returns the length of this vector.
Teuchos::SerialDenseMatrix< int, std::complex< Real > > DMatrix
std::string Teuchos_Version()
int ReturnCodeCheck(std::string, int, int, bool)
int main(int argc, char *argv[])
OrdinalType numCols() const
Returns the column dimension of this matrix.
ScalarTraits< ScalarType >::magnitudeType normInf() const
Returns the Infinity-norm of the matrix.
int size(OrdinalType length_in)
Size method for changing the size of a SerialDenseVector, initializing entries to zero...
int random()
Set all values in the matrix to be random numbers.
int reshape(OrdinalType numRows, OrdinalType numCols)
Reshaping method for changing the size of a SerialDenseMatrix, keeping the entries.
Templated serial dense vector class.
int shape(OrdinalType numRows, OrdinalType numCols)
Shape method for changing the size of a SerialDenseMatrix, initializing entries to zero...
SerialDenseMatrix< OrdinalType, ScalarType > & assign(const SerialDenseMatrix< OrdinalType, ScalarType > &Source)
Copies values from one matrix to another.
static T one()
Returns representation of one for this scalar type.
OrdinalType stride() const
Returns the stride between the columns of this matrix in memory.
OrdinalType numRows() const
Returns the row dimension of this matrix.
This class creates and provides basic support for dense rectangular matrix of templated type...