[GAP Forum] matrix realization over prime field

Frank Lübeck frank.luebeck at math.rwth-aachen.de
Thu Oct 24 02:55:50 BST 2019


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/



More information about the Forum mailing list