def create_key(self, k, p=None, prec_cap=None, base=None, \ character=None, adjuster=None, act_on_left=False, \ dettwist=None): k = ZZ(k) if base is None: if p is None: raise ValueError("Must specify a prime or a base ring.") if prec_cap is None: base = ZpCA(p) else: base = ZpCA(p, prec_cap) if prec_cap is None: prec_cap = base.precision_cap() elif prec_cap > base.precision_cap(): raise ValueError("Insufficient precision in base ring (%s < %s)."%(base.precision_cap(), prec_cap)) if p is None: p = base.prime() elif p != base.prime(): raise ValueError("Prime p(=%s) must equal the prime of the base ring(=%s)"%(p, base.prime())) if adjuster is None: adjuster = _default_adjuster() if dettwist is not None: dettwist = ZZ(dettwist) if dettwist == 0: dettwist = None return (k, p, prec_cap, base, character, adjuster, act_on_left, dettwist)
def create_key(self, k, p=None, prec_cap=None, base=None, \ character=None, adjuster=None, act_on_left=False, \ dettwist=None): k = ZZ(k) if base is None: if p is None: raise ValueError("Must specify a prime or a base ring.") if prec_cap is None: base = ZpCA(p) else: base = ZpCA(p, prec_cap) if prec_cap is None: prec_cap = base.precision_cap() elif prec_cap > base.precision_cap(): raise ValueError("Insufficient precision in base ring (%s < %s)." % (base.precision_cap(), prec_cap)) if p is None: p = base.prime() elif p != base.prime(): raise ValueError( "Prime p(=%s) must equal the prime of the base ring(=%s)" % (p, base.prime())) if adjuster is None: adjuster = _default_adjuster() if dettwist is not None: dettwist = ZZ(dettwist) if dettwist == 0: dettwist = None return (k, p, prec_cap, base, character, adjuster, act_on_left, dettwist)
def __init__(self, k, p=None, prec_cap=20, base=None, character=None, tuplegen=None, act_on_left=False): """ - ``character`` -- - None (default) - (chi, None) - (None, n) (n integral) - (chi, n) - lambda (for n half-integral use this form) """ if p is not None: p = ZZ(p) if base is None: if p is None: raise ValueError("specify p or a base") base = ZpCA(p,prec_cap) elif isinstance(base, pAdicGeneric): if base.prime() != p: raise ValueError("p must be the same as the prime of base") if base.precision_cap() != prec_cap: raise ValueError("prec_cap must match the precision cap of base") elif prec_cap > k+1: # non-classical if p is None or not p.is_prime(): raise ValueError("p must be prime for non-classical weight") from sage.rings.padics.pow_computer import PowComputer_long # should eventually be the PowComputer on ZpCA once that uses longs. Dist, WeightKAction = get_dist_classes(p, prec_cap, base) self.Element = Dist if Dist is Dist_long: self.prime_pow = PowComputer_long(p, prec_cap, prec_cap, prec_cap, 0) Parent.__init__(self, base) self._k = k self._p = p self._prec_cap = prec_cap act = WeightKAction(self, character, tuplegen, act_on_left) self._act = act self._populate_coercion_lists_(action_list=[act])
def __init__(self, k, p, prec_cap, base=None, character=None): if base is None: base = ZpCA(p,prec_cap) else: assert (isinstance(base, pAdicGeneric) and base.prime() == p) or (p.is_prime() and (base is ZZ or base is QQ)) from dist import Dist_vector, WeightKAction_vector, Dist_long, WeightKAction_long from sage.rings.padics.pow_computer import PowComputer_long # should eventually be the PowComputer on ZpCA once that uses longs. p = ZZ(p) # if 7*p** self._element_constructor_ = Dist_vector Parent.__init__(self, base) self._k = k self._p = ZZ(p) self._prec_cap = prec_cap self._approx_modules = {} # indexed by precision act = WeightKAction_vector(self, character) self._act = act self._populate_coercion_lists_(action_list=[act])