|
|
|
|
||
|
DEFINITION MODULE LMatrices; (******************************************************************* Module LMatrices (Version 1.0) Copyright (c) 1995-2006 by Dimitrios Gyalistras and ETH Zurich. Purpose Manage double precision matrices and vectors, various operations (matrix dimensions up to 62 x 62). Remarks -- Programming o Design Dimitrios Gyalistras 12/05/1995 o Implementation Dimitrios Gyalistras 12/05/1995 ETH Zurich Systems Ecology CHN E 35.1 Universitaetstrasse 16 8092 Zurich SWITZERLAND URLs: <mailto:RAMSES@env.ethz.ch> <http://www.sysecol.ethz.ch> <http://www.sysecol.ethz.ch/SimSoftware/RAMSES> Last revision of definition: 14/09/1999 AF *******************************************************************) CONST MaxElems = 62; TYPE LVector = ARRAY [1..MaxElems] OF LONGREAL; LVectorPtr = POINTER TO LVector; TYPE LMatrix = ARRAY [1..MaxElems] OF LVector; LMatrixPtr = POINTER TO LMatrix; PROCEDURE AllocVector( VAR vec : LVectorPtr; initVal : LONGREAL; (* value to use for initialization *) VAR errTxt : ARRAY OF CHAR ): BOOLEAN; PROCEDURE DeallocVector( VAR vec : LVectorPtr ); PROCEDURE AllocMatrix( VAR mat : LMatrixPtr; initVal : LONGREAL; (* value to use for initialization *) VAR errTxt : ARRAY OF CHAR ): BOOLEAN; PROCEDURE DeallocMatrix( VAR mat : LMatrixPtr ); (***********************************************************************) PROCEDURE SetVector( VAR vec: LVector; val: LONGREAL ); PROCEDURE CopyVector( VAR vec : LVector; (* VAR for speed-up only *) nElements : INTEGER; VAR result : LVector ); PROCEDURE MatVecProduct( VAR mat : LMatrix; (* VAR for speed-up only *) VAR vec : LVector; (* VAR for speed-up only *) nRowsCols : INTEGER; VAR result : LVector ); (***********************************************************************) PROCEDURE SetMatrixColumn( VAR mat : LMatrix; columnNr : INTEGER; VAR colData : LVector ); (* VAR for speed-up only *) PROCEDURE GetMatrixColumn( VAR mat : LMatrix; (* VAR for speed-up only *) columnNr : INTEGER; VAR colData : LVector ); PROCEDURE SetMatrix( VAR mat: LMatrix; val: LONGREAL ); PROCEDURE SetToIdentityMatrix( VAR mat: LMatrix ); PROCEDURE IsIdentityMatrix( VAR mat : LMatrix; (* VAR for speed-up only *) nRowsCols : INTEGER; tolerance : LONGREAL ): BOOLEAN; PROCEDURE ScaleMatrix( VAR mat : LMatrix; nRowsCols : INTEGER; factor : LONGREAL ); PROCEDURE CopyMatrix( VAR mat : LMatrix; (* VAR for speed-up only *) nRowsCols : INTEGER; VAR result : LMatrix ); PROCEDURE TransposeMatrix( VAR mat : LMatrix; (* VAR for speed-up only *) nRowsCols : INTEGER; VAR result : LMatrix ); PROCEDURE MatrixProduct( VAR mat1 : LMatrix; (* VAR for speed-up only *) VAR mat2 : LMatrix; (* VAR for speed-up only *) nRowsCols : INTEGER; VAR result : LMatrix ); PROCEDURE MatrixSum( VAR mat1 : LMatrix; (* VAR for speed-up only *) VAR mat2 : LMatrix; (* VAR for speed-up only *) nRowsCols : INTEGER; VAR result : LMatrix ); PROCEDURE ReadMatrix( filename : ARRAY OF CHAR; VAR mat : LMatrix; VAR nRows : INTEGER; VAR nCols : INTEGER; VAR errTxt : ARRAY OF CHAR ): BOOLEAN; PROCEDURE WriteMatrix( filename : ARRAY OF CHAR; VAR mat : LMatrix; (* VAR for speed-up only *) nRows : INTEGER; nCols : INTEGER; VAR errTxt : ARRAY OF CHAR ): BOOLEAN; END LMatrices.
|
||
|
|
|