Bill Allombert on Wed, 03 Apr 2013 22:21:27 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: slice of matrices


On Tue, Apr 02, 2013 at 11:21:29AM -0400, jacques G wrote:
> 2. The problem with the proposed mixed types of slices is that one has to check 
> the type before some operations. 

I should clarify that the proposal never require to check the type of the
result, since it is defined syntactically:

M[a,...] will always be a t_VEC and
M[...,a] will always be a t_COL, the rest being always a t_MAT.

> Not difficult, but clumsy. Here is an apllication,
> dealing with (semi) infinite matrices represented by finite arrays of different 
> sizes that need to be ADDED and reduced to NONZERO terms. 
> Would slices work as inputs here, and simplify the code of "sz" ?
> 
> row(M) = matsize(Mat(M))[1]
> col(M) = matsize(Mat(M))[2]

If this matters, note that matsize() also work correctly on t_COL/t_VEC, so 
using Mat(M) for thoses types is spurious.

You can rewrite sz as follow:

sz(M=[-3,0;2,0;0,0]) = { my([K, J] = matsize(M));
              while( K>0 && !M[K,], K-- ); while( J>0 && !M[,J], J-- );
              M[1..K,1..J] }

Cheers,
Bill.