︠5063d9e1-a83c-4376-b499-0b8913852d98s︠ E = EllipticCurve('389a') ︡2a7233c2-9820-48df-a950-5fb9b901429a︡ ︠929fd3e6-f82f-419e-92ae-96068d4784bes︠ E.point_search?? ︡bce5896b-18f7-4fbe-8a2a-c71d937c4dfa︡{"code":{"source":" File: /usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py\n Source:\n def point_search(self, height_limit, verbose=False, rank_bound=None):\n \"\"\"\n Search for points on a curve up to an input bound on the naive\n logarithmic height.\n\n INPUT:\n\n\n - ``height_limit (float)`` - bound on naive height\n\n - ``verbose (bool)`` - (default: False)\n\n If True, report on each point as found together with linear\n relations between the points found and the saturation process.\n\n If False, just return the result.\n\n - ``rank_bound (bool)`` - (default: None)\n\n If provided, stop searching for points once we find this many\n independent nontorsion points.\n\n OUTPUT: points (list) - list of independent points which generate\n the subgroup of the Mordell-Weil group generated by the points\n found and then saturated.\n\n .. warning::\n\n height_limit is logarithmic, so increasing by 1 will cause\n the running time to increase by a factor of approximately\n 4.5 (=exp(1.5)).\n\n IMPLEMENTATION: Uses Michael Stoll's ratpoints library.\n\n EXAMPLES::\n\n sage: E=EllipticCurve('389a1')\n sage: E.point_search(5, verbose=False)\n [(-1 : 1 : 1), (-3/4 : 7/8 : 1)]\n\n Increasing the height_limit takes longer, but finds no more\n points::\n\n sage: E.point_search(10, verbose=False)\n [(-1 : 1 : 1), (-3/4 : 7/8 : 1)]\n\n In fact this curve has rank 2 so no more than 2 points will ever be\n output, but we are not using this fact.\n\n ::\n\n sage: E.saturation(_)\n ([(-1 : 1 : 1), (-3/4 : 7/8 : 1)], 1, 0.152460177943144)\n\n What this shows is that if the rank is 2 then the points listed do\n generate the Mordell-Weil group (mod torsion). Finally,\n\n ::\n\n sage: E.rank()\n 2\n\n If we only need one independent generator::\n\n sage: E.point_search(5, verbose=False, rank_bound=1)\n [(-2 : 0 : 1)]\n\n \"\"\"\n from sage.libs.ratpoints import ratpoints\n from sage.functions.all import exp\n from sage.rings.arith import GCD\n H = exp(float(height_limit)) # max(|p|,|q|) <= H, if x = p/q coprime\n coeffs = [16*self.b6(), 8*self.b4(), self.b2(), 1]\n points = []\n a1 = self.a1()\n a3 = self.a3()\n new_H = H*2 # since we change the x-coord by 2 below\n for X,Y,Z in ratpoints(coeffs, new_H, verbose):\n if Z == 0: continue\n z = 2*Z\n x = X/2\n y = (Y/z - a1*x - a3*z)/2\n d = GCD((x,y,z))\n x = x/d\n if max(x.numerator().abs(), x.denominator().abs()) <= H:\n y = y/d\n z = z/d\n points.append(self((x,y,z)))\n if rank_bound is not None:\n points = self.saturation(points, verbose=verbose)[0]\n if len(points) == rank_bound:\n break\n if rank_bound is None:\n points = self.saturation(points, verbose=verbose)[0]\n return points\n","mode":"python","lineno":-1,"filename":null}}︡ ︠ad1d2bf6-fa88-4ada-9edb-1c85ba1346ecs︠ search_src("height bound") ︡9f155b4f-1bfb-4c8e-a937-1ed92c27893a︡{"stdout":"libs/ratpoints.pyx:156: # Set the height bound:\nlibs/mwrank/mwrank.pyx:338: The Silverman height bound for this elliptic curve.\nlibs/mwrank/mwrank.pyx:365: The Cremona-Prickett-Siksek height bound for this elliptic curve.\nlibs/mwrank/mwrank.pyx:401: A height bound for this elliptic curve.\nlibs/mwrank/mwrank.pyx:409: Cremona_Prickett-Siksek height bounds.\nlibs/mwrank/mwrank.pyx:1021: - ``firstlim`` (int, default 20) -- naive height bound on\nlibs/mwrank/mwrank.pyx:1026: - ``secondlim`` (int, default 8) -- naive height bound on\nlibs/mwrank/interface.py:701: Return the Cremona-Prickett-Siksek height bound. This is a\nlibs/mwrank/interface.py:724: Return the Silverman height bound. This is a floating point\nrings/arith.py:53: A height bound may be specified to indicate the maximum coefficient\nrings/arith.py:57: only possible minimal polynomial satisfying the height bound, or no\nrings/arith.py:238: raise NotImplementedError(\"proof and height bound only implemented for real and complex numbers\")\nschemes/elliptic_curves/height.py:1941: print \"height bound in [%s, %s]\" % (mu, mu*eps)\nschemes/elliptic_curves/ell_number_field.py:2113: It can happen that no points are found if the height bounds\nschemes/elliptic_curves/heegner.py:6542: verbose(\"Heegner height bound = %s\"%h)\nschemes/elliptic_curves/heegner.py:6688: verbose(\"Heegner height bound = %s\"%h)\nschemes/elliptic_curves/ell_rational_field.py:2222: Return the Cremona-Prickett-Siksek height bound. This is a\nschemes/elliptic_curves/ell_rational_field.py:2263: Return the Silverman height bound. This is a positive real\nschemes/projective/projective_morphism.py:2188: is determined by the height bound `B`. Then apply the the LLL algorithm to determine if the lift\nschemes/projective/projective_morphism.py:2199: - ``B`` - a positive integer - the height bound for a rational preperiodic point. (optional)\nmatrix/matrix_cyclo_dense.pyx:1674: verbose(\"using height bound %s\"%height_bound, level=echelon_verbose_level)\n"}︡{"stdout":"\n"}︡ ︠b31484f5-e05e-4b64-952c-7d5a8ef13d13s︠ E = mwrank_EllipticCurve([0, 0, 0, -1002231243161, 0]) E.CPS_height_bound?? ︡7c7af945-94aa-494d-a889-cf9127498fd0︡{"code":{"source":" File: /usr/local/sage/sage-6.4/local/lib/python2.7/site-packages/sage/libs/mwrank/interface.py\n Source:\n def CPS_height_bound(self):\n r\"\"\"\n Return the Cremona-Prickett-Siksek height bound. This is a\n floating point number `B` such that if `P` is a point on the\n curve, then the naive logarithmic height `h(P)` is less than\n `B+\\hat{h}(P)`, where `\\hat{h}(P)` is the canonical height of\n `P`.\n\n .. warning::\n\n We assume the model is minimal!\n\n EXAMPLES::\n\n sage: E = mwrank_EllipticCurve([0, 0, 0, -1002231243161, 0])\n sage: E.CPS_height_bound()\n 14.163198527061496\n sage: E = mwrank_EllipticCurve([0,0,1,-7,6])\n sage: E.CPS_height_bound()\n 0.0\n \"\"\"\n return self.__curve.cps_bound()\n","mode":"python","lineno":-1,"filename":null}}︡ ︠7a34d292-0c34-4f44-8fa7-97a359214fa9︠