Sharedsupport / 2015-01-27-height.sagewsOpen in CoCalc
Examples for support purposes...
E = EllipticCurve('389a')
E.point_search??
   File: /usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py
   Source:
       def point_search(self, height_limit, verbose=False, rank_bound=None):
        """
        Search for points on a curve up to an input bound on the naive
        logarithmic height.

        INPUT:


        -  ``height_limit (float)`` - bound on naive height

        -  ``verbose (bool)`` - (default: False)

           If True, report on each point as found together with linear
           relations between the points found and the saturation process.

           If False, just return the result.

        -  ``rank_bound (bool)`` - (default: None)

           If provided, stop searching for points once we find this many
           independent nontorsion points.

        OUTPUT: points (list) - list of independent points which generate
        the subgroup of the Mordell-Weil group generated by the points
        found and then saturated.

        .. warning::

           height_limit is logarithmic, so increasing by 1 will cause
           the running time to increase by a factor of approximately
           4.5 (=exp(1.5)).

        IMPLEMENTATION: Uses Michael Stoll's ratpoints library.

        EXAMPLES::

            sage: E=EllipticCurve('389a1')
            sage: E.point_search(5, verbose=False)
            [(-1 : 1 : 1), (-3/4 : 7/8 : 1)]

        Increasing the height_limit takes longer, but finds no more
        points::

            sage: E.point_search(10, verbose=False)
            [(-1 : 1 : 1), (-3/4 : 7/8 : 1)]

        In fact this curve has rank 2 so no more than 2 points will ever be
        output, but we are not using this fact.

        ::

            sage: E.saturation(_)
            ([(-1 : 1 : 1), (-3/4 : 7/8 : 1)], 1, 0.152460177943144)

        What this shows is that if the rank is 2 then the points listed do
        generate the Mordell-Weil group (mod torsion). Finally,

        ::

            sage: E.rank()
            2

        If we only need one independent generator::

            sage: E.point_search(5, verbose=False, rank_bound=1)
            [(-2 : 0 : 1)]

        """
        from sage.libs.ratpoints import ratpoints
        from sage.functions.all import exp
        from sage.rings.arith import GCD
        H = exp(float(height_limit)) # max(|p|,|q|) <= H, if x = p/q coprime
        coeffs = [16*self.b6(), 8*self.b4(), self.b2(), 1]
        points = []
        a1 = self.a1()
        a3 = self.a3()
        new_H = H*2 # since we change the x-coord by 2 below
        for X,Y,Z in ratpoints(coeffs, new_H, verbose):
            if Z == 0: continue
            z = 2*Z
            x = X/2
            y = (Y/z - a1*x - a3*z)/2
            d = GCD((x,y,z))
            x = x/d
            if max(x.numerator().abs(), x.denominator().abs()) <= H:
                y = y/d
                z = z/d
                points.append(self((x,y,z)))
                if rank_bound is not None:
                    points = self.saturation(points, verbose=verbose)[0]
                    if len(points) == rank_bound:
                        break
        if rank_bound is None:
            points = self.saturation(points, verbose=verbose)[0]
        return points

search_src("height bound")
libs/ratpoints.pyx:156: # Set the height bound: libs/mwrank/mwrank.pyx:338: The Silverman height bound for this elliptic curve. libs/mwrank/mwrank.pyx:365: The Cremona-Prickett-Siksek height bound for this elliptic curve. libs/mwrank/mwrank.pyx:401: A height bound for this elliptic curve. libs/mwrank/mwrank.pyx:409: Cremona_Prickett-Siksek height bounds. libs/mwrank/mwrank.pyx:1021: - ``firstlim`` (int, default 20) -- naive height bound on libs/mwrank/mwrank.pyx:1026: - ``secondlim`` (int, default 8) -- naive height bound on libs/mwrank/interface.py:701: Return the Cremona-Prickett-Siksek height bound. This is a libs/mwrank/interface.py:724: Return the Silverman height bound. This is a floating point rings/arith.py:53: A height bound may be specified to indicate the maximum coefficient rings/arith.py:57: only possible minimal polynomial satisfying the height bound, or no rings/arith.py:238: raise NotImplementedError("proof and height bound only implemented for real and complex numbers") schemes/elliptic_curves/height.py:1941: print "height bound in [%s, %s]" % (mu, mu*eps) schemes/elliptic_curves/ell_number_field.py:2113: It can happen that no points are found if the height bounds schemes/elliptic_curves/heegner.py:6542: verbose("Heegner height bound = %s"%h) schemes/elliptic_curves/heegner.py:6688: verbose("Heegner height bound = %s"%h) schemes/elliptic_curves/ell_rational_field.py:2222: Return the Cremona-Prickett-Siksek height bound. This is a schemes/elliptic_curves/ell_rational_field.py:2263: Return the Silverman height bound. This is a positive real schemes/projective/projective_morphism.py:2188: is determined by the height bound `B`. Then apply the the LLL algorithm to determine if the lift schemes/projective/projective_morphism.py:2199: - ``B`` - a positive integer - the height bound for a rational preperiodic point. (optional) matrix/matrix_cyclo_dense.pyx:1674: verbose("using height bound %s"%height_bound, level=echelon_verbose_level)
E = mwrank_EllipticCurve([0, 0, 0, -1002231243161, 0])
E.CPS_height_bound??
   File: /usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/libs/mwrank/interface.py
   Source:
       def CPS_height_bound(self):
        r"""
        Return the Cremona-Prickett-Siksek height bound.  This is a
        floating point number `B` such that if `P` is a point on the
        curve, then the naive logarithmic height `h(P)` is less than
        `B+\hat{h}(P)`, where `\hat{h}(P)` is the canonical height of
        `P`.

        .. warning::

           We assume the model is minimal!

        EXAMPLES::

            sage: E = mwrank_EllipticCurve([0, 0, 0, -1002231243161, 0])
            sage: E.CPS_height_bound()
            14.163198527061496
            sage: E = mwrank_EllipticCurve([0,0,1,-7,6])
            sage: E.CPS_height_bound()
            0.0
        """
        return self.__curve.cps_bound()