diff --git a/lib/matrix.gi b/lib/matrix.gi index f6f70c8c3a..0214cd15d9 100644 --- a/lib/matrix.gi +++ b/lib/matrix.gi @@ -1280,9 +1280,19 @@ InstallOtherMethod( ConstructingFilter, v -> IsPlistRep ); InstallOtherMethod( BaseDomain, - "generic method for a matrix that is a plain list", + "generic method for a plain list matrix", [ IsMatrix and IsPlistRep ], - mat -> BaseDomain( mat[1] ) ); + mat -> BaseDomain( Concatenation( mat ) ) ); + +InstallOtherMethod( BaseDomain, + "generic method for a plain list matrix over a finite field", + [ IsMatrix and IsPlistRep and IsFFECollColl ], + DefaultFieldOfMatrix ); + +InstallOtherMethod( BaseDomain, + "generic method for a plain list over the cyclotomics", + [ IsMatrix and IsPlistRep and IsCyclotomicCollColl ], + DefaultFieldOfMatrix ); InstallOtherMethod( OneOfBaseDomain, "generic method for a matrix that is a plain list", diff --git a/tst/testinstall/MatrixObj/BaseDomain.tst b/tst/testinstall/MatrixObj/BaseDomain.tst new file mode 100644 index 0000000000..aad598888f --- /dev/null +++ b/tst/testinstall/MatrixObj/BaseDomain.tst @@ -0,0 +1,62 @@ +gap> START_TEST("BaseDomain.tst"); + +# +gap> m := [[1,2],[3,4]];; +gap> BaseDomain(m); +Rationals +gap> BaseDomain(Matrix(m)); +Rationals +gap> BaseDomain(Matrix(Rationals, m)); +Rationals +gap> BaseDomain(Matrix(Integers, m)); +Integers + +# FIXME: BUG: +#gap> BaseDomain(Matrix(GF(2), m)); +#Rationals + +# +gap> m := [[1,2],[3,4/3]];; +gap> BaseDomain(m); +Rationals +gap> BaseDomain(Matrix(m)); +Rationals +gap> BaseDomain(Matrix(Rationals, m)); +Rationals + +# FIXME: BUG: +# gap> BaseDomain(Matrix(Integers, m)); +#Integers +#gap> BaseDomain(Matrix(GF(2), m)); +#Rationals + +# +gap> m := [[1,2],[3,4]] * Z(2);; +gap> BaseDomain(m); +GF(2) +gap> BaseDomain(Matrix(m)); +GF(2) +gap> BaseDomain(Matrix(GF(2), m)); +GF(2) + +# FIXME: BUG: +#gap> BaseDomain(Matrix(Rationals, m)); +#Rationals + +# +gap> m := [[1,2],[3,Z(4)]] * Z(2);; +gap> BaseDomain(m); +GF(2^2) +gap> BaseDomain(Matrix(m)); +GF(2^2) +gap> BaseDomain(Matrix(GF(4), m)); +GF(2^2) +gap> BaseDomain(Matrix(GF(2), m)); +Error, ConvertToVectorRepNC: Vector cannot be written over GF(2) + +# FIXME: BUG: +#gap> BaseDomain(Matrix(Rationals, m)); +#Rationals + +# +gap> STOP_TEST("BaseDomain.tst"); diff --git a/tst/testinstall/grpreps.tst b/tst/testinstall/grpreps.tst index e25c206041..859e2d15f6 100644 --- a/tst/testinstall/grpreps.tst +++ b/tst/testinstall/grpreps.tst @@ -18,4 +18,3 @@ gap> List( res2[2], r -> [ r.field, r.dimension ] ); # gap> STOP_TEST( "grpreps.tst" ); -