home *** CD-ROM | disk | FTP | other *** search
- PROGRAM SparseExample;
-
- (*
- Michael S. Hunt
- Micro Cornucopia
- Issue #50, November - December 1989
- Released as Public Domain Software
- *)
-
- USES SparseMatrix;
-
- CONST MatA = 1;
- MatB = 2;
- MatC = 3;
-
- VAR i, j, k : WORD;
-
- PROCEDURE AddMatrix; (* load MatA & MatB & then sum then into MatC *)
- BEGIN
- FOR i := 1 TO 10 DO
- FOR j := 1 TO 10 DO
- BEGIN
- PutSparse(i, j, MatA, i*1.0);
- PutSparse(i, j, MatB, j*2.0);
- PutSparse(i, j, MatC, Sparse(i, j, MatA)+Sparse(i, j, MatB))
- END;
- WriteLn;
- WriteLn('MatA + MatB = MatC');
- FOR i := 1 TO 10 DO
- BEGIN
- FOR j := 1 TO 10 DO
- Write(Sparse(i, j, MatC):7:1);
- WriteLn
- END
- END (* AddMatrix *);
-
- PROCEDURE TransposeMatrix; (* transpose MatB into MatA *)
- BEGIN
- FOR i := 1 TO 10 DO
- FOR j := 1 TO 10 DO
- PutSparse(j, i, MatA, Sparse(i, j, MatB));
- WriteLn;
- WriteLn('MatB');
- FOR i := 1 TO 10 DO
- BEGIN
- FOR j := 1 TO 10 DO
- Write(Sparse(i, j, MatB):7:1);
- WriteLn
- END;
- WriteLn;
- WriteLn('MatA');
- FOR i := 1 TO 10 DO
- BEGIN
- FOR j := 1 TO 10 DO
- Write(Sparse(i, j, MatA):7:1);
- WriteLn
- END
- END (* TransposeMatrix *);
-
- PROCEDURE MultMatrix; (* multiply MatB * MatA = MatC *)
- BEGIN
- FOR i := 1 TO 10 DO
- FOR j := 1 TO 10 DO
- BEGIN
- PutSparse(i, j, MatC, 0.0);
- FOR k := 1 TO 10 DO
- PutSparse(i, j, MatC, Sparse(i, j, MatC) +
- (Sparse(i, k, MatB) * Sparse(k, j, MatA)))
- END;
- WriteLn;
- WriteLn('MatB * MatA = MatC');
- FOR i := 1 TO 10 DO
- BEGIN
- FOR j := 1 TO 10 DO
- Write(Sparse(i, j, MatC):7:1);
- WriteLn
- END
- END (* MultMatrix *);
-
- BEGIN
- AddMatrix;
- TransposeMatrix;
- MultMatrix
- END.