Aurel Page on Thu, 07 Mar 2024 08:37:32 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: question on inconsistent results for a curve and ellrank() command


When fixing the random seed and varying the precision, you get the same results:

? setrand(1);
? ellrank(E,1)
% = [2, 6, 0, [[-68349492379463773635627069600/12769, 21338619687688795682928514252421827970088000/1442897], [24769306495896066304571392, 150515871036796575853516933113202757632]]]
? \p 100
   realprecision = 115 significant digits (100 digits displayed)
? setrand(1);
? ellrank(E,1)
% = [2, 6, 0, [[-68349492379463773635627069600/12769, 21338619687688795682928514252421827970088000/1442897], [24769306495896066304571392, 150515871036796575853516933113202757632]]]
? \p 200
   realprecision = 211 significant digits (200 digits displayed)
? setrand(1);
? ellrank(E,1)
% = [2, 6, 0, [[-68349492379463773635627069600/12769, 21338619687688795682928514252421827970088000/1442897], [24769306495896066304571392, 150515871036796575853516933113202757632]]]
? \p 500
   realprecision = 500 significant digits
? setrand(1);
? ellrank(E,1)
% = [2, 6, 0, [[-68349492379463773635627069600/12769, 21338619687688795682928514252421827970088000/1442897], [24769306495896066304571392, 150515871036796575853516933113202757632]]]

Aurel

On 07/03/2024 08:34, Aurel Page wrote:
Dear Randall,

Bill will confirm, but I think ellrank uses a random search, so the points found may not be the same on several runs. I don't think this has anything to do with the precision.
For instance I get:
? ellrank(E,1)
% = [2, 6, 0, [[-821148234320121552464836608/121, 22227642712180677905417915898820314918912/1331]]]
? ellrank(E,1)
% = [2, 6, 0, [[-371764877985768391740000, 1733635091788436792108632377956904000], [482298396787552594734284800, 10726073559724236251459173261972663500800]]]
? ellrank(E,1)
% = [2, 6, 0, [[1910041765787625231041280, 6699967211953306552674675136155240960]]]
? ellrank(data,1)
% = [4, 6, 0, [[-2604689033065838647568640, 8678086907094504656562057134370808320], [-1406975789099557808651520, 5167717070222070579741742214157519360], [1005530876255752038297064960/81, 44725001024807552828328543783945972536320/729]]]

Note that if you want to start again with higher effort because you did not find all the points, you can provide the previously found points to ellrank (optional argument points).

Cheers,
Aurel

On 07/03/2024 02:12, American Citizen wrote:
Hello:

See attached gp-pari file.

While running my programs I stumbled across an inconsistent results which caused me to take a careful look.

Here are those results involving a certain elliptic curve:

E = [0, 12304376939822994932659524, 0, -3648259547053109398533591982691229700073064038400, 0]

3 points of the 4 points Mordell-Weil basis (set) [ I had to do some work to finally settle down on these 3 points ]

p = [[-999779060917633308399360, 3866142351194747967608412122674782720], [-293883589543938115962240, 1452405131779215974552917691531685120], [-1406975789099557808651520, 5167717070222070579741742214157519360]]

I am trying to recover the 4th point right now.

However when I run the ellrank(E,{effort}) command, differing results come up.

[0, 12304376939822994932659524, 0, -3648259547053109398533591982691229700073064038400, 0] [[-999779060917633308399360, 3866142351194747967608412122674782720], [-293883589543938115962240, 1452405131779215974552917691531685120], [-1406975789099557808651520, 5167717070222070579741742214157519360]]
e is a rank 4 curve with SHA > 1
setting precision = 19
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[2, 6, 0, [[-293883589543938115962240, 1452405131779215974552917691531685120]]]
ellrank(E,3)
setting precision = 38
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[2, 6, 0, [[-6105797019069920466053760, 15917389406358134595823780451205131520], [-1910041765787625231041280, 6699967211953306552674675136155240960]]]
ellrank(E,3)
setting precision = 57
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[2, 6, 0, [[-2604689033065838647568640, 8678086907094504656562057134370808320]]]
ellrank(E,3)
setting precision = 84
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[2, 6, 0, [[482298396787552594734284800, 10726073559724236251459173261972663500800]]]
ellrank(E,3)
setting precision = 96
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[0, 6, 0, []]
ellrank(E,3)
setting precision = 115
ellrank(E)
[0, 6, 0, []]
ellrank(E,2)
[2, 6, 0, [[-1406975789099557808651520, 5167717070222070579741742214157519360], [-999779060917633308399360, 3866142351194747967608412122674782720]]]
ellrank(E,3)
How would one know which exact precision and which effort setting to use, to recover at least 2 if not 3 points for the Mordell Weil basis??? Right now it appears that this is just hit-or-miss. So how do we aim to get the maximum hit? Some of the attempts come up empty-handed. This doesn't seem right.

Randall