Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
multi_polynomial_libsingular.pyx: global_height
Browse files Browse the repository at this point in the history
  • Loading branch information
guojing0 committed Jun 30, 2022
1 parent 212ce1f commit c642890
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -5486,6 +5486,44 @@ cdef class MPolynomial_libsingular(MPolynomial):
p = pNext(p)
return coeffs

def global_height(self, prec=None):
"""
Return the absolute logarithmic height of the polynomial.
INPUT:
- ``prec`` -- desired floating point precision (default:
default RealField precision).
OUTPUT:
- a real number.
EXAMPLES::
sage: R.<x,y> = PolynomialRing(QQbar)
sage: f = 3 * x^3 + 2 * x * y^2
sage: exp(f.global_height())
3
"""
from sage.schemes.projective.projective_space import ProjectiveSpace
#from sage.schemes.projective.projective_morphism import _number_field_from_algebraics
from sage.rings.number_field.order import is_NumberFieldOrder
from sage.categories.number_fields import NumberFields
from sage.rings.qqbar import QQbar
if prec is None:
prec = 53

K = self.base_ring()
if K in NumberFields() or is_NumberFieldOrder(K):
f = self
#elif K is QQbar:
# f = self._number_field_from_algebraics()
else:
raise TypeError("Must be over a Numberfield or a Numberfield Order or QQbar.")

P = ProjectiveSpace(K, f.number_of_terms()-1)
proj_point = P.point(f.coefficients())
return proj_point.global_height()

def gradient(self):
"""
Return a list of partial derivatives of this polynomial,
Expand Down

0 comments on commit c642890

Please sign in to comment.