@@ -668,11 +668,22 @@ def degree(self, x=None, std_grading=False):
668
668
sage: R.<x,y> = GF(3037000453)[] # needs sage.rings.finite_rings
669
669
sage: R.zero().degree(x)
670
670
-1
671
+
672
+ Ensure that :issue:`37603` is fixed::
673
+
674
+ sage: R.<x,y,z> = PolynomialRing(QQbar)
675
+ sage: f = 3*x^2 - 2*y + 7*x^2*y^2 + 5
676
+ sage: type(f.degree())
677
+ <class 'sage.rings.integer.Integer'>
678
+ sage: type(f.degree(x))
679
+ <class 'sage.rings.integer.Integer'>
680
+ sage: type(f.degree(x)) == type(f.degree(y)) == type(f.degree(z))
681
+ True
671
682
"""
672
683
if x is None :
673
684
if std_grading or not self .parent ().term_order ().is_weighted_degree_order ():
674
- return self .element ().degree (None )
675
- return self .weighted_degree (self .parent ().term_order ().weights ())
685
+ return Integer ( self .element ().degree (None ) )
686
+ return Integer ( self .weighted_degree (self .parent ().term_order ().weights () ))
676
687
if isinstance (x , MPolynomial ):
677
688
if not x .parent () is self .parent ():
678
689
try :
@@ -683,7 +694,7 @@ def degree(self, x=None, std_grading=False):
683
694
raise TypeError ("x must be one of the generators of the parent" )
684
695
else :
685
696
raise TypeError ("x must be one of the generators of the parent" )
686
- return self .element ().degree (x .element ())
697
+ return Integer ( self .element ().degree (x .element () ))
687
698
688
699
def total_degree (self ):
689
700
"""
@@ -712,6 +723,16 @@ def total_degree(self):
712
723
sage: f = z^9 + 10*x^4 + y^8*x^2
713
724
sage: f.total_degree()
714
725
10
726
+
727
+ TESTS::
728
+
729
+ Ensure that :issue:`37603` is fixed::
730
+ sage: R.<x,y,z> = QQbar[]
731
+ sage: f = 2*x*y^3*z^2
732
+ sage: f.total_degree()
733
+ 6
734
+ sage: type(f.total_degree())
735
+ <class 'sage.rings.integer.Integer'>
715
736
"""
716
737
return self .degree ()
717
738
0 commit comments