Mon Jan  4 00:05:34 MET 1999
REDUCE 3.7, 15-Jan-99 ...

1: 1: 
2: 2: 2: 2: 2: 2: 2: 2: 2: 
3: 3: % Test file for Sparse Matrices and the Linear Algebra Package for
% Sparse Matrices.

% Author: Stephen Scowcroft.                    Date: June 1995.

% Firstly, the matrices need to be created.

% This is the standard way to create a sparse matrix.

% Create a sparse matrix.

sparse mat1(5,5);



%Fill the sparse matrix with data

mat1(1,1):=2;


mat1(1,1) := 2

mat1(2,2):=4;


mat1(2,2) := 4

mat1(3,3):=6;


mat1(3,3) := 6

mat1(4,4):=8;


mat1(4,4) := 8

mat1(5,5):=10;


mat1(5,5) := 10


sparse mat4(5,5);



mat4(1,1):=x;


mat4(1,1) := x

mat4(2,2):=x;


mat4(2,2) := x

mat4(3,3):=x;


mat4(3,3) := x

mat4(4,4):=x;


mat4(4,4) := x

mat4(5,5):=x;


mat4(5,5) := x


% A small function to automatically fill a sparse matrix with data.

procedure makematsp(nam,row);
 begin; 
  sparse nam(row,row);
    for i := 1:row do <<nam(i,i):=i>>
 end;


makematsp


clear mat2;


makematsp(mat2,100);



% Matrices created in the standard Matrix way.

zz1:=mat((1,2),(3,4));


       [1  2]
zz1 := [    ]
       [3  4]


zz2:=mat((x,x),(x,x));


       [x  x]
zz2 := [    ]
       [x  x]


zz3:=mat((i+1,i+2,i+3),(4,5,2),(1,i,0));


       [i + 1  i + 2  i + 3]
       [                   ]
zz3 := [  4      5      2  ]
       [                   ]
       [  1      i      0  ]



% I have taken advantage of the Linear Algebra Package (Matt Rebbeck)
% in order to create some Sparse Matrices.

mat3:=diagonal(zz1,zz1,zz1);


        [1  2  0  0  0  0]
        [                ]
        [3  4  0  0  0  0]
        [                ]
        [0  0  1  2  0  0]
mat3 := [                ]
        [0  0  3  4  0  0]
        [                ]
        [0  0  0  0  1  2]
        [                ]
        [0  0  0  0  3  4]


mat5:=band_matrix({1,3,1},100)$


mat6:=diagonal(zz3,zz3);


        [i + 1  i + 2  i + 3    0      0      0  ]
        [                                        ]
        [  4      5      2      0      0      0  ]
        [                                        ]
        [  1      i      0      0      0      0  ]
mat6 := [                                        ]
        [  0      0      0    i + 1  i + 2  i + 3]
        [                                        ]
        [  0      0      0      4      5      2  ]
        [                                        ]
        [  0      0      0      1      i      0  ]


mat7:=band_matrix({a,b,c},4);


        [b  c  0  0]
        [          ]
        [a  b  c  0]
mat7 := [          ]
        [0  a  b  c]
        [          ]
        [0  0  a  b]



% These are then "translated" into the Sparse operator using the 
% function transmat.
% This is a destructive function in the sense that the matrices are no
% longer of type 'matrix but are now 'sparse.

transmat mat3;


transmat mat5;


transmat mat6;


transmat mat7;



poly  := x^7+x^5+4*x^4+5*x^3+12;


         7    5      4      3
poly := x  + x  + 4*x  + 5*x  + 12

poly1 := x^2+x*y^3+x*y*z^3+y*x+2+y*3;


          2      3        3
poly1 := x  + x*y  + x*y*z  + x*y + 3*y + 2


% Firstly some basic matrix operations.
% These are the same as the present matrix package

mat1^-1;



             1
spm(1,1) := ---$
             2

             1
spm(2,2) := ---$
             4

             1
spm(3,3) := ---$
             6

             1
spm(4,4) := ---$
             8

             1
spm(5,5) := ----$
             10

mat4^-1;



             1
spm(1,1) := ---$
             x

             1
spm(2,2) := ---$
             x

             1
spm(3,3) := ---$
             x

             1
spm(4,4) := ---$
             x

             1
spm(5,5) := ---$
             x

mat2 + mat5$


mat2 - mat5$


mat1-mat1;


"Empty Matrix"

mat4 + mat1;



spm(1,1) := x + 2$

spm(2,2) := x + 4$

spm(3,3) := x + 6$

spm(4,4) := x + 8$

spm(5,5) := x + 10$

mat4 * mat1;



spm(1,1) := 2*x$

spm(2,2) := 4*x$

spm(3,3) := 6*x$

spm(4,4) := 8*x$

spm(5,5) := 10*x$


2*mat1 + (3*mat4 + mat1);



spm(1,1) := 3*(x + 2)$

spm(2,2) := 3*(x + 4)$

spm(3,3) := 3*(x + 6)$

spm(4,4) := 3*(x + 8)$

spm(5,5) := 3*(x + 10)$

% It is also possible to combine both 'matrix and 'sparse type matrices
% in these operations.

pp:=band_matrix({1,3,1},100)$


mat5*pp;



spm(1,1) := 10$

spm(1,2) := 6$

spm(1,3) := 1$

spm(2,1) := 6$

spm(2,2) := 11$

spm(2,3) := 6$

spm(2,4) := 1$

spm(3,1) := 1$

spm(3,2) := 6$

spm(3,3) := 11$

spm(3,4) := 6$

spm(3,5) := 1$

spm(4,2) := 1$

spm(4,3) := 6$

spm(4,4) := 11$

spm(4,5) := 6$

spm(4,6) := 1$

spm(5,3) := 1$

spm(5,4) := 6$

spm(5,5) := 11$

spm(5,6) := 6$

spm(5,7) := 1$

spm(6,4) := 1$

spm(6,5) := 6$

spm(6,6) := 11$

spm(6,7) := 6$

spm(6,8) := 1$

spm(7,5) := 1$

spm(7,6) := 6$

spm(7,7) := 11$

spm(7,8) := 6$

spm(7,9) := 1$

spm(8,6) := 1$

spm(8,7) := 6$

spm(8,8) := 11$

spm(8,9) := 6$

spm(8,10) := 1$

spm(9,7) := 1$

spm(9,8) := 6$

spm(9,9) := 11$

spm(9,10) := 6$

spm(9,11) := 1$

spm(10,8) := 1$

spm(10,9) := 6$

spm(10,10) := 11$

spm(10,11) := 6$

spm(10,12) := 1$

spm(11,9) := 1$

