home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / n / newmat06.zip / TMT1.CXX < prev    next >
C/C++ Source or Header  |  1992-11-26  |  2KB  |  87 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4.  
  5.  
  6. #include "include.h"
  7.  
  8. #include "newmat.h"
  9.  
  10. /**************************** test program ******************************/
  11.  
  12. void Print(const Matrix& X);
  13. void Print(const UpperTriangularMatrix& X);
  14. void Print(const DiagonalMatrix& X);
  15. void Print(const SymmetricMatrix& X);
  16. void Print(const LowerTriangularMatrix& X);
  17.  
  18.  
  19. void trymat1()
  20. {
  21. //   cout << "\nFirst test of Matrix package\n\n";
  22.    Tracer et("First test of Matrix package");
  23.    Exception::PrintTrace(TRUE);
  24.    {
  25.       Tracer et1("Stage 1");
  26.       int i,j;
  27.  
  28.       LowerTriangularMatrix L(10);
  29.       for (i=1;i<=10;i++) for (j=1;j<=i;j++) L(i,j)=2.0+i*i+j;
  30.       SymmetricMatrix S(10);
  31.       for (i=1;i<=10;i++) for (j=1;j<=i;j++) S(i,j)=i*j+1.0;
  32.       SymmetricMatrix S1 = S / 2.0;
  33.       S = S1 * 2.0;
  34.       UpperTriangularMatrix U=L.t()*2.0;
  35.       Print(LowerTriangularMatrix(L-U.t()*0.5));
  36.       DiagonalMatrix D(10);
  37.       for (i=1;i<=10;i++) D(i,i)=(i-4)*(i-5)*(i-6);
  38.       Matrix M=(S+U-D+L)*(L+U-D+S);
  39.       DiagonalMatrix DD=D*D;
  40.       LowerTriangularMatrix LD=L*D;
  41.       // expressions split for Turbo C
  42.       Matrix M1 = S*L + U*L - D*L + L*L + 10.0;
  43.       { M1 = M1 + S*U + U*U - D*U + L*U - S*D; }
  44.       { M1 = M1 - U*D + DD - LD + S*S; }
  45.       { M1 = M1 + U*S - D*S + L*S - 10.0; }
  46.       M=M1-M;
  47.       Print(M);
  48.    }
  49.    {
  50.       Tracer et1("Stage 2");
  51.       int i,j;
  52.  
  53.       LowerTriangularMatrix L(9);
  54.       for (i=1;i<=9;i++) for (j=1;j<=i;j++) L(i,j)=1.0+j;
  55.       UpperTriangularMatrix U1(9);
  56.       for (j=1;j<=9;j++) for (i=1;i<=j;i++) U1(i,j)=1.0+i;
  57.       LowerTriangularMatrix LX(9);
  58.       for (i=1;i<=9;i++) for (j=1;j<=i;j++) LX(i,j)=1.0+i*i;
  59.       UpperTriangularMatrix UX(9);
  60.       for (j=1;j<=9;j++) for (i=1;i<=j;i++) UX(i,j)=1.0+j*j;
  61.       {
  62.          L=L+LX/0.5;   L=L-LX*3.0;   L=LX*2.0+L;
  63.          U1=U1+UX*2.0; U1=U1-UX*3.0; U1=UX*2.0+U1;
  64.       }
  65.  
  66.  
  67.       SymmetricMatrix S(9);
  68.       for (i=1;i<=9;i++) for (j=1;j<=i;j++) S(i,j)=i*i+j;
  69.       {
  70.          SymmetricMatrix S1 = S;
  71.          S=S1+5.0;
  72.          S=S-3.0;
  73.       }
  74.  
  75.       DiagonalMatrix D(9);
  76.       for (i=1;i<=9;i++) D(i,i)=S(i,i);
  77.       UpperTriangularMatrix U=L.t()*2.0;
  78.       {
  79.          U1=U1*2.0 - U;  Print(U1);
  80.          L=L*2.0-D; U=U-D;
  81.       }
  82.       Matrix M=U+L; S=S*2.0; M=S-M; Print(M);
  83.    }
  84. //   cout << "\nEnd of first test\n";
  85. }
  86.  
  87.