## Assorted Magma programs

Some of these may have been incorporated into recent releases and hence are now redundant:

• nfhtbound.m: intrinsics implementing both Silverman and Cremona-Prickett-Siksek bounds on naive and canonical heights for elliptic curves over number fields. Released under GPL.
• conicsFF.m: Functions to solve and parametrize conics over function fields of the form F(t1,t2,...,tn), where F is a field of characteristic not 2, following Cremona & van Hoeij, implemented by Cremona and Roberts.
1. intrinsic Conic(S::SeqEnum[RngElt]) -> CrvCon
For a sequence of coefficients [a,b,c,d,e,f], returns the conic defined by a*X^2+b*Y^2+c*Z^2+d*X*Y+e*Y*Z+f*X*Z; or for a sequence [a,b,c], returns the conic a*X^2+b*Y^2+c*Z^2
2. intrinsic Matrix(C::CrvCon) -> AlgMatElt
Returns the (symmetric) defining matrix M of the conic C i.e. C is given by the equation [X,Y,Z]*M*[X,Y,Z]^T where T denotes transpose.
3. intrinsic Conic(M::AlgMatElt) -> CrvCon
Returns the conic defined by the 3 x 3 matrix M
4. intrinsic HasRationalPoint_FldFun(C::CrvCon) -> BoolElt,Pt
Returns true if the Conic C has a point
5. intrinsic DS_Parametrization(C::CrvCon) -> MapSch
Parametrization of the conic C
• ternquadFT.m: Functions to solve non-diagonal conics over F(t) (i.e. tern(ary)quad(ratics)) using minimization and reduction of the associated symmetric 3x3 matrix of polynomials. The minimization step terminates iff there is a solution, giving an equivalent unimodular matrix (i.e. with constant determinant). Then the reduction step reduces the maximum degree of the entries, by copying the analogous algorithm over Z described by Gauss in Article 272 of Disquisitiones. This second step is not efficient except when F is a finite field; it leads to an equation over F which is then solved by recursion.
• esign.m: Function to compute local and global root numbers of elliptic curves, currrently only over Q.
1. intrinsic GlobalRootNumber(e::CrvEll) -> RngIntElt
{Given E, an elliptic curve over Q, returns +1 or -1, being the "global root number" or sign of the functional equation of L(E,s).}
2. intrinsic LocalRootNumber(e::CrvEll,p::RngIntElt) -> RngIntElt
{Given E, an elliptic curve over Q, and a prime number p, returns +1 or -1, being the "local root number" of E at p.}
• divpt.m: My function to simulate Inverse(MultiplicationByMMap(E,m)), giving a clean result when the given point cannot be divided by m
1. intrinsic DividePoint(pt::PtEll,m::RngIntElt) -> BoolElt, PtEll
{Given an point P on an elliptic curve E and a positive integer m, returns either true,Q if P=m*Q has a solution Q in E, else false,_ .}
This is now redundant: Magma 2.10 has a function DivisionPoints(P,m) which does what is required
• modsq.m: Utility functions for Qp^*/(Qp^*)^2 for p=infty,2 or odd primes
1. intrinsic Qpchar(p::RngIntElt) -> Map, Map
{Given a prime p or 0, returns two maps between Q_p^*/(Q_p^*)^2 and VectorSpace(GF(2),d) where d=1,2 or 3 for p=0,odd or 2.}
• modsq2.m: Useful functions from Stoll's CrvHyp package:
1. intrinsic MyResidueClassField(pid::RngOrdIdl) -> FldFin, Map
{ Given a prime ideal, returns the residue field Order(pid)/pid together with the reduction map from the ring of pid-integral elements in the corresponding number field to the residue field. This map has an inverse.}
2. intrinsic MakeModSquares(K::FldNum, pid::RngOrdIdl) -> ModTupFld, Map
{ (K::FldNum, pid::prime ideal in K) Returns a GF(2)-vector space V and a map K^* -> V with kernel the elements that are squares in the completion. }
3. intrinsic MakeIsSquare(pid::RngOrdIdl) -> UserProgram
{ Given a prime ideal in some order O, return a function that decides whether its argument (an element of O) is a square in the completion of O at pid. }
4. intrinsic MakeIsSquare(p::RngIntElt) -> UserProgram
{ Given a prime number p, return a function that decides whether its argument (an integer) is a square in Z_p. }
5. intrinsic MakeIsSquare(I::RngInt) -> UserProgram
{ Given a prime ideal pZ in the integers, return a function that decides whether its argument (an integer) is a square in Z_p. }
6. intrinsic MakeModSquares(K::FldNum, p::RngIntElt) -> ModTupFld, Map
{ (K::FldNum, p::rational prime) Returns a GF(2)-vector space V and a map K^* -> V with kernel the elements that are squares in all the completions of K at primes above p. }
• q4red.m: Stoll's functions for reducing an intersection of two quadric surfaces
1. intrinsic Covariant(Q1::RngMPolElt, Q2::RngMPolElt) -> AlgMatElt
{Compute the covariant of the pair of quadratic forms Q1, Q2.}
2. intrinsic Covariant(mat1::AlgMatElt, mat2::AlgMatElt) -> AlgMatElt
{Compute the covariant of a pair of symmetric 4x4 matrices.}
3. intrinsic Reduce(Q1::RngMPolElt, Q2::RngMPolElt : AdHocOnly := false, NoAdHoc := false) -> RngMPolElt, RngMPolElt, AlgMatElt
{Computes a reduced pencil in the SL_4(Z)-equivalence class of .}
• t3red.m: Stoll's functions for reducing a ternary cubic
1. intrinsic Flexes(C::RngMPolElt) -> SeqEnum
{Finds the real and complex flexes of a ternary cubic over Q.}
2. intrinsic LinesFromFlexes(flexes::SeqEnum) -> SeqEnum
{Given a sequence of nine flexes of a ternary cubic, finds the line through the 3 real flexes, its complementary factor, and the three real lines through a real and two complex flexes.}
3. intrinsic CovariantFromLines(lines::[RngMPolElt]) -> RngMPolElt
{Finds the covariant positive definite Hermitian form from the given lines through the flexes of a ternary cubic.}
4. intrinsic Covariant(C::RngMPolElt) -> RngMPolElt
{Computes the positive definite Hermitian covariant of a ternary cubic as a real quadratic form.}
5. intrinsic Reduce(C::RngMPolElt) -> RngMPolElt, AlgMatElt
{Computes a reduced form in the SL_3(Z)-equivalence class of C.}