Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
241782 views
1
/*********************************************************************
2
3
(c) Copyright 2006-2010 Salman Baig and Chris Hall
4
5
This file is part of ELLFF
6
7
ELLFF is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
11
12
ELLFF is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20
*********************************************************************/
21
22
ELLFF (for elliptic curve L-function over function fields) computes
23
L-functions for non-constant elliptic curves over F_q(t) with
24
gcd(q,6)=1. It is a C++ library built on top of Victor Shoup's NTL
25
library and hooks into Sage and PSage via Cython.
26
27
Its files are as follows:
28
29
* ell_surface.cpp/h: Contain the C++ class for elliptic curves
30
over a function field, i.e. elliptic surfaces over a finite
31
constant field, along with basic associated functions and
32
context switching (a la NTL).
33
34
* ell.cpp/h: Contain the C++ class for elliptic curves over finite
35
fields and the requisite functionality needed to count
36
points. These curves are assumed to have an elliptic surface
37
context.
38
39
* ellff.cpp: Auto-generated C++ code from ellff.pyx.
40
41
* ellff.pyx: Cython interface for ELLFF. In particular, contains
42
functions to create an elliptic curve over a funtion field as a
43
Sage object, compute its L-function, form pullbacks and
44
quadratic twists, and interface with the table of Euler factors
45
(i.e. traces of Frobenius).
46
47
* euler.cpp/h: C++ code to compute tables of Euler factors for a
48
curve, along with a pullback or quadratic twist of the
49
curve. This file also computes the coefficients used to compute
50
the L-function.
51
52
* helper.cpp/h: Contains various helper routines for working over
53
a polynomial ring over a finite field: order elements of F_p[x],
54
F_q, F_q[x]; convert elements of F_p[x], F_q, F_q[x] to unsigned
55
longs; enumerate elements in F_p[x], F_q, F_q[x]; evaluate
56
elements of F_q[x] at element of F_q; and exponentiation in
57
F_q^*
58
59
* interface.h: <SHB: This should be deprecated I think>
60
61
* jacobi.cpp/h: Computes the (abstract) Jacobi sum for elements in
62
F_q^*
63
64
* lzz_pEExtra.cpp/h: Contains various helper routines for working
65
over F_q: table of multiplicative inverses and square roots;
66
evaluation of the Legendre character; the action of Frobenius;
67
and context-switching
68
69
* lzz_pEratX.cpp/h: Contains code for elements in F_q(t) as
70
quotients of elements in F_q[t], building on top of NTL's
71
lzz_pEX code.
72
73
74