Module: sage.libs.mwrank.all
Module-level Functions
n) |
Set the global NTL real number precision. This has a massive effect on the speed of mwrank calculations. The default is n=15, but it might have to be increased if a computation fails. In this case, one must recreate the mwrank curve from scratch after resetting this precision.
INPUT: n -- long
Class: mwrank_EllipticCurve
self, ainvs, [verbose=False]) |
Create the mwrank elliptic curve with invariants
a_invs
, which is a list of
integers
,
,
,
, and
.
If strictly less than 5 invariants are given, then the first
ones are set to 0, so, e.g., [3,4]
means
and
,
.
INPUT: ainvs -- a list of <= 5 integers verbose -- if True, then all Selmer group computations will be verbose. (default: False).
We create the elliptic curve
.
sage: e = mwrank_EllipticCurve([0, 1, 1, -2, 0]) sage: e.ainvs() [0, 1, 1, -2, 0]
This example illustrates that omitted
-invariants default to 0
:
sage: e = mwrank_EllipticCurve([3, -4]) sage: e y^2 = x^3 + 3*x - 4 sage: e.ainvs() [0, 0, 0, 3, -4]
The entries of the input list are coerced to int. This has the effect that for float input, the integer parts of the input coefficients are taken.
sage: e = mwrank_EllipticCurve([3, float(-4.8)]); e y^2 = x^3 + 3*x - 4
When you enter a singular model you get an exception:
sage: e = mwrank_EllipticCurve([0, 0]) Traceback (most recent call last): ... TypeError: not all arguments converted during string formatting
Functions: ainvs,
certain,
conductor,
CPS_height_bound,
gens,
isogeny_class,
rank,
regulator,
saturate,
selmer_rank_bound,
set_verbose,
silverman_bound,
two_descent
self) |
True if the last two_descent call provably correctly computed the rank. If two_descent hasn't been called, then it is first called by certain using the default parameters.
A
-descent does not determine
with certainty
for the curve
.
sage: E = mwrank_EllipticCurve([0, -1, 1, -120, -2183]) sage: E.two_descent(False) ... sage: E.certain() False sage: E.rank() 0
The rank of
is actually 0 (as one could see by computing
the L-function), but
has order 4 and the
-torsion is
trivial, so mwrank does not conclusively determine the rank.
sage: E.selmer_rank_bound() 2
self) |
Return the conductor of this curve, computed using Cremona's implementation of Tate's algorithm.
NOTE: This is independent of PARI's.
self) |
Return the Cremona-Prickett-Siksek height bound. This is a
floating point number
such that if
is a point on the curve,
then the naive logarithmetic height of
is off from the
canonical height by at most
.
self) |
Return a list of the generators for the Mordell-Weil group.
self) |
Returns the rank of this curve, computed using 2-descent.
self) |
Return the regulator of the saturated Mordell-Weil group.
sage: E = mwrank_EllipticCurve([0, 0, 1, -1, 0]) sage: E.regulator() 0.05111140823996884
self, [bound=-1]) |
Compute the saturation of the Mordell-Weil group at all primes up to bound.
INPUT: bound -- int (default: -1) -1 saturate at *all* primes, 0 -- do not saturate n -- saturate at least at all primes <= n.
self) |
Bound on the rank of the curve, computed using the 2-selmer
group. This is the rank of the curve minus the rank of the
2-torsion, minus a number determined by whatever mwrank was
able to determine related to
(e.g., using a
second descent or if there is a rational
-torsion point,
then there may be an isogeny to a curve with trivial
). In many cases, this is the actual rank of the
curve, but in general it is just
the true rank.
The following is the curve 960D1, which has rank 0, but Sha of order 4.
sage: E = mwrank_EllipticCurve([0, -1, 0, -900, -10098]) sage: E.selmer_rank_bound() 0
In this case this was resolved using a second descent.
sage: E = mwrank_EllipticCurve([0, -1, 0, -900, -10098]) sage: E.two_descent(second_descent = False, verbose=False) sage: E.selmer_rank_bound() 2
Above, the selmer_rank_bound gives 0 instead of 2,
because it knows Sha is nontrivial. In contrast, for the
curve 571A, also with rank 0 and
of order 4, we obtain
a worse bound:
sage: E = mwrank_EllipticCurve([0, -1, 1, -929, -10595]) sage: E.selmer_rank_bound() 2 sage: E.rank() 0
self, verbose) |
Set the verbosity of printing of output by the 2-descent and other functions.
INPUT: verbosity -- bool; if True print lots of output
self) |
Return the Silverman height bound. This is a number
such
that if
is a point on the curve, then the naive
logarithmetic height of
is off from the canonical height by
at most
.
self, [verbose=True], [selmer_only=-1], [first_limit=8], [second_limit=20], [n_aux=False], [second_descent=True]) |
Compute 2-descent data for this curve.
INPUT: verbose -- (default: True) print what mwrank is doing selmer_only -- (default: False) selmer_only switch first_limit -- (default: 20) firstlim is bound on |x|+|z| second_limit-- (default: 5) secondlim is bound on log max {|x|,|z| }, i.e. logarithmic n_aux -- (default: -1) n_aux only relevant for general 2-descent when 2-torsion trivial; n_aux=-1 causes default to be used (depends on method) second_descent -- (default: True) second_descent only relevant for descent via 2-isogeny OUTPUT: Nothing -- nothing is returned
Special Functions: __reduce__,
__repr__,
_curve_data,
_mwrank_EllipticCurve__two_descent_data
Class: mwrank_MordellWeil
self, curve, [verbose=999], [pp=1], [maxr=True]) |
Create a mwrank_MordellWeil instance.
INPUT: curve -- \class{mwrank_EllipticCurve} instance verbose -- bool pp -- int maxr -- int
Functions: points,
process,
rank,
regulator,
saturate,
search
self) |
Return a list of the generating points in this Mordell-Weil group.
self, v, [sat=0]) |
This function allows one to add points to a mwrank_MordellWeil object.
Process points in the list v, with saturation at primes up to sat. If sat = 0 (the default), then saturate at all primes.
INPUT:
v - a point (3-tuple of ints), or a list of 3-tuples of integers, which define points on the curve.
sat - int, saturate at primes up to sat, or at all primes if sat=0.
self) |
Return the rank of this subgroup of the Mordell-Weil group.
self) |
Return the regulator of the points in this subgroup of the Mordell-Weil group.
self, [max_prime=False], [odd_primes_only=-1]) |
Saturate this subgroup of the Mordell-Weil group.
INPUT: max_prime (int) -- (default: 97), saturation is performed for all primes up to max_prime odd_primes_only (bool) -- only do saturation at odd primes OUTPUT: ok (bool) -- True if and only if the saturation is provably correct at \emph{all} primes. index (int) -- The index of the group generated by points in their saturation saturation (list) -- list of points that form a basis for the saturation
max_prime
are sufficient to saturate at all primes.
Note that the function might not have needed to saturate at
all primes up to max_prime
.
It has worked out what prime you need to saturate up to,
and that prime is max_prime
.
self, [height_limit=False], [verbose=18]) |
Search for new points, and add them to this subgroup of the Mordell-Weil group.
INPUT: height_limit -- float (default: 18) search up to this logarithmetic height. On 32-bit machines, h_lim MUST be < 21.48 else exp(h_lim)>2^31 and overflows.
Special Functions: __reduce__,
__repr__
See About this document... for information on suggesting changes.