spm(11,10) := 6$

spm(11,11) := 11$

spm(11,12) := 6$

spm(11,13) := 1$

spm(12,10) := 1$

spm(12,11) := 6$

spm(12,12) := 11$

spm(12,13) := 6$

spm(12,14) := 1$

spm(13,11) := 1$

spm(13,12) := 6$

spm(13,13) := 11$

spm(13,14) := 6$

spm(13,15) := 1$

spm(14,12) := 1$

spm(14,13) := 6$

spm(14,14) := 11$

spm(14,15) := 6$

spm(14,16) := 1$

spm(15,13) := 1$

spm(15,14) := 6$

spm(15,15) := 11$

spm(15,16) := 6$

spm(15,17) := 1$

spm(16,14) := 1$

spm(16,15) := 6$

spm(16,16) := 11$

spm(16,17) := 6$

spm(16,18) := 1$

spm(17,15) := 1$

spm(17,16) := 6$

spm(17,17) := 11$

spm(17,18) := 6$

spm(17,19) := 1$

spm(18,16) := 1$

spm(18,17) := 6$

spm(18,18) := 11$

spm(18,19) := 6$

spm(18,20) := 1$

spm(19,17) := 1$

spm(19,18) := 6$

spm(19,19) := 11$

spm(19,20) := 6$

spm(19,21) := 1$

spm(20,18) := 1$

spm(20,19) := 6$

spm(20,20) := 11$

spm(20,21) := 6$

spm(20,22) := 1$

spm(21,19) := 1$

spm(21,20) := 6$

spm(21,21) := 11$

spm(21,22) := 6$

spm(21,23) := 1$

spm(22,20) := 1$

spm(22,21) := 6$

spm(22,22) := 11$

spm(22,23) := 6$

spm(22,24) := 1$

spm(23,21) := 1$

spm(23,22) := 6$

spm(23,23) := 11$

spm(23,24) := 6$

spm(23,25) := 1$

spm(24,22) := 1$

spm(24,23) := 6$

spm(24,24) := 11$

spm(24,25) := 6$

spm(24,26) := 1$

spm(25,23) := 1$

spm(25,24) := 6$

spm(25,25) := 11$

spm(25,26) := 6$

spm(25,27) := 1$

spm(26,24) := 1$

spm(26,25) := 6$

spm(26,26) := 11$

spm(26,27) := 6$

spm(26,28) := 1$

spm(27,25) := 1$

spm(27,26) := 6$

spm(27,27) := 11$

spm(27,28) := 6$

spm(27,29) := 1$

spm(28,26) := 1$

spm(28,27) := 6$

spm(28,28) := 11$

spm(28,29) := 6$

spm(28,30) := 1$

spm(29,27) := 1$

spm(29,28) := 6$

spm(29,29) := 11$

spm(29,30) := 6$

spm(29,31) := 1$

spm(30,28) := 1$

spm(30,29) := 6$

spm(30,30) := 11$

spm(30,31) := 6$

spm(30,32) := 1$

spm(31,29) := 1$

spm(31,30) := 6$

spm(31,31) := 11$

spm(31,32) := 6$

spm(31,33) := 1$

spm(32,30) := 1$

spm(32,31) := 6$

spm(32,32) := 11$

spm(32,33) := 6$

spm(32,34) := 1$

spm(33,31) := 1$

spm(33,32) := 6$

spm(33,33) := 11$

spm(33,34) := 6$

spm(33,35) := 1$

spm(34,32) := 1$

spm(34,33) := 6$

spm(34,34) := 11$

spm(34,35) := 6$

spm(34,36) := 1$

spm(35,33) := 1$

spm(35,34) := 6$

spm(35,35) := 11$

spm(35,36) := 6$

spm(35,37) := 1$

spm(36,34) := 1$

spm(36,35) := 6$

spm(36,36) := 11$

spm(36,37) := 6$

spm(36,38) := 1$

spm(37,35) := 1$

spm(37,36) := 6$

spm(37,37) := 11$

spm(37,38) := 6$

spm(37,39) := 1$

spm(38,36) := 1$

spm(38,37) := 6$

spm(38,38) := 11$

spm(38,39) := 6$

spm(38,40) := 1$

spm(39,37) := 1$

spm(39,38) := 6$

spm(39,39) := 11$

spm(39,40) := 6$

spm(39,41) := 1$

spm(40,38) := 1$

spm(40,39) := 6$

spm(40,40) := 11$

spm(40,41) := 6$

spm(40,42) := 1$

spm(41,39) := 1$

spm(41,40) := 6$

spm(41,41) := 11$

spm(41,42) := 6$

spm(41,43) := 1$

spm(42,40) := 1$

spm(42,41) := 6$

spm(42,42) := 11$

spm(42,43) := 6$

spm(42,44) := 1$

spm(43,41) := 1$

spm(43,42) := 6$

spm(43,43) := 11$

spm(43,44) := 6$

spm(43,45) := 1$

spm(44,42) := 1$

spm(44,43) := 6$

spm(44,44) := 11$

spm(44,45) := 6$

spm(44,46) := 1$

spm(45,43) := 1$

spm(45,44) := 6$

spm(45,45) := 11$

spm(45,46) := 6$

spm(45,47) := 1$

spm(46,44) := 1$

spm(46,45) := 6$

spm(46,46) := 11$

spm(46,47) := 6$

spm(46,48) := 1$

spm(47,45) := 1$

spm(47,46) := 6$

spm(47,47) := 11$

spm(47,48) := 6$

spm(47,49) := 1$

spm(48,46) := 1$

spm(48,47) := 6$

spm(48,48) := 11$

spm(48,49) := 6$

spm(48,50) := 1$

spm(49,47) := 1$

spm(49,48) := 6$

spm(49,49) := 11$

spm(49,50) := 6$

spm(49,51) := 1$

spm(50,48) := 1$

spm(50,49) := 6$

spm(50,50) := 11$

spm(50,51) := 6$

spm(50,52) := 1$

spm(51,49) := 1$

spm(51,50) := 6$

spm(51,51) := 11$

spm(51,52) := 6$

spm(51,53) := 1$

spm(52,50) := 1$

spm(52,51) := 6$

spm(52,52) := 11$

spm(52,53) := 6$

spm(52,54) := 1$

spm(53,51) := 1$

spm(53,52) := 6$

spm(53,53) := 11$

spm(53,54) := 6$

spm(53,55) := 1$

spm(54,52) := 1$

spm(54,53) := 6$

spm(54,54) := 11$

spm(54,55) := 6$

spm(54,56) := 1$

spm(55,53) := 1$

spm(55,54) := 6$

spm(55,55) := 11$

spm(55,56) := 6$

spm(55,57) := 1$

spm(56,54) := 1$

spm(56,55) := 6$

spm(56,56) := 11$

spm(56,57) := 6$

spm(56,58) := 1$

spm(57,55) := 1$

spm(57,56) := 6$

spm(57,57) := 11$

spm(57,58) := 6$

spm(57,59) := 1$

spm(58,56) := 1$

spm(58,57) := 6$

spm(58,58) := 11$

spm(58,59) := 6$

spm(58,60) := 1$

spm(59,57) := 1$

spm(59,58) := 6$

spm(59,59) := 11$

spm(59,60) := 6$

spm(59,61) := 1$

spm(60,58) := 1$

spm(60,59) := 6$

spm(60,60) := 11$

spm(60,61) := 6$

spm(60,62) := 1$

spm(61,59) := 1$

spm(61,60) := 6$

spm(61,61) := 11$

spm(61,62) := 6$

spm(61,63) := 1$

spm(62,60) := 1$

spm(62,61) := 6$

spm(62,62) := 11$

spm(62,63) := 6$

spm(62,64) := 1$

spm(63,61) := 1$

spm(63,62) := 6$

spm(63,63) := 11$

spm(63,64) := 6$

spm(63,65) := 1$

spm(64,62) := 1$

spm(64,63) := 6$

spm(64,64) := 11$

spm(64,65) := 6$

spm(64,66) := 1$

spm(65,63) := 1$

spm(65,64) := 6$

spm(65,65) := 11$

spm(65,66) := 6$

spm(65,67) := 1$

spm(66,64) := 1$

spm(66,65) := 6$

spm(66,66) := 11$

spm(66,67) := 6$

spm(66,68) := 1$

spm(67,65) := 1$

spm(67,66) := 6$

spm(67,67) := 11$

spm(67,68) := 6$

spm(67,69) := 1$

spm(68,66) := 1$

spm(68,67) := 6$

spm(68,68) := 11$

spm(68,69) := 6$

spm(68,70) := 1$

spm(69,67) := 1$

spm(69,68) := 6$

spm(69,69) := 11$

spm(69,70) := 6$

spm(69,71) := 1$

spm(70,68) := 1$

spm(70,69) := 6$

spm(70,70) := 11$

spm(70,71) := 6$

spm(70,72) := 1$

spm(71,69) := 1$

spm(71,70) := 6$

spm(71,71) := 11$

spm(71,72) := 6$

spm(71,73) := 1$

spm(72,70) := 1$

spm(72,71) := 6$

spm(72,72) := 11$

spm(72,73) := 6$

spm(72,74) := 1$

spm(73,71) := 1$

spm(73,72) := 6$

spm(73,73) := 11$

spm(73,74) := 6$

spm(73,75) := 1$

spm(74,72) := 1$

spm(74,73) := 6$

spm(74,74) := 11$

spm(74,75) := 6$

spm(74,76) := 1$

spm(75,73) := 1$

spm(75,74) := 6$

spm(75,75) := 11$

spm(75,76) := 6$

spm(75,77) := 1$

spm(76,74) := 1$

spm(76,75) := 6$

spm(76,76) := 11$

spm(76,77) := 6$

spm(76,78) := 1$

spm(77,75) := 1$

spm(77,76) := 6$

spm(77,77) := 11$

spm(77,78) := 6$

spm(77,79) := 1$

spm(78,76) := 1$

spm(78,77) := 6$

spm(78,78) := 11$

spm(78,79) := 6$

spm(78,80) := 1$

spm(79,77) := 1$

spm(79,78) := 6$

spm(79,79) := 11$

spm(79,80) := 6$

spm(79,81) := 1$

spm(80,78) := 1$

spm(80,79) := 6$

spm(80,80) := 11$

spm(80,81) := 6$

spm(80,82) := 1$

spm(81,79) := 1$

spm(81,80) := 6$

spm(81,81) := 11$

spm(81,82) := 6$

spm(81,83) := 1$

spm(82,80) := 1$

spm(82,81) := 6$

spm(82,82) := 11$

spm(82,83) := 6$

spm(82,84) := 1$

spm(83,81) := 1$

spm(83,82) := 6$

spm(83,83) := 11$

spm(83,84) := 6$

spm(83,85) := 1$

spm(84,82) := 1$

spm(84,83) := 6$

spm(84,84) := 11$

spm(84,85) := 6$

spm(84,86) := 1$

spm(85,83) := 1$

spm(85,84) := 6$

spm(85,85) := 11$

spm(85,86) := 6$

spm(85,87) := 1$

spm(86,84) := 1$

spm(86,85) := 6$

spm(86,86) := 11$

spm(86,87) := 6$

spm(86,88) := 1$

spm(87,85) := 1$

spm(87,86) := 6$

spm(87,87) := 11$

spm(87,88) := 6$

spm(87,89) := 1$

spm(88,86) := 1$

spm(88,87) := 6$

spm(88,88) := 11$

spm(88,89) := 6$

spm(88,90) := 1$

spm(89,87) := 1$

spm(89,88) := 6$

spm(89,89) := 11$

spm(89,90) := 6$

spm(89,91) := 1$

spm(90,88) := 1$

spm(90,89) := 6$

spm(90,90) := 11$

spm(90,91) := 6$

spm(90,92) := 1$

spm(91,89) := 1$

spm(91,90) := 6$

spm(91,91) := 11$

spm(91,92) := 6$

spm(91,93) := 1$

spm(92,90) := 1$

spm(92,91) := 6$

spm(92,92) := 11$

spm(92,93) := 6$

spm(92,94) := 1$

spm(93,91) := 1$

spm(93,92) := 6$

spm(93,93) := 11$

spm(93,94) := 6$

spm(93,95) := 1$

spm(94,92) := 1$

spm(94,93) := 6$

spm(94,94) := 11$

spm(94,95) := 6$

spm(94,96) := 1$

spm(95,93) := 1$

spm(95,94) := 6$

spm(95,95) := 11$

spm(95,96) := 6$

spm(95,97) := 1$

spm(96,94) := 1$

spm(96,95) := 6$

spm(96,96) := 11$

spm(96,97) := 6$

spm(96,98) := 1$

spm(97,95) := 1$

spm(97,96) := 6$

spm(97,97) := 11$

spm(97,98) := 6$

spm(97,99) := 1$

spm(98,96) := 1$

spm(98,97) := 6$

spm(98,98) := 11$

spm(98,99) := 6$

spm(98,100) := 1$

spm(99,97) := 1$

spm(99,98) := 6$

spm(99,99) := 11$

spm(99,100) := 6$

