本文整理汇总了Python中sage.rings.all.ZZ.is_prime方法的典型用法代码示例。如果您正苦于以下问题:Python ZZ.is_prime方法的具体用法?Python ZZ.is_prime怎么用?Python ZZ.is_prime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.rings.all.ZZ
的用法示例。
在下文中一共展示了ZZ.is_prime方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
def __init__(self, p, base_ring):
r"""
Initialisation function.
EXAMPLE::
sage: pAdicWeightSpace(17)
Space of 17-adic weight-characters defined over '17-adic Field with capped relative precision 20'
"""
ParentWithBase.__init__(self, base=base_ring)
p = ZZ(p)
if not p.is_prime():
raise ValueError, "p must be prime"
self._p = p
self._param = Qp(p)((p == 2 and 5) or (p + 1))
示例2: to_sage
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
#.........这里部分代码省略.........
if cls_cls_str == "Type":
if cls_str == "List":
return [entry.to_sage() for entry in self]
elif cls_str == "Matrix":
from sage.matrix.all import matrix
base_ring = self.ring().to_sage()
entries = self.entries().to_sage()
return matrix(base_ring, entries)
elif cls_str == "Ideal":
parent = self.ring().to_sage()
gens = self.gens().entries().flatten().to_sage()
return parent.ideal(*gens)
elif cls_str == "QuotientRing":
#Handle the ZZ/n case
if "ZZ" in repr_str and "--" in repr_str:
from sage.rings.all import ZZ, GF
external_string = self.external_string()
zz, n = external_string.split("/")
#Note that n must be prime since it is
#coming from Macaulay 2
return GF(ZZ(n))
ambient = self.ambient().to_sage()
ideal = self.ideal().to_sage()
return ambient.quotient(ideal)
elif cls_str == "PolynomialRing":
from sage.rings.all import PolynomialRing
from sage.rings.polynomial.term_order import inv_macaulay2_name_mapping
#Get the base ring
base_ring = self.coefficientRing().to_sage()
#Get a string list of generators
gens = str(self.gens())[1:-1]
# Check that we are dealing with default degrees, i.e. 1's.
if self.degrees().any("x -> x != {1}").to_sage():
raise ValueError("cannot convert Macaulay2 polynomial ring with non-default degrees to Sage")
#Handle the term order
external_string = self.external_string()
order = None
if "MonomialOrder" not in external_string:
order = "degrevlex"
else:
for order_name in inv_macaulay2_name_mapping:
if order_name in external_string:
order = inv_macaulay2_name_mapping[order_name]
if len(gens) > 1 and order is None:
raise ValueError("cannot convert Macaulay2's term order to a Sage term order")
return PolynomialRing(base_ring, order=order, names=gens)
elif cls_str == "GaloisField":
from sage.rings.all import ZZ, GF
gf, n = repr_str.split(" ")
n = ZZ(n)
if n.is_prime():
return GF(n)
else:
gen = str(self.gens())[1:-1]
return GF(n, gen)
elif cls_str == "Boolean":
if repr_str == "true":
return True
elif repr_str == "false":
return False
elif cls_str == "String":
return str(repr_str)
elif cls_str == "Module":
from sage.modules.all import FreeModule
if self.isFreeModule().to_sage():
ring = self.ring().to_sage()
rank = self.rank().to_sage()
return FreeModule(ring, rank)
else:
#Handle the integers and rationals separately
if cls_str == "ZZ":
from sage.rings.all import ZZ
return ZZ(repr_str)
elif cls_str == "QQ":
from sage.rings.all import QQ
repr_str = self.external_string()
if "/" not in repr_str:
repr_str = repr_str + "/1"
return QQ(repr_str)
m2_parent = self.cls()
parent = m2_parent.to_sage()
if cls_cls_str == "PolynomialRing":
from sage.misc.sage_eval import sage_eval
gens_dict = parent.gens_dict()
return sage_eval(self.external_string(), gens_dict)
from sage.misc.sage_eval import sage_eval
try:
return sage_eval(repr_str)
except Exception:
raise NotImplementedError("cannot convert %s to a Sage object"%repr_str)
示例3: LocalComponent
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
def LocalComponent(f, p, twist_factor=None):
r"""
Calculate the local component at the prime `p` of the automorphic
representation attached to the newform `f`.
INPUT:
- ``f`` (:class:`~sage.modular.modform.element.Newform`) a newform of weight `k \ge 2`
- ``p`` (integer) a prime
- ``twist_factor`` (integer) an integer congruent to `k` modulo 2 (default: `k - 2`)
.. note::
The argument ``twist_factor`` determines the choice of normalisation: if it is
set to `j \in \ZZ`, then the central character of `\pi_{f, \ell}` maps `\ell`
to `\ell^j \varepsilon(\ell)` for almost all `\ell`, where `\varepsilon` is the
Nebentypus character of `f`.
In the analytic theory it is conventional to take `j = 0` (the "Langlands
normalisation"), so the representation `\pi_f` is unitary; however, this is
inconvenient for `k` odd, since in this case one needs to choose a square root of `p`
and thus the map `f \to \pi_{f}` is not Galois-equivariant. Hence we use, by default, the
"Hecke normalisation" given by `j = k - 2`. This is also the most natural normalisation
from the perspective of modular symbols.
We also adopt a slightly unusual definition of the principal series: we
define `\pi(\chi_1, \chi_2)` to be the induction from the Borel subgroup of
the character of the maximal torus `\begin{pmatrix} x & \\ & y
\end{pmatrix} \mapsto \chi_1(a) \chi_2(b) |b|`, so its central character is
`z \mapsto \chi_1(z) \chi_2(z) |z|`. Thus `\chi_1 \chi_2` is the
restriction to `\QQ_p^\times` of the unique character of the id\'ele class
group mapping `\ell` to `\ell^{k-1} \varepsilon(\ell)` for almost all `\ell`.
This has the property that the *set* `\{\chi_1, \chi_2\}` also depends
Galois-equivariantly on `f`.
EXAMPLE::
sage: Pi = LocalComponent(Newform('49a'), 7); Pi
Smooth representation of GL_2(Q_7) with conductor 7^2
sage: Pi.central_character()
Character of Q_7*, of level 0, mapping 7 |--> 1
sage: Pi.species()
'Supercuspidal'
sage: Pi.characters()
[
Character of unramified extension Q_7(s)* (s^2 + 6*s + 3 = 0), of level 1, mapping s |--> d, 7 |--> 1,
Character of unramified extension Q_7(s)* (s^2 + 6*s + 3 = 0), of level 1, mapping s |--> -d, 7 |--> 1
]
"""
p = ZZ(p)
if not p.is_prime():
raise ValueError( "p must be prime" )
if not isinstance(f, Newform):
raise TypeError( "f (=%s of type %s) should be a Newform object" % (f, type(f)) )
r = f.level().valuation(p)
if twist_factor is None:
twist_factor = ZZ(f.weight() - 2)
else:
twist_factor = ZZ(twist_factor)
if r == 0:
return UnramifiedPrincipalSeries(f, p, twist_factor)
c = ZZ(f.character().conductor()).valuation(p)
if f[p] != 0:
if c == r:
return PrimitivePrincipalSeries(f, p, twist_factor)
if c == 0 and r == 1:
return PrimitiveSpecial(f, p, twist_factor)
Xf = TypeSpace(f, p)
if Xf.is_minimal():
return PrimitiveSupercuspidal(f, p, twist_factor)
else:
raise NotImplementedError( "Form %s is not %s-primitive" % (f, p) )
示例4: hecke_series
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
def hecke_series(p,N,klist,m, modformsring = False, weightbound = 6):
r"""
Returns the characteristic series modulo `p^m` of the Atkin operator `U_p`
acting upon the space of p-adic overconvergent modular forms of level
`\Gamma_0(N)` and weight ``klist``. The input ``klist`` may also be a list
of weights congruent modulo `(p-1)`, in which case the output is the
corresponding list of characteristic series for each `k` in ``klist``; this
is faster than performing the computation separately for each `k`, since
intermediate steps in the computation may be reused.
If ``modformsring`` is True, then for `N > 1` the algorithm computes at one
step ``ModularFormsRing(N).generators()``. This will often be faster but
the algorithm will default to ``modformsring = False`` if the generators
found are not p-adically integral. Note that ``modformsring`` is ignored
for `N = 1` and the ring structure of modular forms is *always* used in
this case.
When ``modformsring`` is False and `N > 1`, `weightbound` is a bound set on
the weight of generators for a certain subspace of modular forms. The
algorithm will often be faster if ``weightbound = 4``, but it may fail to
terminate for certain exceptional small values of `N`, when this bound is
too small.
The algorithm is based upon that described in [AGBL]_.
INPUT:
- ``p`` -- a prime greater than or equal to 5.
- ``N`` -- a positive integer not divisible by `p`.
- ``klist`` -- either a list of integers congruent modulo `(p-1)`, or a single integer.
- ``m`` -- a positive integer.
- ``modformsring`` -- ``True`` or ``False`` (optional, default ``False``).
Ignored if `N = 1`.
- ``weightbound`` -- a positive even integer (optional, default 6). Ignored
if `N = 1` or ``modformsring`` is True.
OUTPUT:
Either a list of polynomials or a single polynomial over the integers modulo `p^m`.
EXAMPLES::
sage: hecke_series(5,7,10000,5, modformsring = True) # long time (3.4s)
250*x^6 + 1825*x^5 + 2500*x^4 + 2184*x^3 + 1458*x^2 + 1157*x + 1
sage: hecke_series(7,3,10000,3, weightbound = 4)
196*x^4 + 294*x^3 + 197*x^2 + 341*x + 1
sage: hecke_series(19,1,[10000,10018],5)
[1694173*x^4 + 2442526*x^3 + 1367943*x^2 + 1923654*x + 1,
130321*x^4 + 958816*x^3 + 2278233*x^2 + 1584827*x + 1]
Check that silly weights are handled correctly::
sage: hecke_series(5, 7, [2, 3], 5)
Traceback (most recent call last):
...
ValueError: List of weights must be all congruent modulo p-1 = 4, but given list contains 2 and 3 which are not congruent
sage: hecke_series(5, 7, [3], 5)
[1]
sage: hecke_series(5, 7, 3, 5)
1
"""
# convert to sage integers
p = ZZ(p)
N = ZZ(N)
m = ZZ(m)
weightbound = ZZ(weightbound)
oneweight = False
# convert single weight to list
if ((isinstance(klist, int)) or (isinstance(klist, Integer))):
klist = [klist]
oneweight = True # input is single weight
# algorithm may finish with false output unless:
is_valid_weight_list(klist,p)
if not p.is_prime():
raise ValueError("p (=%s) is not prime" % p)
if p < 5:
raise ValueError("p = 2 and p = 3 not supported")
if not N%p:
raise ValueError("Level (=%s) should be prime to p (=%s)" % (N, p))
# return all 1 list for odd weights
if klist[0] % 2 == 1:
if oneweight:
return 1
else:
return [1 for i in xrange(len(klist))]
if N == 1:
Alist = level1_UpGj(p,klist,m)
else:
Alist = higher_level_UpGj(p,N,klist,m,modformsring,weightbound)
Plist = []
for A in Alist:
P = charpoly(A).reverse()
Plist.append(P)
if oneweight == True:
#.........这里部分代码省略.........
示例5: BigArithGroup_class
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
class BigArithGroup_class(AlgebraicGroup):
r'''
This class holds information about the group `\Gamma`: a finite
presentation for it, a solution to the word problem,...
Initializes the group attached to a `\ZZ[1/p]`-order of the rational quaternion algebra of
discriminant `discriminant` and level `n`.
TESTS:
sage: from darmonpoints.sarithgroup import BigArithGroup
sage: GS = BigArithGroup(7,6,1,outfile='/tmp/darmonpoints.tmp',use_shapiro=False) # optional - magma
sage: G = GS.small_group() # optional - magma
sage: a = G([2,2,1,1,1,-3]) # optional - magma
sage: b = G([2,2,2]) # optional - magma
sage: c = G([3]) # optional - magma
sage: print(a * b) # random # optional - magma
-236836769/2 + 120098645/2*i - 80061609/2*j - 80063439/2*k
sage: b.quaternion_rep # random # optional - magma
846 - 429*i + 286*j + 286*k
'''
def __init__(self,base,p,discriminant,abtuple = None,level = 1,grouptype = None,seed = None,outfile = None,magma = None,timeout = 0, use_shapiro = True, character = None, nscartan = None, matrix_group = False):
self.seed = seed
self.magma = magma
self._use_shapiro = use_shapiro
self._matrix_group = matrix_group
if seed is not None:
verbose('Setting Magma seed to %s'%seed)
self.magma.eval('SetSeed(%s)'%seed)
self.F = base
if self.F != QQ:
Fideal = self.F.maximal_order().ideal
self.ideal_p = Fideal(p)
self.norm_p = ZZ(p.norm())
self.discriminant = Fideal(discriminant)
self.level = Fideal(level)
else:
self.ideal_p = ZZ(p)
self.norm_p = ZZ(p)
self.discriminant = ZZ(discriminant)
self.level = ZZ(level)
if nscartan is not None:
self.level *= nscartan
self.p = self.norm_p.prime_divisors()[0]
if not self.ideal_p.is_prime():
raise ValueError('p (=%s) must be prime'%self.p)
if self._use_shapiro:
covol = covolume(self.F,self.discriminant,self.level)
else:
covol = covolume(self.F,self.discriminant,self.ideal_p * self.level)
verbose('Estimated Covolume = %s'%covol)
difficulty = covol**2
verbose('Estimated Difficulty = %s'%difficulty)
verbose('Initializing arithmetic group G(pn)...')
t = walltime()
lev = self.ideal_p * self.level
if character is not None:
lev = [lev, character]
self.Gpn = ArithGroup(self.F,self.discriminant,abtuple,lev,grouptype = grouptype,magma = magma, compute_presentation = not self._use_shapiro, timeout = timeout,nscartan=nscartan)
self.Gpn.get_embedding = self.get_embedding
self.Gpn.embed = self.embed
self.Gpn.embed_matrix = self.embed_matrix
verbose('Initializing arithmetic group G(n)...')
lev = self.level
if character is not None:
lev = [lev, character]
self.Gn = ArithGroup(self.F,self.discriminant,abtuple,lev,info_magma = self.Gpn,grouptype = grouptype,magma = magma, compute_presentation = True, timeout = timeout,nscartan=nscartan)
self.Gn.embed_matrix = self.embed_matrix
t = walltime(t)
verbose('Time for calculation T = %s'%t)
verbose('T = %s x difficulty'%RealField(25)(t/difficulty))
self.Gn.get_embedding = self.get_embedding
self.Gn.embed = self.embed
if hasattr(self.Gn.B,'is_division_algebra'):
fwrite('# B = F<i,j,k>, with i^2 = %s and j^2 = %s'%(self.Gn.B.gens()[0]**2,self.Gn.B.gens()[1]**2),outfile)
else:
fwrite('# B = M_2(F)',outfile)
try:
basis_data_1 = list(self.Gn.Obasis)
if not self.use_shapiro():
basis_data_p = list(self.Gpn.Obasis)
except AttributeError:
try:
basis_data_1 = self.Gn.basis_invmat.inverse().columns()
if not self.use_shapiro():
basis_data_p = self.Gpn.basis_invmat.inverse().columns()
except AttributeError:
basis_data_1 = '?'
basis_data_p = '?'
self._prec = -1
self.get_embedding(200)
fwrite('# R with basis %s'%basis_data_1,outfile)
self.Gn.get_Up_reps = self.get_Up_reps
if not self.use_shapiro():
fwrite('# R(p) with basis %s'%basis_data_p,outfile)
self.Gpn.get_Up_reps = self.get_Up_reps
#.........这里部分代码省略.........
示例6: darmon_point
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import is_prime [as 别名]
def darmon_point(P, E, beta, prec, ramification_at_infinity = None, input_data = None, magma = None, working_prec = None, **kwargs):
r'''
EXAMPLES:
We first need to import the module::
sage: from darmonpoints.darmonpoints import darmon_point
A first example (Stark--Heegner point)::
sage: from darmonpoints.darmonpoints import darmon_point
sage: darmon_point(7,EllipticCurve('35a1'),41,20, cohomological=False, use_magma=False, use_ps_dists = True)
Starting computation of the Darmon point
...
(-70*alpha + 449 : 2100*alpha - 13444 : 1)
A quaternionic (Greenberg) point::
sage: darmon_point(13,EllipticCurve('78a1'),5,20) # long time # optional - magma
A Darmon point over a cubic (1,1) field::
sage: F.<r> = NumberField(x^3 - x^2 - x + 2)
sage: E = EllipticCurve([-r -1, -r, -r - 1,-r - 1, 0])
sage: N = E.conductor()
sage: P = F.ideal(r^2 - 2*r - 1)
sage: beta = -3*r^2 + 9*r - 6
sage: darmon_point(P,E,beta,20) # long time # optional - magma
'''
# global G, Coh, phiE, Phi, dK, J, J1, cycleGn, nn, Jlist
config = ConfigParser.ConfigParser()
config.read('config.ini')
param_dict = config_section_map(config, 'General')
param_dict.update(config_section_map(config, 'DarmonPoint'))
param_dict.update(kwargs)
param = Bunch(**param_dict)
# Get general parameters
outfile = param.get('outfile')
use_ps_dists = param.get('use_ps_dists',False)
use_shapiro = param.get('use_shapiro',True)
use_sage_db = param.get('use_sage_db',False)
magma_seed = param.get('magma_seed',1515316)
parallelize = param.get('parallelize',False)
Up_method = param.get('up_method','naive')
use_magma = param.get('use_magma',True)
progress_bar = param.get('progress_bar',True)
sign_at_infinity = param.get('sign_at_infinity',ZZ(1))
# Get darmon_point specific parameters
idx_orientation = param.get('idx_orientation')
idx_embedding = param.get('idx_embedding',0)
algorithm = param.get('algorithm')
quaternionic = param.get('quaternionic')
cohomological = param.get('cohomological',True)
if Up_method == "bigmatrix" and use_shapiro == True:
import warnings
warnings.warn('Use of "bigmatrix" for Up iteration is incompatible with Shapiro Lemma trick. Using "naive" method for Up.')
Up_method = 'naive'
if working_prec is None:
working_prec = max([2 * prec + 10, 30])
if use_magma:
page_path = os.path.dirname(__file__) + '/KleinianGroups-1.0/klngpspec'
if magma is None:
from sage.interfaces.magma import Magma
magma = Magma()
quit_when_done = True
else:
quit_when_done = False
magma.attach_spec(page_path)
else:
quit_when_done = False
sys.setrecursionlimit(10**6)
F = E.base_ring()
beta = F(beta)
DB,Np,Ncartan = get_heegner_params(P,E,beta)
if quaternionic is None:
quaternionic = ( DB != 1 )
if cohomological is None:
cohomological = quaternionic
if quaternionic and not cohomological:
raise ValueError("Need cohomological algorithm when dealing with quaternions")
if use_ps_dists is None:
use_ps_dists = False if cohomological else True
try:
p = ZZ(P)
except TypeError:
p = ZZ(P.norm())
if not p.is_prime():
raise ValueError,'P (= %s) should be a prime, of inertia degree 1'%P
if F == QQ:
#.........这里部分代码省略.........