48 #define STYPE std::complex<double> 50 template<
typename TYPE>
60 int main(
int argc,
char* argv[])
65 if (argc>1)
if (argv[1][0]==
'-' && argv[1][1]==
'v') verbose =
true;
70 int numberFailedTests = 0;
72 std::string testName =
"";
76 if (verbose) std::cout<<std::endl<<
"********** CHECKING TEUCHOS SERIAL DENSE MATRIX **********"<<std::endl<<std::endl;
80 if (verbose) std::cout <<
"default constructor -- construct empty matrix ";
82 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
85 if (verbose) std::cout <<
"successful."<<std::endl;
91 if (verbose) std::cout <<
"constructor 1 -- empty matrix with given dimensions ";
92 if ( Con1Test.
numRows()!=3 || Con1Test.
numCols()!=4 || Con1Test( 1, 2 )!=0.0 ) {
93 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
96 if (verbose) std::cout <<
"successful."<<std::endl;
102 for(i = 0; i < 9; i++)
107 Con2Test1ExpRes.
shape(2, 3);
108 Con2Test1ExpRes(0, 0) = 0; Con2Test1ExpRes(0, 1) = 2; Con2Test1ExpRes(0, 2) = 4;
109 Con2Test1ExpRes(1, 0) = 1; Con2Test1ExpRes(1, 1) = 3; Con2Test1ExpRes(1, 2) = 5;
112 numberFailedTests +=
PrintTestResults(
"constructor 2 -- construct matrix from array subrange", Con2Test1, Con2Test1ExpRes, verbose);
117 DMatrix Con3TestCopy( Con2Test1ExpRes );
118 if(verbose) std::cout <<
"constructor 3 -- copy constructor ";
119 if ( Con3TestCopy != Con2Test1ExpRes ) {
120 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
123 if (verbose) std::cout <<
"successful."<<std::endl;
127 if(verbose) std::cout <<
"constructor 3 -- copy constructor (transposed) ";
128 if ( Con3TestCopyTrans(2, 0) != Con2Test1ExpRes(0, 2) ) {
129 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
132 if (verbose) std::cout <<
"successful."<<std::endl;
139 Con4TestSubmatrix.
shape(2, 2);
140 Con4TestSubmatrix(0, 0) = 4; Con4TestSubmatrix(0, 1) = 7;
141 Con4TestSubmatrix(1, 0) = 5; Con4TestSubmatrix(1, 1) = 8;
143 numberFailedTests +=
PrintTestResults(
"constructor 4 -- submatrix copy", Con4TestCopy1, Con4TestSubmatrix, verbose);
145 numberFailedTests +=
PrintTestResults(
"constructor 4 -- full matrix copy", Con4TestCopy2, Con4TestOrig, verbose);
147 numberFailedTests +=
PrintTestResults(
"constructor 4 -- full matrix view", Con4TestView1, Con4TestSubmatrix, verbose);
149 numberFailedTests +=
PrintTestResults(
"constructor 4 -- submatrix view", Con4TestView2, Con4TestOrig, verbose);
155 AAA(0, 0) = 1; AAA(0, 1) = 2; AAA(0, 2) = 3;
156 AAA(1, 0) = 4; AAA(1, 1) = 5; AAA(1, 2) = 6;
157 AAA(2, 0) = 7; AAA(2, 1) = 8; AAA(2, 2) = 9;
162 numberFailedTests +=
PrintTestResults(
"normFrobenius of a 3x3", AAA.normFrobenius(), 3.0, verbose);
169 DMatrix DimTest0x0A, DimTest0x0B, DimTest2x0, DimTest1x2, DimTest2x1, DimTest2x2A, DimTest2x2B,
170 DimTest3x3, DimTest0x2, DimTest0x0Result, DimTest1x1Result, DimTest2x0Result, DimTest1x2Result, DimTest2x1Result, DimTest2x2Result,
171 DimTest2x3Result, DimTest0x2Result, DimTest3x3Result;
173 DimTest0x2.
shape(0, 2);
174 DimTest2x0.shape(2, 0);
175 DimTest1x2.shape(1, 2);
176 DimTest2x1.shape(2, 1);
177 DimTest2x2A.shape(2, 2);
178 DimTest2x2B.shape(2, 2);
179 DimTest3x3.shape(3, 3);
180 DimTest0x2Result.shape(0, 2);
181 DimTest1x1Result.shape(1, 1);
182 DimTest2x0Result.shape(2, 0);
183 DimTest1x2Result.shape(1, 2);
184 DimTest2x1Result.shape(2, 1);
185 DimTest2x2Result.shape(2, 2);
186 DimTest2x3Result.shape(2, 3);
187 DimTest3x3Result.shape(3, 3);
190 testName =
"multiply() -- dimensions -- compatible square matrices";
191 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
193 testName =
"multiply() -- dimensions -- incompatible square matrices";
194 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
196 testName =
"multiply() -- dimensions -- compatible nonsquare matrices";
197 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
199 testName =
"multiply() -- dimensions -- compatible nonsquare matrices";
200 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
202 testName =
"multiply() -- dimensions -- incompatible nonsquare matrices";
203 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
205 testName =
"multiply() -- dimensions -- incompatible nonsquare matrices";
206 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
208 testName =
"multiply() -- dimensions -- first operand bad numCols";
209 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
211 testName =
"multiply() -- dimensions -- second operand bad numRows";
212 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
214 testName =
"multiply() -- dimensions -- second operand bad numCols";
215 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 1, verbose);
219 DMatrix MultTest2x2A, MultTest2x2B, MultTest3x3A, MultTest3x3B, MultTest2x2ATimes2x2B,
220 MultTest3x3ATimes3x3B, MultTest2x2BTimes2x2A, MultTest3x3BTimes3x3A, MultTest2x2ATimes2x2BExpResult, MultTest2x2BTimes2x2AExpResult,
221 MultTest3x3ATimes3x3BExpResult, MultTest3x3BTimes3x3AExpResult, MultTest2x3A, MultTest2x3B, MultTest3x2A, MultTest3x2B,
222 MultTest2x3ATimes3x2B, MultTest3x2ATimes2x3B, MultTest2x3BTimes3x2A, MultTest3x2BTimes2x3A, MultTest2x3ATimes3x2BExpResult,
223 MultTest3x2ATimes2x3BExpResult, MultTest2x3BTimes3x2AExpResult, MultTest3x2BTimes2x3AExpResult;
225 MultTest2x2A.
shape(2, 2);
226 MultTest2x2B.
shape(2, 2);
227 MultTest3x3A.
shape(3, 3);
228 MultTest3x3B.
shape(3, 3);
229 MultTest2x2ATimes2x2B.
shape(2, 2);
230 MultTest2x2BTimes2x2A.
shape(2, 2);
231 MultTest3x3ATimes3x3B.
shape(3, 3);
232 MultTest3x3BTimes3x3A.
shape(3, 3);
233 MultTest2x2ATimes2x2BExpResult.
shape(2, 2);
234 MultTest2x2BTimes2x2AExpResult.
shape(2, 2);
235 MultTest3x3ATimes3x3BExpResult.
shape(3, 3);
236 MultTest3x3BTimes3x3AExpResult.
shape(3, 3);
237 MultTest2x3A.
shape(2, 3);
238 MultTest2x3B.
shape(2, 3);
239 MultTest3x2A.
shape(3, 2);
240 MultTest3x2B.
shape(3, 2);
241 MultTest2x3ATimes3x2B.
shape(2, 2);
242 MultTest3x2ATimes2x3B.
shape(3, 3);
243 MultTest2x3BTimes3x2A.
shape(2, 2);
244 MultTest3x2BTimes2x3A.
shape(3, 3);
245 MultTest2x3ATimes3x2BExpResult.
shape(2, 2);
246 MultTest3x2ATimes2x3BExpResult.
shape(3, 3);
247 MultTest2x3BTimes3x2AExpResult.
shape(2, 2);
248 MultTest3x2BTimes2x3AExpResult.
shape(3, 3);
250 for(i = 0; i < 2; i++)
252 for(j = 0; j < 2; j++)
254 MultTest2x2A(i, j) = i + j;
255 MultTest2x2B(i, j) = (i * j) + 1;
258 for(i = 0; i < 3; i++)
260 for(j = 0; j < 3; j++)
262 MultTest3x3A(i, j) = i + j;
263 MultTest3x3B(i, j) = (i * j) + 1;
267 MultTest2x2ATimes2x2BExpResult(0, 0) = 1; MultTest2x2ATimes2x2BExpResult(0, 1) = 2;
268 MultTest2x2ATimes2x2BExpResult(1, 0) = 3; MultTest2x2ATimes2x2BExpResult(1, 1) = 5;
269 MultTest2x2BTimes2x2AExpResult(0, 0) = 1; MultTest2x2BTimes2x2AExpResult(0, 1) = 3;
270 MultTest2x2BTimes2x2AExpResult(1, 0) = 2; MultTest2x2BTimes2x2AExpResult(1, 1) = 5;
271 MultTest3x3ATimes3x3BExpResult(0, 0) = 3; MultTest3x3ATimes3x3BExpResult(0, 1) = 8; MultTest3x3ATimes3x3BExpResult(0, 2) = 13;
272 MultTest3x3ATimes3x3BExpResult(1, 0) = 6; MultTest3x3ATimes3x3BExpResult(1, 1) = 14; MultTest3x3ATimes3x3BExpResult(1, 2) = 22;
273 MultTest3x3ATimes3x3BExpResult(2, 0) = 9; MultTest3x3ATimes3x3BExpResult(2, 1) = 20; MultTest3x3ATimes3x3BExpResult(2, 2) = 31;
274 MultTest3x3BTimes3x3AExpResult(0, 0) = 3; MultTest3x3BTimes3x3AExpResult(0, 1) = 6; MultTest3x3BTimes3x3AExpResult(0, 2) = 9;
275 MultTest3x3BTimes3x3AExpResult(1, 0) = 8; MultTest3x3BTimes3x3AExpResult(1, 1) = 14; MultTest3x3BTimes3x3AExpResult(1, 2) = 20;
276 MultTest3x3BTimes3x3AExpResult(2, 0) = 13; MultTest3x3BTimes3x3AExpResult(2, 1) = 22; MultTest3x3BTimes3x3AExpResult(2, 2) = 31;
277 MultTest2x3A(0, 0) = 1; MultTest2x3A(0, 1) = 2; MultTest2x3A(0, 2) = 3;
278 MultTest2x3A(1, 0) = 4; MultTest2x3A(1, 1) = 5; MultTest2x3A(1, 2) = 6;
279 MultTest3x2A(0, 0) = 1; MultTest3x2A(0, 1) = 2;
280 MultTest3x2A(1, 0) = 3; MultTest3x2A(1, 1) = 4;
281 MultTest3x2A(2, 0) = 5; MultTest3x2A(2, 1) = 6;
282 MultTest2x3B(0, 0) = 0; MultTest2x3B(0, 1) = 2; MultTest2x3B(0, 2) = 4;
283 MultTest2x3B(1, 0) = 6; MultTest2x3B(1, 1) = 8; MultTest2x3B(1, 2) = 10;
284 MultTest3x2B(0, 0) = 0; MultTest3x2B(0, 1) = 2;
285 MultTest3x2B(1, 0) = 4; MultTest3x2B(1, 1) = 6;
286 MultTest3x2B(2, 0) = 8; MultTest3x2B(2, 1) = 10;
287 MultTest2x3ATimes3x2BExpResult(0, 0) = 32; MultTest2x3ATimes3x2BExpResult(0, 1) = 44;
288 MultTest2x3ATimes3x2BExpResult(1, 0) = 68; MultTest2x3ATimes3x2BExpResult(1, 1) = 98;
289 MultTest3x2ATimes2x3BExpResult(0, 0) = 12; MultTest3x2ATimes2x3BExpResult(0, 1) = 18; MultTest3x2ATimes2x3BExpResult(0, 2) = 24;
290 MultTest3x2ATimes2x3BExpResult(1, 0) = 24; MultTest3x2ATimes2x3BExpResult(1, 1) = 38; MultTest3x2ATimes2x3BExpResult(1, 2) = 52;
291 MultTest3x2ATimes2x3BExpResult(2, 0) = 36; MultTest3x2ATimes2x3BExpResult(2, 1) = 58; MultTest3x2ATimes2x3BExpResult(2, 2) = 80;
292 MultTest2x3BTimes3x2AExpResult(0, 0) = 26; MultTest2x3BTimes3x2AExpResult(0, 1) = 32;
293 MultTest2x3BTimes3x2AExpResult(1, 0) = 80; MultTest2x3BTimes3x2AExpResult(1, 1) = 104;
294 MultTest3x2BTimes2x3AExpResult(0, 0) = 8; MultTest3x2BTimes2x3AExpResult(0, 1) = 10; MultTest3x2BTimes2x3AExpResult(0, 2) = 12;
295 MultTest3x2BTimes2x3AExpResult(1, 0) = 28; MultTest3x2BTimes2x3AExpResult(1, 1) = 38; MultTest3x2BTimes2x3AExpResult(1, 2) = 48;
296 MultTest3x2BTimes2x3AExpResult(2, 0) = 48; MultTest3x2BTimes2x3AExpResult(2, 1) = 66; MultTest3x2BTimes2x3AExpResult(2, 2) = 84;
299 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x2 * 2x2", MultTest2x2ATimes2x2B, MultTest2x2ATimes2x2BExpResult, verbose);
301 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x2 * 2x2", MultTest2x2BTimes2x2A, MultTest2x2BTimes2x2AExpResult, verbose);
303 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x3 * 3x3", MultTest3x3ATimes3x3B, MultTest3x3ATimes3x3BExpResult, verbose);
305 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x3 * 3x3", MultTest3x3BTimes3x3A, MultTest3x3BTimes3x3AExpResult, verbose);
307 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x3 * 3x2", MultTest2x3ATimes3x2B, MultTest2x3ATimes3x2BExpResult, verbose);
309 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 2x3 * 3x2", MultTest2x3BTimes3x2A, MultTest2x3BTimes3x2AExpResult, verbose);
311 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x2 * 2x3", MultTest3x2ATimes2x3B, MultTest3x2ATimes2x3BExpResult, verbose);
313 numberFailedTests +=
PrintTestResults(
"multiply() -- mult. results -- 3x2 * 2x3", MultTest3x2BTimes2x3A, MultTest3x2BTimes2x3AExpResult, verbose);
315 DMatrix MultTestHugeA, MultTestHugeB, MultTestHugeATimesHugeBExpResult,
316 MultTestHugeATimesHugeB;
318 const int hugeSize = 100;
319 MultTestHugeA.
shape(hugeSize, hugeSize);
320 MultTestHugeB.
shape(hugeSize, hugeSize);
321 MultTestHugeATimesHugeBExpResult.
shape(hugeSize, hugeSize);
322 MultTestHugeATimesHugeB.
shape(hugeSize, hugeSize);
324 for(i = 0; i < hugeSize; i++)
326 for(j = 0; j < hugeSize; j++)
328 MultTestHugeA(i, j) = j;
329 MultTestHugeB(i, j) = i;
330 MultTestHugeATimesHugeBExpResult(i, j) = 328350;
335 MultTestHugeA, MultTestHugeB, 1.0);
337 "multiply() -- mult. results -- huge * huge",
338 MultTestHugeATimesHugeB, MultTestHugeATimesHugeBExpResult, verbose);
346 if (verbose) std::cout <<
"scale() -- scale matrix by some number ";
347 returnCode = ScalTest.
scale( 8.0 );
348 if (ScalTest(2, 3) == 8.0) {
349 if (verbose) std::cout<<
"successful." <<std::endl;
351 if (verbose) std::cout<<
"unsuccessful." <<std::endl;
356 if (verbose) std::cout <<
"scale() -- point-wise scale matrix ";
357 ScalTest.
scale( ScalTest2 );
358 if (ScalTest.
normOne() == 0.0) {
359 if (verbose) std::cout<<
"successful." <<std::endl;
361 if (verbose) std::cout<<
"unsuccessful." <<std::endl;
369 testName =
"random() -- enter random entries into matrix";
370 returnCode = CCC.
random();
371 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
373 testName =
"putScalar() -- set every entry of this matrix to 1.0";
375 numberFailedTests +=
ReturnCodeCheck(testName, returnCode, 0, verbose);
379 if (verbose) std::cout <<
"assign() -- copy the values of an input matrix ";
381 if (verbose) std::cout<<
"successful" <<std::endl;
383 if (verbose) std::cout<<
"unsuccessful" <<std::endl;
390 if (verbose) std::cout <<
"operator= -- small(empty) = large(view) ";
392 if (verbose) std::cout<<
"successful" <<std::endl;
394 if (verbose) std::cout<<
"unsuccessful" <<std::endl;
398 if (verbose) std::cout <<
"operator= -- small(view) = large(copy) ";
400 if (verbose) std::cout<<
"successful"<<std::endl;
402 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
408 if (verbose) std::cout <<
"operator= -- large(copy) = small(copy) ";
410 if (verbose) std::cout<<
"successful"<<std::endl;
412 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
416 if (verbose) std::cout <<
"operator= -- large(copy) = small(view) ";
418 if(verbose) std::cout<<
"successful" <<std::endl;
420 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
425 CCCtest1 += CCCtest3;
426 if (verbose) std::cout <<
"operator+= -- add two matrices of the same size, but different leading dimension ";
427 if (CCCtest1(1,1)==2.0) {
428 if(verbose) std::cout<<
"successful" <<std::endl;
430 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
433 if (verbose) std::cout <<
"operator+= -- add two matrices of different size (nothing should change) ";
435 if (CCCtest1(1,1)==2.0) {
436 if(verbose) std::cout<<
"successful" <<std::endl;
438 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
445 MultTestHugeATimesHugeB.
reshape(10, 10);
446 op_result = (MultTestHugeATimesHugeB == MultTestHugeATimesHugeBExpResult);
448 std::cout <<
"operator== -- results -- small == huge "<< (op_result ==
false ?
"successful" :
"failed" )<<std::endl;
450 op_result = (MultTestHugeATimesHugeB != MultTestHugeATimesHugeBExpResult);
452 std::cout <<
"operator!= -- results -- small != huge "<< (op_result ==
true ?
"successful" :
"failed" )<<std::endl;
453 std::cout << std::endl<< MultTestHugeATimesHugeB << std::endl;
460 if (verbose) std::cout<<std::endl<<
"********** CHECKING TEUCHOS SERIAL DENSE VECTOR **********"<<std::endl<<std::endl;
463 if (verbose) std::cout <<
"default constructor -- construct empty std::vector ";
465 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
468 if (verbose) std::cout <<
"successful."<<std::endl;
474 if (verbose) std::cout <<
"constructor 1 -- empty std::vector with given dimensions ";
475 if ( Con1TestV.
length()!=3 || Con1TestV.
numCols()!=1 || Con1TestV( 1 )!=0.0 ) {
476 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
479 if (verbose) std::cout <<
"successful."<<std::endl;
485 if (verbose) std::cout <<
"constructor 2 -- construct std::vector from array subrange ";
486 if ( Con2Test1V.
numRows()!=4 || Con2Test1V.
numCols()!=1 || Con2Test1V[ 2 ]!=2.0 ) {
487 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
490 if (verbose) std::cout <<
"successful."<<std::endl;
495 DVector Con3TestCopyV( Con2Test1V );
496 if(verbose) std::cout <<
"constructor 3 -- copy constructor ";
497 if ( Con3TestCopyV != Con2Test1V ) {
498 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
501 if (verbose) std::cout <<
"successful."<<std::endl;
508 if (verbose) std::cout <<
"non-method helper function -- construct vector view of second column of matrix ";
509 if ( ColViewTestV.
normInf() != 1.0 || ColViewTestV.
normOne() != 3.0 ) {
510 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
513 if (verbose) std::cout <<
"successful."<<std::endl;
521 numberFailedTests +=
PrintTestResults(
"normFrobenius of a 3x1 std::vector", Con2Test1V.normFrobenius(), 2.0, verbose);
526 SizeTestV1.
size( 5 );
527 if(verbose) std::cout <<
"size() -- test ";
528 if (SizeTestV1( 4 )!= 0.0) {
529 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
532 if (verbose) std::cout <<
"successful."<<std::endl;
535 SizeTestV1.resize( 10 );
536 if(verbose) std::cout <<
"resize() -- test small --> large ";
537 if (SizeTestV1[ 4 ]!= 2.0 || SizeTestV1[ 8 ]!=0.0 ) {
538 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
541 if (verbose) std::cout <<
"successful."<<std::endl;
543 SizeTestV1.resize( 3 );
544 if(verbose) std::cout <<
"resize() -- test large --> small ";
545 if (SizeTestV1( 2 )!= 2.0) {
546 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
549 if (verbose) std::cout <<
"successful."<<std::endl;
555 OpEqTestV3 = OpEqTestV2;
556 if (verbose) std::cout <<
"operator= -- small(empty) = large(view) ";
557 if (OpEqTestV3.length()==3 && OpEqTestV3.values()==OpEqTestV2.values()) {
558 if (verbose) std::cout<<
"successful"<<std::endl;
560 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
563 OpEqTestV3 = OpEqTestV1;
564 if (verbose) std::cout <<
"operator= -- small(view) = large(copy) ";
565 if (OpEqTestV3.length()==10 && OpEqTestV3.values()!=OpEqTestV1.
values()) {
566 if (verbose) std::cout<<
"successful"<<std::endl;
568 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
572 OpEqTestV3 = OpEqTestV1;
573 if (verbose) std::cout <<
"operator= -- small(copy) = large(copy) ";
574 if (OpEqTestV3.length()==10 && OpEqTestV3.values()!=OpEqTestV1.
values() && OpEqTestV3[ 9 ]==3.0) {
575 if (verbose) std::cout<<
"successful"<<std::endl;
577 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
581 DVector OpSumTestV1( OpEqTestV2 );
582 OpSumTestV1 += OpEqTestV2;
583 if (verbose) std::cout <<
"operator+= -- add two vectors of the same size, but different leading dimension ";
584 if (OpSumTestV1( 1 )==6.0) {
585 if (verbose) std::cout<<
"successful" <<std::endl;
587 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
590 if (verbose) std::cout <<
"operator+= -- add two vectors of different size (nothing should change) ";
591 OpSumTestV1 += OpEqTestV1;
592 if (OpSumTestV1( 1 )==6.0) {
593 if (verbose) std::cout<<
"successful" <<std::endl;
595 if (verbose) std::cout<<
"unsuccessful"<<std::endl;
601 if(verbose) std::cout <<
"operator== -- test large == small ";
602 if (OpCompTestV1 == SizeTestV1) {
603 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
606 if (verbose) std::cout <<
"successful."<<std::endl;
608 if(verbose) std::cout <<
"operator!= -- test large != small ";
609 if (OpCompTestV1 != SizeTestV1) {
610 if (verbose) std::cout <<
"successful."<<std::endl;
612 if (verbose) std::cout <<
"successful."<<std::endl;
616 DVector ColSetTestV( AAA.numRows() );
618 bool ret = Teuchos::setCol<OTYPE,STYPE>( ColSetTestV, col, AAA );
619 if (verbose) std::cout <<
"non-method helper function -- set second column of matrix with vector ";
620 if ( ColViewTestV.
normInf() != 2.0 || ColViewTestV.
normOne() != 6.0 || ret == false ) {
621 if (verbose) std::cout <<
"unsuccessful."<<std::endl;
624 if (verbose) std::cout <<
"successful."<<std::endl;
629 if(numberFailedTests > 0)
632 std::cout <<
"Number of failed tests: " << numberFailedTests << std::endl;
633 std::cout <<
"End Result: TEST FAILED" << std::endl;
637 if(numberFailedTests == 0)
638 std::cout <<
"End Result: TEST PASSED" << std::endl;
643 template<
typename TYPE>
644 int PrintTestResults(std::string testName, TYPE calculatedResult, TYPE expectedResult,
bool verbose)
647 if(calculatedResult == expectedResult)
649 if(verbose) std::cout << testName <<
" successful." << std::endl;
654 if(verbose) std::cout << testName <<
" unsuccessful." << std::endl;
660 int ReturnCodeCheck(std::string testName,
int returnCode,
int expectedResult,
bool verbose)
663 if(expectedResult == 0)
667 if(verbose) std::cout << testName <<
" test successful." << std::endl;
672 if(verbose) std::cout << testName <<
" test unsuccessful. Return code was " << returnCode <<
"." << std::endl;
680 if(verbose) std::cout << testName <<
" test successful -- failed as expected." << std::endl;
685 if(verbose) std::cout << testName <<
" test unsuccessful -- did not fail as expected. Return code was " << returnCode <<
"." << std::endl;
ScalarTraits< ScalarType >::magnitudeType normFrobenius() const
Returns the Frobenius-norm of the matrix.
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.
ScalarType * values() const
Data array access method.
Teuchos::SerialDenseVector< int, std::complex< Real > > DVector
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...
This structure defines some basic traits for a scalar field type.
int main(int argc, char *argv[])
ScalarTraits< ScalarType >::magnitudeType normInf() const
Returns the Infinity-norm of the matrix.
OrdinalType numRows() const
Returns the row dimension of this matrix.
int putScalar(const ScalarType value=Teuchos::ScalarTraits< ScalarType >::zero())
Set all values in the matrix to a constant value.
Teuchos::SerialDenseMatrix< int, std::complex< Real > > DMatrix
std::string Teuchos_Version()
int ReturnCodeCheck(std::string, int, int, bool)
bool empty() const
Returns whether this matrix is empty.
ScalarTraits< ScalarType >::magnitudeType normOne() const
Returns the 1-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.
OrdinalType stride() const
Returns the stride between the columns of this matrix in memory.
int shape(OrdinalType numRows, OrdinalType numCols)
Shape method for changing the size of a SerialDenseMatrix, initializing entries to zero...
OrdinalType numCols() const
Returns the column dimension of this matrix.
OrdinalType length() const
Returns the length of this vector.
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.
This class creates and provides basic support for dense rectangular matrix of templated type...