Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Matrix;
  2.  
  3. (*
  4. Author: Olivier Cappelle
  5. Date Created: 15/11/2010
  6. Description: Mod-file for matrix
  7. *)
  8.  
  9. IMPORT
  10.     OutExt;
  11.  
  12. TYPE
  13.     Matrix* = ARRAY 4,4 OF REAL;
  14.     PROCEDURE Unity*(VAR matrixresult : Matrix);
  15.         VAR
  16.             i, j : INTEGER;
  17.                    
  18.     BEGIN
  19.    
  20.         FOR i := 0 TO 3 DO
  21.             FOR j := 0 TO 3 DO
  22.                 IF i = j THEN
  23.                     matrixresult[i, j] := 1;
  24.                 ELSE
  25.                     matrixresult[i, j] := 0;
  26.                 END;
  27.             END;
  28.         END;   
  29.                
  30.     END Unity;     
  31.     PROCEDURE Write*(matrixresult : Matrix);
  32.         VAR
  33.             i, j : INTEGER;
  34.    
  35.     BEGIN
  36.        
  37.         FOR i := 0 TO 3 DO
  38.             FOR j := 0 TO 3 DO
  39.                 OutExt.RealFix(matrixresult[i, j], 0, 2);
  40.             END;
  41.             OutExt.Ln;
  42.         END;
  43.         OutExt.Ln;
  44.        
  45.     END Write;
  46.     PROCEDURE ScalarMult*(VAR matrixresult : Matrix; x: REAL; matrix : Matrix);
  47.         VAR
  48.             i, j : LONGINT;
  49.                            
  50.     BEGIN
  51.        
  52.         FOR i := 0 TO 3 DO
  53.             FOR j := 0 TO 3 DO
  54.                 matrixresult[i, j] := matrix[i, j] * x;
  55.             END;
  56.         END;
  57.            
  58.     END ScalarMult;
  59.     PROCEDURE Sum*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
  60.         VAR
  61.             i, j : INTEGER;
  62.                                        
  63.     BEGIN
  64.         FOR i := 0 TO 3 DO
  65.             FOR j := 0 TO 3 DO
  66.                 matrixresult[i, j] := matrix[i, j] + matrix2[i, j];
  67.             END;
  68.         END;       
  69.                        
  70.     END Sum;   
  71.     PROCEDURE Diff*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
  72.         VAR
  73.             i, j : INTEGER;
  74.                                        
  75.     BEGIN
  76.         FOR i := 0 TO 3 DO
  77.             FOR j := 0 TO 3 DO
  78.                 matrixresult[i, j] := matrix[i, j] + matrix2[i, j];
  79.             END;
  80.         END;       
  81.    
  82.     END Diff;
  83.     PROCEDURE Mult*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
  84.         VAR
  85.             i, j, k :INTEGER;
  86.            
  87.     BEGIN
  88.    
  89.         FOR i := 0 TO 3 DO
  90.             FOR j := 0 TO 3 DO
  91.                 FOR k := 0 TO 3 DO
  92.                     matrixresult[i, j] := matrix[i, k] * matrix2[k, j]
  93.                 END;   
  94.             END;   
  95.         END;
  96.        
  97.     END Mult;
  98. PROCEDURE Determinant*(VAR determinant : REAL; matrix : Matrix);
  99.         VAR
  100.             i, j : INTEGER;
  101.                
  102.     BEGIN
  103.        
  104.         FOR i := 0 TO 3 DO
  105.             FOR j := 0 TO 3 DO
  106.                 determinant := (matrix[0, 0] * ((matrix[1, 1] * ((matrix[2, 2] * matrix[3, 3]) - (matrix[3, 2] * matrix[2, 3]))) - (matrix[2, 1] * ((matrix[1, 2] *                             matrix[3, 3]) - (matrix[3, 2] * matrix[1, 3]))) + (matrix[3, 1] * ((matrix[1, 2] * matrix[2, 3]) - (matrix[2, 2] * matrix[1, 3]))))) - (matrix[0, 1] *                      ((matrix[1, 0] * ((matrix[2, 2] * matrix[3, 3]) - (matrix[3, 2] * matrix[2, 3]))) - (matrix[2, 0] * ((matrix[1, 2] * matrix[3, 3]) - (matrix[3, 2] *                            matrix[1, 3]))) + (matrix[3, 0] * ((matrix[1, 2] * matrix[2, 3]) - (matrix[2, 2] * matrix[1, 3]))))) + (matrix[0, 2] * ((matrix[1, 0] * ((matrix[2, 1] *                        matrix[3, 3]) - (matrix[3, 1] * matrix[2, 3]))) - (matrix[2, 0] * ((matrix[1, 1] * matrix[3, 3]) - (matrix[3, 1] * matrix[1, 3]))) + (matrix[3, 0] *                            ((matrix[1, 1] * matrix[2, 3]) - (matrix[2, 1] * matrix[1, 3]))))) - (matrix[0, 3] * ((matrix[1, 0] * ((matrix[2, 1] * matrix[3, 2]) - (matrix[3, 1] *                      matrix[2, 2]))) - (matrix[2, 0] * ((matrix[1, 1] * matrix[3, 2]) - (matrix[3, 1] * matrix[1, 2]))) + (matrix[3, 0] * ((matrix[1, 1] * matrix[2, 2]) -                           (matrix[2, 1] * matrix[1, 2])))));
  107.             END;
  108.         END;
  109.  
  110.     END Determinant;           
  111. BEGIN
  112. END Matrix.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement