Bill Allombert on Sun, 07 Mar 2004 20:26:23 +0100


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

Re: Matrix initialization in Library mode


On Wed, Mar 03, 2004 at 03:47:19PM +0100, Mikael Johansson wrote:
> So, once I've allocated my matrix, say
> 
>     GEN dell=cgetg(first_size+1,t_MAT);
>     for(long j=1; j<=first_size; j++) {
>       dell[j]=lgetg(second_size+1,t_COL);
> 
> how do I actually fiddle with the elements? Upon trying to
> 
>       dell[first_index+1][second_index+1]=stoi(value);
> 
> all I receive is a compile error:
> homology.c:220: invalid types `long int[int]' for array subscript
[Are you using a C++ compiler ? This warning seems odd.]

You have to cast data correctly. The customary way is to do
mael(dell,first_index+1,second_index+1)=(long) stoi(value)
or
coeff(dell,second_index+1,first_index+1)=(long) stoi(value)

where mael and coeff are macros.

Though it you data are small integers, you are likely to be better off
using

     GEN dell=cgetg(first_size+1,t_VEC);
     for(long j=1; j<=first_size; j++) {
       dell[j]=lgetg(second_size+1,t_VECSALL);

and use the Flv_/Flm_ interface.

Cheers,
Bill.