def _find_alpha(self, p, k, M=None, ap=None, new_base_ring=None, ordinary=True, check=True, find_extraprec=True): """ Finds `alpha`, a `U_p` eigenvalue, which is found as a root of the polynomial `x^2 - ap * x + p^(k+1)`. INPUT: - ``p`` -- prime - ``k`` -- Pollack-Stevens weight - ``M`` -- precision (default = None) of `Q_p` - ``ap`` -- Hecke eigenvalue at p (default = None) - ``new_base_ring`` -- field of definition of `alpha` (default = None) - ``ordinary`` -- True if the prime is ordinary (default = True) - ``check`` -- check to see if the prime is ordinary (default = True) - ``find_extraprec`` -- setting this to True finds extra precision (default = True) OUTPUT: - ``alpha`` -- `U_p` eigenvalue - ``new_base_ring`` -- field of definition of `alpha` with precision at least `newM` - ``newM`` -- new precision - ``eisenloss`` -- loss of precision - ``q`` -- a prime not equal to p which was used to find extra precision - ``aq`` -- the Hecke eigenvalue `aq` corresponding to `q` EXAMPLES:: sage: from sage.modular.pollack_stevens.space import ps_modsym_from_elliptic_curve sage: E = EllipticCurve('11a') sage: p = 5 sage: M = 10 sage: k = 0 sage: phi = ps_modsym_from_elliptic_curve(E) sage: phi._find_alpha(p,k,M) (1 + 4*5 + 3*5^2 + 2*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 3*5^7 + 2*5^8 + 3*5^9 + 3*5^10 + 3*5^12 + O(5^13), 5-adic Field with capped relative precision 13, 12, 1, None, None) """ if ap is None: ap = self.Tq_eigenvalue(p, check=check) if check and ap.valuation(p) > 0: raise ValueError("p is not ordinary") poly = PolynomialRing(ap.parent(), 'x')([p**(k+1), -ap, 1]) if new_base_ring is None: # These should actually be completions of disc.parent() if p == 2: # is this the right precision adjustment for p=2? new_base_ring = Qp(2, M+1) else: new_base_ring = Qp(p, M) set_padicbase = True else: set_padicbase = False try: verbose("finding alpha: rooting %s in %s"%(poly, new_base_ring)) (v0,e0),(v1,e1) = poly.roots(new_base_ring) except TypeError, ValueError: raise ValueError("new base ring must contain a root of x^2 - ap * x + p^(k+1)")
def _find_alpha(self, p, k, M=None, ap=None, new_base_ring=None, ordinary=True, check=True, find_extraprec=True): """ """ if ap is None: ap = self.Tq_eigenvalue(p, check=check) if check and ap.valuation(p) > 0: raise ValueError("p is not ordinary") poly = PolynomialRing(ap.parent(), 'x')([p**(k+1), -ap, 1]) if new_base_ring is None: # These should actually be completions of disc.parent() if p == 2: # is this the right precision adjustment for p=2? new_base_ring = Qp(2, M+1) else: new_base_ring = Qp(p, M) set_padicbase = True else: set_padicbase = False try: verbose("finding alpha: rooting %s in %s"%(poly, new_base_ring)) (v0,e0),(v1,e1) = poly.roots(new_base_ring) except TypeError, ValueError: raise ValueError("new base ring must contain a root of x^2 - ap * x + p^(k+1)")