--Copyright The Numerical Algorithms Group Limited 1991.

)cl all
 
-- A number of matrix computations over the integers and over the
-- rationals using various algortihms and indexing schemes.
 
-- Hilbert matrix
 
mat : MATRIX FRAC INT := matrix [[1/(i + j) for i in 1..5] for j in 1..5]
matinv := inverse mat
mat * matinv
 
-- same computation, different indexing
 
mat1 : IMATRIX(FRAC INT,-3,47) := _
   matrix [[1/(i + j) for i in 1..5] for j in 1..5]
mat1inv := inverse mat1
mat1 * mat1inv
 
-- Vandermonde determinant
 
mat2 : MATRIX INT := matrix [[j**i for i in 0..4] for j in 1..5]
rowEchelon  mat2
determinant mat2
minordet    mat2
 
-- same computation, different indexing
 
mat3 : IMATRIX(INT,13,-7) := _
   matrix [[j**i for i in 0..4] for j in 1..5]
rowEchelon  mat3
determinant mat3
minordet    mat3
 
-- same computation, work over the rationals
 
mat4 : MATRIX FRAC INT := matrix [[j**i for i in 0..4] for j in 1..5]
rowEchelon  mat4
determinant mat4
minordet    mat4
 
-- same computation, different indexing
 
mat5 : IMATRIX(FRAC INT,-113,37) := _
   matrix [[j**i for i in 0..4] for j in 1..5]
rowEchelon  mat5
determinant mat5
minordet    mat5
 
mat6 : MATRIX INT := matrix [[1,2,3],[4,5,6],[7,8,9]]
rowEchelon mat6
rank       mat6
nullity    mat6
nullSpace  mat6
 
mat7 : IMATRIX(FRAC INT,163,61657) := matrix [[1,2,3],[4,5,6],[7,8,9]]
rowEchelon mat7
rank       mat7
nullity    mat7
nullSpace  mat7
 
mat8 : MATRIX INT := _
 matrix [[1,-2,13,0,5,-47],[-4,15,0,16,-2,1],[-7,0,8,-11,9,0]]
rowEchelon mat8
rank       mat8
nullity    mat8
nullSpace  mat8
 
mat9 : IMATRIX(FRAC INT,163,61657) := _
 matrix [[1,-2,13,0,5,-47],[-4,15,0,16,-2,1],[-7,0,8,-11,9,0]]
rowEchelon mat9
rank       mat9
nullity    mat9
nullSpace  mat9
