home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / MAGAZINE / MICROCOR / ISSUE_50.ZIP / UNITS50.ARC / EXAMPLE next >
Encoding:
Text File  |  1989-09-20  |  1.8 KB  |  85 lines

  1. PROGRAM SparseExample;
  2.  
  3. (*
  4.     Michael S. Hunt
  5.     Micro Cornucopia
  6.     Issue #50, November - December 1989
  7.     Released as Public Domain Software
  8. *)
  9.  
  10. USES SparseMatrix;
  11.  
  12. CONST MatA = 1;
  13.       MatB = 2;
  14.       MatC = 3;
  15.  
  16. VAR i, j, k : WORD;
  17.  
  18. PROCEDURE AddMatrix; (* load MatA & MatB & then sum then into MatC *)
  19. BEGIN
  20.   FOR i := 1 TO 10 DO
  21.      FOR j := 1 TO 10 DO
  22.       BEGIN
  23.         PutSparse(i, j, MatA, i*1.0);
  24.         PutSparse(i, j, MatB, j*2.0);
  25.         PutSparse(i, j, MatC, Sparse(i, j, MatA)+Sparse(i, j, MatB))
  26.       END;
  27.   WriteLn;
  28.   WriteLn('MatA + MatB = MatC');
  29.   FOR i := 1 TO 10 DO
  30.     BEGIN
  31.       FOR j := 1 TO 10 DO
  32.         Write(Sparse(i, j, MatC):7:1);
  33.       WriteLn
  34.     END
  35. END (* AddMatrix *);
  36.  
  37. PROCEDURE TransposeMatrix; (* transpose MatB into MatA *)
  38. BEGIN
  39.   FOR i := 1 TO 10 DO
  40.     FOR j := 1 TO 10 DO
  41.       PutSparse(j, i, MatA, Sparse(i, j, MatB));
  42.   WriteLn;
  43.   WriteLn('MatB');
  44.   FOR i := 1 TO 10 DO
  45.     BEGIN
  46.       FOR j := 1 TO 10 DO
  47.         Write(Sparse(i, j, MatB):7:1);
  48.       WriteLn
  49.     END;
  50.   WriteLn;
  51.   WriteLn('MatA');
  52.   FOR i := 1 TO 10 DO
  53.     BEGIN
  54.       FOR j := 1 TO 10 DO
  55.         Write(Sparse(i, j, MatA):7:1);
  56.       WriteLn
  57.     END
  58. END (* TransposeMatrix *);
  59.  
  60. PROCEDURE MultMatrix; (* multiply MatB * MatA = MatC *)
  61. BEGIN
  62.   FOR i := 1 TO 10 DO
  63.     FOR j := 1 TO 10 DO
  64.       BEGIN
  65.         PutSparse(i, j, MatC, 0.0);
  66.         FOR k := 1 TO 10 DO
  67.           PutSparse(i, j, MatC, Sparse(i, j, MatC) +
  68.             (Sparse(i, k, MatB) * Sparse(k, j, MatA)))
  69.       END;
  70.   WriteLn;
  71.   WriteLn('MatB * MatA = MatC');
  72.   FOR i := 1 TO 10 DO
  73.     BEGIN
  74.       FOR j := 1 TO 10 DO
  75.         Write(Sparse(i, j, MatC):7:1);
  76.       WriteLn
  77.     END
  78. END (* MultMatrix *);
  79.  
  80. BEGIN
  81.   AddMatrix;
  82.   TransposeMatrix;
  83.   MultMatrix
  84. END.
  85.