[GAP Forum] matrix realization over prime field
Thomas Breuer
sam at Math.RWTH-Aachen.De
Thu Oct 24 14:12:17 BST 2019
Dear GAP Forum,
in addition to Frank's reply to Evgeny's question:
The GAP function 'BlownUpMat' is intended for this purpose,
see the GAP Reference Manual for details.
Here is an example.
gap> A:= [ [ Z(2^2), 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ];;
gap> Display( BlownUpMat( Basis( GF(4) ), A );
. 1 . .
1 1 . .
. . 1 .
. . . 1
Note that the first argument must be a basis
of the field extension F/K in question;
the submatrices in the result are the matrices
of the K-linear mappings on F that are defined
by the multiplication with elements of F.
All the best,
Thomas
On Thu, Oct 24, 2019 at 03:55:50AM +0200, Frank Lübeck wrote:
> Dear Evgeny, dear Forum,
>
> I have written such a function for a demo. It is maybe not very elegant or
> optimized but seems to work:
>
> # write elements of GF(q^d) as dxd-matrices over GF(q)
> MatricesFieldElts := function(q, d)
> local f, bas, basv, z, zmat, res, i;
> f := GF(GF(q), d);
> bas := Basis(f);
> basv := BasisVectors(bas);
> z := Z(q^d);
> zmat := List(basv*z, x-> Coefficients(bas, x));
> for i in zmat do
> ConvertToVectorRep(i, q);
> od;
> MakeImmutable(zmat);
> ConvertToMatrixRep(zmat, q);
> res := [zmat^0];
> for i in [1..q^d-2] do
> res[i+1] := res[i] * zmat;
> od;
> res[q^d] := NullMat(d, d, GF(q));
> return res;
> end;
>
> # blow up GF(q^d)-matrix over subfield of size q and degree d
> BlowUpMatrixOverSmallField := function(mat, q, d)
> local flist, z, f, tmp;
> flist := MatricesFieldElts(q, d);
> z := Z(q^d);
> f := function(c)
> if IsZero(c) then
> return flist[q^d];
> fi;
> return flist[LogFFE(c, z)+1];
> end;
> tmp := List(mat, r-> List(r, f));
> tmp := Concatenation(List(tmp, r-> List([1..d], i-> Concatenation(
> List(r, m-> m[i])))));
> ConvertToMatrixRep(tmp, q);
> return tmp;
> end;
>
> gap> A := [ [ Z(2^2), 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ];;
> gap> AA := BlowUpMatrixOverSmallField(A, 2, 2);
> <a 4x4 matrix over GF2>
> gap> Display(AA);
> . 1 . .
> 1 1 . .
> . . 1 .
> . . . 1
>
>
> Best regards,
> Frank
>
>
> On Thu, Oct 24, 2019 at 08:20:31AM +0700, Evgeny Vdovin wrote:
> > Dear all,
> >
> > Could you give me an idea, how could I realize the following procedure:
> >
> > Let A be a n*n matrix over a non-prime field GF(p^k) (say, A in GL(2,4)). I
> > need to generate matrix B of size nk*nk over GF(p) such that each k*k block
> > in it is an element in GF(p^k) realized as k*k matrices over GF(p) and the
> > element corresponds to an element of A.
> >
> > For example, if
> > A =
> > [
> > [Z(2^2),0*Z(2^2)],
> > [0*Z(2^2),Z(2^2)^(-0)]
> > ]
> > and
> > Z(2^2) =
> > [
> > [a,b],
> > [c,d]
> > ];
> > Z(2^2)^(-1)=
> > [
> > [x,y],
> > [z,t]
> > ],
> > then
> > B=
> > [
> > [a,b,0*Z(2),0*Z(2)],
> > [c,d,0*Z(2),0*Z(2)],
> > [0*Z(2),0*Z(2),x,y],
> > [0*Z(2),0*Z(2),z,t]
> > ].
> >
> > All the best, Evgeny.
> >
> > --
> > Evgeny Vdovin
> > Sobolev Institute of Mathematics
> > pr-t Acad. Koptyug, 4
> > 630090, Novosibirsk, Russia
> > Office +7 383 3297663
> > Fax +7 383 3332598
> > _______________________________________________
> > Forum mailing list
> > Forum at gap-system.org
> > https://mail.gap-system.org/mailman/listinfo/forum
>
> --
> /// Dr. Frank Lübeck, Lehrstuhl D für Mathematik, Pontdriesch 14/16,
> \\\ 52062 Aachen, Germany
> /// E-mail: Frank.Luebeck at Math.RWTH-Aachen.De
> \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/
>
> _______________________________________________
> Forum mailing list
> Forum at gap-system.org
> https://mail.gap-system.org/mailman/listinfo/forum
More information about the Forum
mailing list