To simplify Matrix Algebra calculations.
MAT a1() = CON 'Set all elements of a1() to one
MAT a1() = CON(expr) 'Set all elements of a1() to value of expr
MAT a1() = IDN 'Establish a1() as an identity matrix
MAT a1() = ZER 'Set all elements of a1() to zero
MAT a1() = a2() + a3() 'Addition
MAT a1() = a2() 'Assignment
MAT a1() = INV(a2()) 'Inversion
MAT a1() = (expr) * a2() 'Scalar Multiplication
MAT a1() = a2() - a3() 'Subtraction
MAT a1() = a2() * a3() 'Multiplication
MAT a1() = TRN(a2()) 'Transposition
Array names with the MAT statements may optionally include a set of empty parentheses. The following are both equally valid, but the inclusion of the parentheses improves clarity of the code:
MAT a1 = CON
MAT a1() = CON
Matrix * and INV operations support all
It is the programmer's responsibility to ensure that arrays used with MAT are of the appropriate size and type. All operations involving two or more arrays require that they be of exactly the same size and type, without exception. Failure to adhere causes undefined results. In the interest of execution speed, no error checking is performed at run-time.
Every scalar value denoted here as 'expr' must be enclosed in parentheses. Although Matrix operations tend to imply a two-dimensional array, unless otherwise noted (such as with MAT IDN, *, TRN), MAT may be used with arrays of one to eight dimensions. It is permissible to specify one array for multiple MAT parameters.
MAT array1() = IDN
This establishes array1 as an identity matrix,
with all diagonal elements as 1 and all others as zero. This produces
undefined results if array1 is not a "square" matrix.
Each element of array2 is multiplied by the scalar value of the expr, then assigned to array1.
MAT array1() = TRN(array2())
Transposes the row and columns from array2 to array1. Arrays must be equivalent: array1(5,2) and array2(2,5). Only a square matrix may be transposed to itself.
MAT array1() = INV(array2())
Inverts the array from array2 to array1. Only a square matrix may be inverted. Proof: If array1 is then multiplied by array2, the resulting "array3" will be equal to an Identify Matrix, (MAT array3 = array1 * array2 ' array3 should now be equal to "MAT array3 IDN").
MAT a() = b() * c()
Array multiplication occurs as follows:
' Row Column assumption:
' array [a]l,n = [b]l,m * [c]m,n
FOR i = 1 TO l ' Row [a]l = Row [b]l
FOR j = 1 TO n ' Column [a]n = Column [c]n
a(i,j) = 0# ' # if Double-precision
FOR k = 1 TO m ' Column [b]m = Row [c]m
a(i,j) = a(i,j) + b(l,k) * c(k,j)