Prof. J. E. Cremona on Fri, 20 Jan 2006 11:13:02 +0100

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

Re: Two suggestions about elldata

A small adjustment to Bill's suggestion might be easier to use:

forell(E,N=N1,N2, seq )

where simultaneously N runs through conductors from N1 to N2 and E is
assigned to the successive curves of conductor N in turn;  moreover E
should be assigned ot the full data in the database, so
E=[E[1],E[2],E[3]] = [id string,  coeffs,  points].

I suggest also keeping the single string for the id, but providing a
little utility function as in my first posting to expand the id code
into a triple [N,"class",num].

If that could be implemented it would cover all possible uses that I can


Bill Allombert wrote:
> On Wed, Jan 18, 2006 at 09:28:59PM +0100, Bill Allombert wrote:
>>On Wed, Jan 18, 2006 at 03:36:14PM +0000, Prof. J. E. Cremona wrote:
>>>(1) As Bill has reported, although ellsearch() allows one to take from
>>>the database all elliptic curves with a given conductor, it is
>>>inefficient to do this in a loop, say from N=N1 to N=N2, since each call
>>>to ellsearch() causes the entire relevant database file to be read in.
>>>I suggest adding a function of the form
>>>forell(E,N1,N2, seq ) which would execute seq for all elliptic curves E
>>>in the database with N1 <= cond(E) <= N2;  which would only read each
>>>file once.
>>>That's my first wish-list suggestion (of 2006).
>>Here a patch that do that.
>>The issue I see is that there is no easy way to get the conductor from
>>the curve... which lead us to your second wishlist.
>>In particular there are no easy ways to rewrite src/test/in/ellglobalred
>>in term of forell.
> One solution would be to change forell to loop on conductors instead
> of curves, more precisely in forell(E,N1,N2, seq ), E would be set to
> a vector [cond, curve1, curve2,...,curven] where cond is the conductor
> and curve1,...,curven is the set of curves of conductor cond.
> We could call it forellcond(E, N1, N2, seq).
> This imply the user will have to write an embedded loop to process each
> curves, unless they are only interested in the numbers of curves by
> conductors.
> src/test/in/ellglobalred could then be rewritten in term of forellcond:
> check(L)=
> { local(e);
>   N = L[1];
>   for(i=2,#L,
>     e = L[i][2];
>     M = ellglobalred( ellinit(e, 1) )[1];
>     if (N != M, print(e," bad for N = ",N))
>   );
> }
> forellcond(L,0,9999,check(L))
> Opinions ?
> Cheers,
> Bill.

 Prof. J. E. Cremona             |
 University of Nottingham        | Tel.:  +44-115-9514920
 School of Mathematical Sciences | Fax:   +44-115-9514951
 University Park                 | Email:
 Nottingham NG7 2RD, UK          |

This message has been checked for viruses but the contents of an attachment
may still contain software viruses, which could damage your computer system:
you are advised to perform your own checks. Email communications with the
University of Nottingham may be monitored as permitted by UK legislation.