Function: ellsearch
Section: elliptic_curves
C-Name: ellsearch
Prototype: G
Help: ellsearch(N): returns all curves in the elldata database matching
 constraint N:  given name (N = "11a1" or [11,0,1]),
 given isogeny class (N = "11a" or [11,0]), or
 given conductor (N = 11, "11", or [11]).
Doc: This function finds all curves in the \tet{elldata} database satisfying
 the constraint defined by the argument $N$:

 \item if $N$ is a character string, it selects a given curve, e.g.
 \kbd{"11a1"}, or curves in the given isogeny class, e.g. \kbd{"11a"}, or
 curves with given conductor, e.g. \kbd{"11"};

 \item if $N$ is a vector of integers, it encodes the same constraints
 as the character string above, according to the \tet{ellconvertname}
 correspondance, e.g. \kbd{[11,0,1]} for \kbd{"11a1"}, \kbd{[11,0]} for
 \kbd{"11a"} and \kbd{[11]} for \kbd{"11"};

 \item if $N$ is an integer, curves with conductor $N$ are selected.

 If $N$ codes a full curve name, for instance \kbd{"11a1"} or \kbd{[11,0,1]},
 the output format is $[N, [a_{1},a_{2},a_{3},a_{4},a_{6}], G]$ where
 $[a_{1},a_{2},a_{3},a_{4},a_{6}]$ are the coefficients of the Weierstrass
 equation of the curve and $G$ is a $\Z$-basis of the free part of the
 \idx{Mordell-Weil group} attached to the curve.
 \bprog
 ? ellsearch("11a3")
 %1 = ["11a3", [0, -1, 1, 0, 0], []]
 ? ellsearch([11,0,3])
 %2 = ["11a3", [0, -1, 1, 0, 0], []]
 @eprog\noindent

 If $N$ is not a full curve name, then the output is a vector of all matching
 curves in the above format:
 \bprog
 ? ellsearch("11a")
 %1 = [["11a1", [0, -1, 1, -10, -20], []],
       ["11a2", [0, -1, 1, -7820, -263580], []],
       ["11a3", [0, -1, 1, 0, 0], []]]
 ? ellsearch("11b")
 %2 = []
 @eprog

Variant: Also available is \fun{GEN}{ellsearchcurve}{GEN N} that only
 accepts complete curve names (as \typ{STR}).
