Re: question on collecting t_MAT
[email protected] Fri, 22 May 2026 14:06:56 +0200
| Newsgroups | gmane.comp.mathematics.pari.devel |
|---|---|
| Message-ID | <[email protected]> |
On 2026-05-22 11:22, Bill Allombert wrote: > On Fri, May 22, 2026 at 10:33:12AM +0200, [email protected] > wrote: >> Doc says that "Matrices are internally represented as a vector of >> columns". >> But shouldn't below return a 2-element vector of "t_MAT" entries? >> >> ? [type(A)|e<-[1,2];A<-matrix(2,2,x,y,e)] >> ["t_COL", "t_COL", "t_COL", "t_COL"] > > This is correct, this is the same as > [type(A)|e<-[1,2];A<-[[e,e]~,[e,e]~]] > >> If not, how to modify to result in ["t_MAT", "t_MAT"] ? > > Add brackets: > > ? [type(A)|e<-[1,2];A<-[matrix(2,2,x,y,e)]] > %2 = ["t_MAT","t_MAT"] > > Cheers, > Bill. > Thanks, that was my fault. For assignment workaround for "a=x" one has to use "a<-[x]". So my "A<-matrix(2,2,x,y,e)" stripped off the outer "[]" of matrix. I wanted to search for "minimal" unimodular matrix that has no 0 in A nor A^-1. For "minimal" I used "sum of squares for entries of A and A^-1. No solution with two values in S, so I used S=[1,2,3]. Minimal sum of squares is 70 (all 35+35 for A and A^-1). A single 3 at 9 positions, and a pair of 1s in distinct rows+columns. So 18 minimal solutions. $ gp -q < 3x3.gp 70 [1 2 2] [2 1 2] [2 2 3] ... [3 2 2] [2 1 2] [2 2 1] [3 2 2] [2 2 1] [2 1 2] $ The "<-[]" fix here is "A<-[[a11,a12,a13;a21,a22,a23;a31,a32,a33]]": $ cat 3x3.gp S=[1,2,3]; no0(A)=return(vecprod(concat(Vec(A)))!=0); sl2(A)=norml2(A)+norml2(A^-1); { Ms=[A|a11<-S;a12<-S;a13<-S; a21<-S;a22<-S;a23<-S; a31<-S;a32<-S;a33<-S; A<-[[a11,a12,a13;a21,a22,a23;a31,a32,a33]], matdet(A)^2==1 && no0(A^-1) ]; } Mss=vecsort(Ms,sl2); mi=sl2(Mss[1]); print(mi); foreach(Mss,A,if(sl2(A)==mi,printp(A))); $ Regards, Hermann.