Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODULE Matrix;
- (*
- Author: Olivier Cappelle
- Date Created: 15/11/2010
- Description: Mod-file for matrix
- *)
- IMPORT
- OutExt;
- TYPE
- Matrix* = ARRAY 4,4 OF REAL;
- PROCEDURE Unity*(VAR matrixresult : Matrix);
- VAR
- i, j : INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- IF i = j THEN
- matrixresult[i, j] := 1;
- ELSE
- matrixresult[i, j] := 0;
- END;
- END;
- END;
- END Unity;
- PROCEDURE Write*(matrixresult : Matrix);
- VAR
- i, j : INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- OutExt.RealFix(matrixresult[i, j], 0, 2);
- END;
- OutExt.Ln;
- END;
- OutExt.Ln;
- END Write;
- PROCEDURE ScalarMult*(VAR matrixresult : Matrix; x: REAL; matrix : Matrix);
- VAR
- i, j : LONGINT;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- matrixresult[i, j] := matrix[i, j] * x;
- END;
- END;
- END ScalarMult;
- PROCEDURE Sum*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
- VAR
- i, j : INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- matrixresult[i, j] := matrix[i, j] + matrix2[i, j];
- END;
- END;
- END Sum;
- PROCEDURE Diff*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
- VAR
- i, j : INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- matrixresult[i, j] := matrix[i, j] + matrix2[i, j];
- END;
- END;
- END Diff;
- PROCEDURE Mult*(VAR matrixresult : Matrix; matrix, matrix2 : Matrix);
- VAR
- i, j, k :INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- FOR k := 0 TO 3 DO
- matrixresult[i, j] := matrix[i, k] * matrix2[k, j]
- END;
- END;
- END;
- END Mult;
- PROCEDURE Determinant*(VAR determinant : REAL; matrix : Matrix);
- VAR
- i, j : INTEGER;
- BEGIN
- FOR i := 0 TO 3 DO
- FOR j := 0 TO 3 DO
- 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])))));
- END;
- END;
- END Determinant;
- BEGIN
- END Matrix.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement