Skip to content

Commit

Permalink
Fix StandardAssociateUnit for polynomial rings
Browse files Browse the repository at this point in the history
By definition in the documentation, the returned unit must be an
element of the ring.
  • Loading branch information
fingolfin committed Sep 9, 2019
1 parent 8aff447 commit 511e9ad
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion hpcgap/lib/ringpoly.gi
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@ InstallMethod(StandardAssociateUnit,
function(R,f)
local c;
c:=LeadingCoefficient(f);
return StandardAssociateUnit(CoefficientsRing(R),c);
return StandardAssociateUnit(CoefficientsRing(R),c) * One(R);
end);

InstallMethod(FunctionField,"indetlist",true,[IsRing,IsList],
Expand Down
2 changes: 1 addition & 1 deletion lib/ratfunul.gi
Original file line number Diff line number Diff line change
Expand Up @@ -1031,7 +1031,7 @@ InstallMethod(StandardAssociateUnit,"laurent",
IsCollsElms,[IsPolynomialRing, IsLaurentPolynomial],0,
function(R,f)
# get standard associate of leading term
return StandardAssociateUnit(CoefficientsRing(R), LeadingCoefficient(f));
return StandardAssociateUnit(CoefficientsRing(R), LeadingCoefficient(f)) * One(R);
end);

#############################################################################
Expand Down
2 changes: 1 addition & 1 deletion lib/ringpoly.gi
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@ InstallMethod(StandardAssociateUnit,
function(R,f)
local c;
c:=LeadingCoefficient(f);
return StandardAssociateUnit(CoefficientsRing(R),c);
return StandardAssociateUnit(CoefficientsRing(R),c) * One(R);
end);

InstallMethod(FunctionField,"indetlist",true,[IsRing,IsList],
Expand Down
10 changes: 9 additions & 1 deletion tst/testinstall/associate.tst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#@local checkStandardAssociate
#@local checkStandardAssociate, A, x, R
gap> START_TEST("associate.tst");

# test StandardAssociate, StandardAssociateUnit, IsAssociated
Expand Down Expand Up @@ -48,5 +48,13 @@ true
gap> checkStandardAssociate(Integers mod ((2*3*5*7)^3));
true

# polynomial rings
gap> for A in [ GF(5), Integers, Rationals ] do
> for x in [1,3] do
> R:=PolynomialRing(A, x);
> checkStandardAssociate(R, List([1..30],i->PseudoRandom(R)));
> od;
> od;

#
gap> STOP_TEST("associate.tst", 1);

0 comments on commit 511e9ad

Please sign in to comment.