spm(100,98) := 1$

spm(100,99) := 6$

spm(100,100) := 10$


mat5^2$



det(mat1);


3840

det(mat4);


 5
x

trace(mat1);


30

trace(mat4);


5*x


rank(mat1);


5

rank mat5;


100


tp(mat3);



spm(1,1) := 1$

spm(1,2) := 3$

spm(2,1) := 2$

spm(2,2) := 4$

spm(3,3) := 1$

spm(3,4) := 3$

spm(4,3) := 2$

spm(4,4) := 4$

spm(5,5) := 1$

spm(5,6) := 3$

spm(6,5) := 2$

spm(6,6) := 4$


spmateigen(mat3,eta);


     2
{{eta  - 5*eta - 2,3,

               2*arbcomplex(1)*(eta + 1)
  spm(1,1) := ---------------------------$
                       5*eta + 1

  spm(2,1) := arbcomplex(1)$

               2*arbcomplex(2)*(eta + 1)
  spm(3,1) := ---------------------------$
                       5*eta + 1

  spm(4,1) := arbcomplex(2)$

               2*arbcomplex(3)*(eta + 1)
  spm(5,1) := ---------------------------$
                       5*eta + 1

  spm(6,1) := arbcomplex(3)$
  }}


% Next, tests for the Linear Algebra Package for Sparse Matrices.

%Basic matrix manipulations.

spadd_columns(mat1,1,2,5*y);



spm(1,1) := 2$

spm(1,2) := 10*y$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$

spadd_rows(mat1,1,2,x);



spm(1,1) := 2$

spm(2,1) := 2*x$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$


spadd_to_columns(mat1,3,1000);



spm(1,1) := 2$

spm(1,3) := 1000$

spm(2,2) := 4$

spm(2,3) := 1000$

spm(3,3) := 1006$

spm(4,3) := 1000$

spm(4,4) := 8$

spm(5,3) := 1000$

spm(5,5) := 10$

spadd_to_columns(mat5,{1,2,3},y)$


spadd_to_rows(mat1,2,1000);



spm(1,1) := 2$

spm(2,1) := 1000$

spm(2,2) := 1004$

spm(2,3) := 1000$

spm(2,4) := 1000$

spm(2,5) := 1000$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$

spadd_to_rows(mat5,{1,2,3},x)$



spaugment_columns(mat3,2);



spm(1,1) := 2$

spm(2,1) := 4$
  
spaugment_columns(mat1,{1,2,5});



spm(1,1) := 2$

spm(2,2) := 4$

spm(5,3) := 10$

spstack_rows(mat1,3);



spm(1,3) := 6$
  
spstack_rows(mat1,{1,3,5});



spm(1,1) := 2$

spm(2,3) := 6$

spm(3,5) := 10$
  

spchar_poly(mat1,x);


 5       4        3         2
x  - 30*x  + 340*x  - 1800*x  + 4384*x - 3840


spcol_dim(mat2);


100

sprow_dim(mat1);


5


spcopy_into(mat7,mat1,2,2);



spm(1,1) := 2$

spm(2,2) := b$

spm(2,3) := c$

spm(3,2) := a$

spm(3,3) := b$

spm(3,4) := c$

spm(4,3) := a$

spm(4,4) := b$

spm(4,5) := c$

spm(5,4) := a$

spm(5,5) := b$

spcopy_into(mat7,mat1,5,5);

***** Error in spcopy_into: the matrix

spm(1,1) := b$

spm(1,2) := c$

spm(2,1) := a$

spm(2,2) := b$

spm(2,3) := c$

spm(3,2) := a$

spm(3,3) := b$

spm(3,4) := c$

spm(4,3) := a$

spm(4,4) := b$
      does not fit into

spm(1,1) := 2$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$
      at position 5,5.

spcopy_into(zz1,mat1,1,1);



spm(1,1) := 1$

spm(1,2) := 2$

spm(2,1) := 3$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$


spdiagonal(3);



spm(1,1) := 3$

% spdiagonal can take both a list of arguments or just the arguments.
spdiagonal({mat2,mat5})$


spdiagonal(mat2,mat5)$


% spdiagonal can also take a mixture of 'sparse and 'matrix types.
spdiagonal(zz1,mat4,zz1);



spm(1,1) := 1$

spm(1,2) := 2$

spm(2,1) := 3$

spm(2,2) := 4$

spm(3,3) := x$

spm(4,4) := x$

spm(5,5) := x$

spm(6,6) := x$

spm(7,7) := x$

spm(8,8) := 1$

spm(8,9) := 2$

spm(9,8) := 3$

spm(9,9) := 4$


spextend(mat1,3,2,x);



spm(1,1) := 2$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 10$

spm(6,6) := x$

spm(6,7) := x$

spm(7,6) := x$

spm(7,7) := x$

spm(8,6) := x$

spm(8,7) := x$


spfind_companion(mat5,x);


 98   2
x  *(x  - 3*x - 1)


spget_columns(mat1,1);


{

 spm(1,1) := 2$
 }

spget_columns(mat1,{1,2});


{

 spm(1,1) := 2$
 ,

 spm(2,1) := 4$
 }

spget_rows(mat1,3);


{

 spm(1,3) := 6$
 }

spget_rows(mat1,{1,3});


{

 spm(1,1) := 2$
 ,

 spm(1,3) := 6$
 }


sphermitian_tp(mat6);



spm(1,1) :=  - i + 1$

spm(1,2) := 4$

spm(1,3) := 1$

spm(2,1) :=  - i + 2$

spm(2,2) := 5$

spm(2,3) :=  - i$

spm(3,1) :=  - i + 3$

spm(3,2) := 2$

spm(4,4) :=  - i + 1$

spm(4,5) := 4$

spm(4,6) := 1$

spm(5,4) :=  - i + 2$

spm(5,5) := 5$

spm(5,6) :=  - i$

spm(6,4) :=  - i + 3$

spm(6,5) := 2$


% matrix_augment and matrix_stack can take both a list of arguments 
% or just the arguments.

spmatrix_augment({mat1,mat1});



spm(1,1) := 2$

spm(1,6) := 2$

spm(2,2) := 4$

spm(2,7) := 4$

spm(3,3) := 6$

spm(3,8) := 6$

spm(4,4) := 8$

spm(4,9) := 8$

spm(5,5) := 10$

spm(5,10) := 10$

spmatrix_augment(mat5,mat2,mat5)$


spmatrix_stack(mat2,mat2)$



spminor(mat1,2,3);



spm(1,1) := 2$

spm(3,3) := 8$

spm(4,4) := 10$


spmult_columns(mat1,3,y);



spm(1,1) := 2$

