def from_polynomial(cls, pol): pol = PolynomialRing(QQ, 'x')(str(pol)) pol *= pol.denominator() R = pol.parent() pol = R(pari(pol).polredbest().polredabs()) return cls.from_coeffs( [int(c) for c in pol.coefficients(sparse=False)])
def pol_string_to_list(pol, deg=None, var=None): if var is None: from lmfdb.hilbert_modular_forms.hilbert_field import findvar var = findvar(pol) if not var: var = 'a' pol = PolynomialRing(QQ, var)(str(pol)) if deg is None: fill = 0 else: fill = deg - pol.degree() - 1 return [str(c) for c in pol.coefficients(sparse=False)] + ['0'] * fill
def pol_string_to_list(pol, deg=None, var=None): if var is None: from lmfdb.hilbert_modular_forms.hilbert_field import findvar var = findvar(pol) if not var: var = 'a' pol = PolynomialRing(QQ, var)(str(pol)) if deg is None: fill = 0 else: fill = deg - pol.degree() - 1 return [str(c) for c in pol.coefficients(sparse=False)] + ['0']*fill
def from_polynomial(cls, pol): try: # try to cast to ring pol = PolynomialRing(QQ, 'x')(pol) except Exception: # try again as a string pol = PolynomialRing(QQ, 'x')(str(pol)) pol *= pol.denominator() R = pol.parent() pol = R(pari(pol).polredbest().polredabs()) return cls.from_coeffs( [int(c) for c in pol.coefficients(sparse=False)])
def from_polynomial(cls, pol): try: # try to cast to ring pol = PolynomialRing(QQ, 'x')(pol) except Exception: # try again as a string pol = PolynomialRing(QQ, 'x')(str(pol)) pol *= pol.denominator() # For some reason the error raised by Pari on a constant polynomial is not being caught if pol.degree() < 1: raise ValueError("Polynomial cannot be constant") R = pol.parent() pol = R(pari(pol).polredbest().polredabs()) return cls.from_coeffs([int(c) for c in pol.coefficients(sparse=False)])
def from_polynomial(cls, pol): pol = PolynomialRing(QQ, 'x')(str(pol)) pol *= pol.denominator() R = pol.parent() pol = R(pari(pol).polredbest().polredabs()) return cls.from_coeffs([int(c) for c in pol.coefficients(sparse=False)])