spm(2,2) := 4$

spm(3,3) := 6*y$

spm(4,4) := 8$

spm(5,5) := 10$

spmult_columns(mat2,{2,3,4},100)$


spmult_rows(mat2,2,x);



spm(1,1) := 1$

spm(2,2) := 2*x$

spm(3,3) := 3$

spm(4,4) := 4$

spm(5,5) := 5$

spm(6,6) := 6$

spm(7,7) := 7$

spm(8,8) := 8$

spm(9,9) := 9$

spm(10,10) := 10$

spm(11,11) := 11$

spm(12,12) := 12$

spm(13,13) := 13$

spm(14,14) := 14$

spm(15,15) := 15$

spm(16,16) := 16$

spm(17,17) := 17$

spm(18,18) := 18$

spm(19,19) := 19$

spm(20,20) := 20$

spm(21,21) := 21$

spm(22,22) := 22$

spm(23,23) := 23$

spm(24,24) := 24$

spm(25,25) := 25$

spm(26,26) := 26$

spm(27,27) := 27$

spm(28,28) := 28$

spm(29,29) := 29$

spm(30,30) := 30$

spm(31,31) := 31$

spm(32,32) := 32$

spm(33,33) := 33$

spm(34,34) := 34$

spm(35,35) := 35$

spm(36,36) := 36$

spm(37,37) := 37$

spm(38,38) := 38$

spm(39,39) := 39$

spm(40,40) := 40$

spm(41,41) := 41$

spm(42,42) := 42$

spm(43,43) := 43$

spm(44,44) := 44$

spm(45,45) := 45$

spm(46,46) := 46$

spm(47,47) := 47$

spm(48,48) := 48$

spm(49,49) := 49$

spm(50,50) := 50$

spm(51,51) := 51$

spm(52,52) := 52$

spm(53,53) := 53$

spm(54,54) := 54$

spm(55,55) := 55$

spm(56,56) := 56$

spm(57,57) := 57$

spm(58,58) := 58$

spm(59,59) := 59$

spm(60,60) := 60$

spm(61,61) := 61$

spm(62,62) := 62$

spm(63,63) := 63$

spm(64,64) := 64$

spm(65,65) := 65$

spm(66,66) := 66$

spm(67,67) := 67$

spm(68,68) := 68$

spm(69,69) := 69$

spm(70,70) := 70$

spm(71,71) := 71$

spm(72,72) := 72$

spm(73,73) := 73$

spm(74,74) := 74$

spm(75,75) := 75$

spm(76,76) := 76$

spm(77,77) := 77$

spm(78,78) := 78$

spm(79,79) := 79$

spm(80,80) := 80$

spm(81,81) := 81$

spm(82,82) := 82$

spm(83,83) := 83$

spm(84,84) := 84$

spm(85,85) := 85$

spm(86,86) := 86$

spm(87,87) := 87$

spm(88,88) := 88$

spm(89,89) := 89$

spm(90,90) := 90$

spm(91,91) := 91$

spm(92,92) := 92$

spm(93,93) := 93$

spm(94,94) := 94$

spm(95,95) := 95$

spm(96,96) := 96$

spm(97,97) := 97$

spm(98,98) := 98$

spm(99,99) := 99$

spm(100,100) := 100$

spmult_rows(mat1,{1,3,5},10);



spm(1,1) := 20$

spm(2,2) := 4$

spm(3,3) := 60$

spm(4,4) := 8$

spm(5,5) := 100$


sppivot(mat3,3,3);



spm(1,1) := 1$

spm(1,2) := 2$

spm(2,1) := 3$

spm(2,2) := 4$

spm(3,3) := 1$

spm(3,4) := 2$

spm(4,4) := -2$

spm(5,5) := 1$

spm(5,6) := 2$

spm(6,5) := 3$

spm(6,6) := 4$

sprows_pivot(mat3,1,1,{2,4});



spm(1,1) := 1$

spm(1,2) := 2$

spm(2,2) := -2$

spm(3,3) := 1$

spm(3,4) := 2$

spm(4,3) := 3$

spm(4,4) := 4$

spm(5,5) := 1$

spm(5,6) := 2$

spm(6,5) := 3$

spm(6,6) := 4$


spremove_columns(mat1,3);



spm(1,1) := 2$

spm(2,2) := 4$

spm(4,3) := 8$

spm(5,4) := 10$

spremove_columns(mat3,{2,3,4});



spm(1,1) := 1$

spm(2,1) := 3$

spm(5,2) := 1$

spm(5,3) := 2$

spm(6,2) := 3$

spm(6,3) := 4$

spremove_rows(mat1,2);



spm(1,1) := 2$

spm(2,3) := 6$

spm(3,4) := 8$

spm(4,5) := 10$

spremove_rows(mat2,{1,3})$


spremove_rows(mat1,{1,2,3,4,5});

***** Warning in spremove_rows:
      all the rows have been removed. Returning nil.


spswap_cols(mat1,2,4);



spm(1,1) := 2$

spm(2,4) := 4$

spm(3,3) := 6$

spm(4,2) := 8$

spm(5,5) := 10$

spswap_rows(mat5,1,2)$


spswap_entries(mat1,{1,1},{5,5});



spm(1,1) := 10$

spm(2,2) := 4$

spm(3,3) := 6$

spm(4,4) := 8$

spm(5,5) := 2$




% Constructors - functions that create matrices.

spband_matrix(x,500)$


spband_matrix({x,y,z},6000)$



spblock_matrix(1,2,{mat1,mat1});



spm(1,1) := 2$

spm(1,6) := 2$

spm(2,2) := 4$

spm(2,7) := 4$

spm(3,3) := 6$

spm(3,8) := 6$

spm(4,4) := 8$

spm(4,9) := 8$

spm(5,5) := 10$

spm(5,10) := 10$

spblock_matrix(2,3,{mat3,mat6,mat3,mat6,mat3,mat6});



spm(1,1) := 1$

spm(1,2) := 2$

spm(1,7) := i + 1$

spm(1,8) := i + 2$

spm(1,9) := i + 3$

spm(1,13) := 1$

spm(1,14) := 2$

spm(2,1) := 3$

spm(2,2) := 4$

spm(2,7) := 4$

spm(2,8) := 5$

spm(2,9) := 2$

spm(2,13) := 3$

spm(2,14) := 4$

spm(3,3) := 1$

spm(3,4) := 2$

spm(3,7) := 1$

spm(3,8) := i$

spm(3,15) := 1$

spm(3,16) := 2$

spm(4,3) := 3$

spm(4,4) := 4$

spm(4,10) := i + 1$

spm(4,11) := i + 2$

spm(4,12) := i + 3$

spm(4,15) := 3$

spm(4,16) := 4$

spm(5,5) := 1$

spm(5,6) := 2$

spm(5,10) := 4$

spm(5,11) := 5$

spm(5,12) := 2$

spm(5,17) := 1$

spm(5,18) := 2$

spm(6,5) := 3$

spm(6,6) := 4$

spm(6,10) := 1$

spm(6,11) := i$

spm(6,17) := 3$

spm(6,18) := 4$

spm(7,1) := i + 1$

spm(7,2) := i + 2$

spm(7,3) := i + 3$

spm(7,7) := 1$

spm(7,8) := 2$

spm(7,13) := i + 1$

spm(7,14) := i + 2$

spm(7,15) := i + 3$

spm(8,1) := 4$

spm(8,2) := 5$

spm(8,3) := 2$

spm(8,7) := 3$

spm(8,8) := 4$

spm(8,13) := 4$

spm(8,14) := 5$

spm(8,15) := 2$

spm(9,1) := 1$

spm(9,2) := i$

spm(9,9) := 1$

spm(9,10) := 2$

spm(9,13) := 1$

spm(9,14) := i$

spm(10,4) := i + 1$

spm(10,5) := i + 2$

spm(10,6) := i + 3$

spm(10,9) := 3$

spm(10,10) := 4$

spm(10,16) := i + 1$

spm(10,17) := i + 2$

spm(10,18) := i + 3$

spm(11,4) := 4$

spm(11,5) := 5$

spm(11,6) := 2$

spm(11,11) := 1$

spm(11,12) := 2$

spm(11,16) := 4$

spm(11,17) := 5$

spm(11,18) := 2$

spm(12,4) := 1$

spm(12,5) := i$

spm(12,11) := 3$

spm(12,12) := 4$

spm(12,16) := 1$

spm(12,17) := i$


spchar_matrix(mat3,x);



spm(1,1) := x - 1$

spm(1,2) := -2$

spm(2,1) := -3$

spm(2,2) := x - 4$

spm(3,3) := x - 1$

spm(3,4) := -2$

spm(4,3) := -3$

spm(4,4) := x - 4$

spm(5,5) := x - 1$

spm(5,6) := -2$

spm(6,5) := -3$

spm(6,6) := x - 4$


cfmat := spcoeff_matrix({y+4*+-5*w=10,y-z=20,y+4+3*z,w+x+50});


{

 spm(1,1) := 1$

 spm(1,2) := -20$

 spm(2,1) := 1$

 spm(2,3) := -1$

 spm(3,1) := 1$

 spm(3,3) := 3$

 spm(4,2) := 1$

 spm(4,4) := 1$
 ,

 spm(1,1) := y$

 spm(2,1) := w$

 spm(3,1) := z$

 spm(4,1) := x$
 ,

 spm(1,1) := 10$

 spm(2,1) := 20$

 spm(3,1) := -4$

 spm(4,1) := -50$
cfmat :=  }

first cfmat * second cfmat;



spm(1,1) :=  - 20*w + y$

spm(2,1) := y - z$

spm(3,1) := y + 3*z$

spm(4,1) := w + x$

third cfmat;



spm(1,1) := 10$

spm(2,1) := 20$

spm(3,1) := -4$

spm(4,1) := -50$


spcompanion(poly,x);



spm(1,7) := -12$

spm(2,1) := 1$

spm(3,2) := 1$

spm(4,3) := 1$

spm(4,7) := -5$

spm(5,4) := 1$

spm(5,7) := -4$

spm(6,5) := 1$

spm(6,7) := -1$

spm(7,6) := 1$


sphessian(poly1,{w,x,y,z});



spm(2,2) := 2$

               2    3
spm(2,3) := 3*y  + z  + 1$

                 2
spm(2,4) := 3*y*z $

               2    3
spm(3,2) := 3*y  + z  + 1$

spm(3,3) := 6*x*y$

                 2
spm(3,4) := 3*x*z $

                 2
spm(4,2) := 3*y*z $

                 2
spm(4,3) := 3*x*z $

spm(4,4) := 6*x*y*z$


spjacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z});



               3
spm(1,2) := 4*x $

             2
spm(2,2) := y $

spm(2,3) := 2*x*y$

               3
spm(3,2) := y*z $

               3
spm(3,3) := x*z $

                   2
spm(3,4) := 3*x*y*z $


spjordan_block(x,500)$



spmake_identity(1000)$



on rounded;

 % makes output easier to read.
ch := spcholesky(mat1);


{

 spm(1,1) := 1.41421356237$

 spm(2,2) := 2.0$

 spm(3,3) := 2.44948974278$

 spm(4,4) := 2.82842712475$

 spm(5,5) := 3.16227766017$
 ,

 spm(1,1) := 1.41421356237$

 spm(2,2) := 2.0$

 spm(3,3) := 2.44948974278$

 spm(4,4) := 2.82842712475$

 spm(5,5) := 3.16227766017$
ch :=  }

tp first ch - second ch;


"Empty Matrix"

tmp := first ch * second ch;



spm(1,1) := 2.0$

spm(2,2) := 4.0$

spm(3,3) := 6.0$

spm(4,4) := 8.0$

spm(5,5) := 10.0$
tmp := 

tmp - mat1;


"Empty Matrix"

off rounded;



% The gram schmidt functions takes a list of vectors.
% These vectors are matrices of type 'sparse with column dimension 1.

%Create the "vectors".
sparse a(4,1);


sparse b(4,1);


sparse c(4,1);


sparse d(4,1);



%Fill the "vectors" with data.
a(1,1):=1;


a(1,1) := 1

b(1,1):=1;


b(1,1) := 1

b(2,1):=1;


b(2,1) := 1

c(1,1):=1;


c(1,1) := 1

c(2,1):=1;


c(2,1) := 1

c(3,1):=1;


c(3,1) := 1

d(1,1):=1;


d(1,1) := 1

d(2,1):=1;


d(2,1) := 1

d(3,1):=1;


d(3,1) := 1

d(4,1):=1;


d(4,1) := 1


spgram_schmidt({{a},{b},{c},{d}});


{

 spm(1,1) := 1$
 ,

 spm(2,1) := 1$
 ,

 spm(3,1) := 1$
 ,

 spm(4,1) := 1$
 }


on rounded;

 % again, makes large quotients a bit more readable.
% The algorithm used for splu_decom sometimes swaps the rows of the 
% input matrix so that (given matrix A, splu_decom(A) = {L,U,vec}), 
% we find L*U does not equal A but a row equivalent of it. The call 
% spconvert(A,vec) will return this row equivalent 
% (ie: L*U = convert(A,vec)).
lu := splu_decom(mat5)$


tmp := first lu * second lu$


tmp1 := spconvert(mat5,third lu);



spm(1,1) := 3$

spm(1,2) := 1$

spm(2,1) := 1$

spm(2,2) := 3$

spm(2,3) := 1$

spm(3,2) := 1$

spm(3,3) := 3$

spm(3,4) := 1$

spm(4,3) := 1$

spm(4,4) := 3$

spm(4,5) := 1$

spm(5,4) := 1$

spm(5,5) := 3$

spm(5,6) := 1$

spm(6,5) := 1$

spm(6,6) := 3$

spm(6,7) := 1$

spm(7,6) := 1$

spm(7,7) := 3$

spm(7,8) := 1$

spm(8,7) := 1$

spm(8,8) := 3$

spm(8,9) := 1$

spm(9,8) := 1$

spm(9,9) := 3$

spm(9,10) := 1$

spm(10,9) := 1$

spm(10,10) := 3$

spm(10,11) := 1$

spm(11,10) := 1$

spm(11,11) := 3$

spm(11,12) := 1$

spm(12,11) := 1$

spm(12,12) := 3$

spm(12,13) := 1$

spm(13,12) := 1$

spm(13,13) := 3$

spm(13,14) := 1$

spm(14,13) := 1$

spm(14,14) := 3$

spm(14,15) := 1$

spm(15,14) := 1$

spm(15,15) := 3$

spm(15,16) := 1$

spm(16,15) := 1$

spm(16,16) := 3$

spm(16,17) := 1$

spm(17,16) := 1$

spm(17,17) := 3$

spm(17,18) := 1$

spm(18,17) := 1$

spm(18,18) := 3$

spm(18,19) := 1$

spm(19,18) := 1$

spm(19,19) := 3$

spm(19,20) := 1$

spm(20,19) := 1$

spm(20,20) := 3$

spm(20,21) := 1$

spm(21,20) := 1$

spm(21,21) := 3$

spm(21,22) := 1$

spm(22,21) := 1$

spm(22,22) := 3$

spm(22,23) := 1$

spm(23,22) := 1$

spm(23,23) := 3$

spm(23,24) := 1$

spm(24,23) := 1$

spm(24,24) := 3$

spm(24,25) := 1$

spm(25,24) := 1$

spm(25,25) := 3$

spm(25,26) := 1$

spm(26,25) := 1$

spm(26,26) := 3$

spm(26,27) := 1$

spm(27,26) := 1$

spm(27,27) := 3$

spm(27,28) := 1$

spm(28,27) := 1$

spm(28,28) := 3$

spm(28,29) := 1$

spm(29,28) := 1$

spm(29,29) := 3$

spm(29,30) := 1$

spm(30,29) := 1$

spm(30,30) := 3$

spm(30,31) := 1$

spm(31,30) := 1$

spm(31,31) := 3$

spm(31,32) := 1$

spm(32,31) := 1$

spm(32,32) := 3$

spm(32,33) := 1$

spm(33,32) := 1$

spm(33,33) := 3$

spm(33,34) := 1$

spm(34,33) := 1$

spm(34,34) := 3$

spm(34,35) := 1$

spm(35,34) := 1$

spm(35,35) := 3$

spm(35,36) := 1$

spm(36,35) := 1$

spm(36,36) := 3$

spm(36,37) := 1$

spm(37,36) := 1$

spm(37,37) := 3$

spm(37,38) := 1$

spm(38,37) := 1$

spm(38,38) := 3$

spm(38,39) := 1$

spm(39,38) := 1$

spm(39,39) := 3$

spm(39,40) := 1$

spm(40,39) := 1$

spm(40,40) := 3$

spm(40,41) := 1$

spm(41,40) := 1$

spm(41,41) := 3$

spm(41,42) := 1$

spm(42,41) := 1$

spm(42,42) := 3$

spm(42,43) := 1$

spm(43,42) := 1$

spm(43,43) := 3$

spm(43,44) := 1$

spm(44,43) := 1$

spm(44,44) := 3$

spm(44,45) := 1$

spm(45,44) := 1$

spm(45,45) := 3$

spm(45,46) := 1$

spm(46,45) := 1$

spm(46,46) := 3$

spm(46,47) := 1$

spm(47,46) := 1$

spm(47,47) := 3$

spm(47,48) := 1$

spm(48,47) := 1$

spm(48,48) := 3$

spm(48,49) := 1$

spm(49,48) := 1$

spm(49,49) := 3$

spm(49,50) := 1$

spm(50,49) := 1$

spm(50,50) := 3$

spm(50,51) := 1$

spm(51,50) := 1$

spm(51,51) := 3$

spm(51,52) := 1$

spm(52,51) := 1$

spm(52,52) := 3$

spm(52,53) := 1$

spm(53,52) := 1$

spm(53,53) := 3$

spm(53,54) := 1$

spm(54,53) := 1$

spm(54,54) := 3$

spm(54,55) := 1$

spm(55,54) := 1$

spm(55,55) := 3$

spm(55,56) := 1$

spm(56,55) := 1$

spm(56,56) := 3$

spm(56,57) := 1$

spm(57,56) := 1$

spm(57,57) := 3$

spm(57,58) := 1$

spm(58,57) := 1$

spm(58,58) := 3$

spm(58,59) := 1$

spm(59,58) := 1$

spm(59,59) := 3$

spm(59,60) := 1$

spm(60,59) := 1$

spm(60,60) := 3$

spm(60,61) := 1$

spm(61,60) := 1$

spm(61,61) := 3$

spm(61,62) := 1$

spm(62,61) := 1$

spm(62,62) := 3$

spm(62,63) := 1$

spm(63,62) := 1$

spm(63,63) := 3$

spm(63,64) := 1$

spm(64,63) := 1$

spm(64,64) := 3$

spm(64,65) := 1$

spm(65,64) := 1$

spm(65,65) := 3$

spm(65,66) := 1$

spm(66,65) := 1$

spm(66,66) := 3$

spm(66,67) := 1$

spm(67,66) := 1$

spm(67,67) := 3$

spm(67,68) := 1$

spm(68,67) := 1$

spm(68,68) := 3$

spm(68,69) := 1$

spm(69,68) := 1$

spm(69,69) := 3$

spm(69,70) := 1$

spm(70,69) := 1$

spm(70,70) := 3$

spm(70,71) := 1$

spm(71,70) := 1$

spm(71,71) := 3$

spm(71,72) := 1$

spm(72,71) := 1$

spm(72,72) := 3$

spm(72,73) := 1$

spm(73,72) := 1$

spm(73,73) := 3$

spm(73,74) := 1$

spm(74,73) := 1$

spm(74,74) := 3$

spm(74,75) := 1$

spm(75,74) := 1$

spm(75,75) := 3$

spm(75,76) := 1$

spm(76,75) := 1$

spm(76,76) := 3$

spm(76,77) := 1$

spm(77,76) := 1$

spm(77,77) := 3$

spm(77,78) := 1$

spm(78,77) := 1$

spm(78,78) := 3$

spm(78,79) := 1$

spm(79,78) := 1$

spm(79,79) := 3$

spm(79,80) := 1$

spm(80,79) := 1$

spm(80,80) := 3$

spm(80,81) := 1$

spm(81,80) := 1$

spm(81,81) := 3$

spm(81,82) := 1$

spm(82,81) := 1$

spm(82,82) := 3$

spm(82,83) := 1$

spm(83,82) := 1$

spm(83,83) := 3$

spm(83,84) := 1$

spm(84,83) := 1$

spm(84,84) := 3$

spm(84,85) := 1$

spm(85,84) := 1$

spm(85,85) := 3$

spm(85,86) := 1$

spm(86,85) := 1$

spm(86,86) := 3$

spm(86,87) := 1$

spm(87,86) := 1$

spm(87,87) := 3$

spm(87,88) := 1$

spm(88,87) := 1$

spm(88,88) := 3$

spm(88,89) := 1$

spm(89,88) := 1$

spm(89,89) := 3$

spm(89,90) := 1$

spm(90,89) := 1$

spm(90,90) := 3$

spm(90,91) := 1$

spm(91,90) := 1$

spm(91,91) := 3$

spm(91,92) := 1$

spm(92,91) := 1$

spm(92,92) := 3$

spm(92,93) := 1$

spm(93,92) := 1$

spm(93,93) := 3$

spm(93,94) := 1$

spm(94,93) := 1$

spm(94,94) := 3$

spm(94,95) := 1$

spm(95,94) := 1$

spm(95,95) := 3$

spm(95,96) := 1$

spm(96,95) := 1$

spm(96,96) := 3$

spm(96,97) := 1$

spm(97,96) := 1$

spm(97,97) := 3$

spm(97,98) := 1$

spm(98,97) := 1$

spm(98,98) := 3$

spm(98,99) := 1$

spm(99,98) := 1$

spm(99,99) := 3$

spm(99,100) := 1$

spm(100,99) := 1$

spm(100,100) := 3$
tmp1 := 

tmp - tmp1;


"Empty Matrix"

% and the complex case..
on complex;


*** Domain mode rounded changed to complex-rounded 

lu1 := splu_decom(mat6);


{

 spm(1,1) := 1$

 spm(2,1) := 4$

 spm(2,2) := 5 - 4*i$

 spm(3,1) := 1 + i$

 spm(3,2) := 3$

 spm(3,3) := 2.26829268293 + 0.414634146341*i$

 spm(4,4) := 1$

 spm(5,4) := 4$

 spm(5,5) := 5 - 4*i$

 spm(6,4) := 1 + i$

 spm(6,5) := 3$

 spm(6,6) := 2.26829268293 + 0.414634146341*i$
 ,

 spm(1,1) := 1$

 spm(1,2) := i$

 spm(2,2) := 1$

 spm(2,3) := 0.243902439024 + 0.19512195122*i$

 spm(3,3) := 1$

 spm(4,4) := 1$

 spm(4,5) := i$

 spm(5,5) := 1$

 spm(5,6) := 0.243902439024 + 0.19512195122*i$

 spm(6,6) := 1$
lu1 :=  ,[3,2,3,6,5,6]}

mat6;



spm(1,1) := i + 1$

spm(1,2) := i + 2$

spm(1,3) := i + 3$

spm(2,1) := 4$

spm(2,2) := 5$

spm(2,3) := 2$

spm(3,1) := 1$

spm(3,2) := i$

spm(4,4) := i + 1$

spm(4,5) := i + 2$

spm(4,6) := i + 3$

spm(5,4) := 4$

spm(5,5) := 5$

spm(5,6) := 2$

spm(6,4) := 1$

spm(6,5) := i$

tmp := first lu1 * second lu1;



spm(1,1) := 1$

spm(1,2) := i$

spm(2,1) := 4$

spm(2,2) := 5$

spm(2,3) := 2.0$

spm(3,1) := 1 + i$

spm(3,2) := 2 + i$

spm(3,3) := 3.0 + i$

spm(4,4) := 1$

spm(4,5) := i$

spm(5,4) := 4$

spm(5,5) := 5$

spm(5,6) := 2.0$

spm(6,4) := 1 + i$

spm(6,5) := 2 + i$

spm(6,6) := 3.0 + i$
tmp := 

tmp1 := spconvert(mat6,third lu1);



spm(1,1) := 1$

spm(1,2) := i$

spm(2,1) := 4$

spm(2,2) := 5$

spm(2,3) := 2$

spm(3,1) := i + 1$

spm(3,2) := i + 2$

spm(3,3) := i + 3$

spm(4,4) := 1$

spm(4,5) := i$

spm(5,4) := 4$

spm(5,5) := 5$

spm(5,6) := 2$

spm(6,4) := i + 1$

spm(6,5) := i + 2$

spm(6,6) := i + 3$
tmp1 := 

tmp - tmp1;


"Empty Matrix"

off complex;


*** Domain mode complex-rounded changed to rounded 


mat3inv := sppseudo_inverse(mat3);



spm(1,1) :=  - 2.0$

spm(1,2) := 1$

spm(2,1) := 1.5$

spm(2,2) :=  - 0.5$

spm(3,3) :=  - 2.0$

spm(3,4) := 1$

spm(4,3) := 1.5$

spm(4,4) :=  - 0.5$

spm(5,5) :=  - 2.0$

spm(5,6) := 1$

spm(6,5) := 1.5$

spm(6,6) :=  - 0.5$
mat3inv := 

mat3 * mat3inv;



spm(1,1) := 1$

spm(2,2) := 1$

spm(3,3) := 1$

spm(4,4) := 1$

spm(5,5) := 1$

spm(6,6) := 1$



% Predicates.

matrixp(mat1);


t

matrixp(poly);



squarep(mat2);


t

squarep(mat3);


t


symmetricp(mat1);


t

symmetricp(mat3);



sparsematp(mat1);


t

sparsematp(poly);



off rounded;



end;

4: 4: 4: 4: 4: 4: 4: 4: 4: 

Time for test: 2770 ms, plus GC time: 200 ms

5: 5: 
Quitting
Mon Jan  4 00:05:46 MET 1999
