Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
241818 views
1
June 1, 2008 smalljac version 3.0 readme.txt
2
3
The major improvements in smalljac version 3 are in genus 1 performance.
4
5
Specialized root-finding algorithms for cubics and quartics over finite
6
fields made the computation of 3-torsion competitive for all but very small p
7
(the time to factor a quartic using standard methods exceeds the time
8
required to compute a_p until p is quite large (outside the feasible range),
9
This is why we didn't use 3-torsion information previously).
10
11
Together with a number of improvements to the genus 1 point arithmetic,
12
performance has improved by more than a factor of 2. 3-torsion information
13
is also used, in a more limited way, in genus 2, via the modular polynomial
14
of Gaudry and Schost (this is practical only for largish p, say > 10^6).
15
16
Also included are two further optimizations suggested at ANTS 8: the use of
17
4-torsion information via point-halving (thanks to Noam Elkies), and a judicious
18
selection of the first giant step in the interval which minimizes the hamming weight
19
of the scalar multiple used to compute it (thanks to Dan Bernstein).
20
21
smalljac version 3 also contains several bug fixes, most of which arose only for
22
exceptional curves (Jacobians with extra endomorphisms) and/or small primes.
23
24
The following files are needed to compile the genus 1and genus 2 versions
25
of smalljac, including demonstration programs. For genus 3, David Harvey's
26
zn_poly and NTL are also required and not included here.
27
28
GMP is required, as is GCC (the core genus 1 code does not need GMP).
29
This code is only supported on 64-bit Intel/AMD platforms (life is too short
30
to spend it worrying about overflowing a 32-bit integer).
31
32
demo1.c
33
demo2.c
34
demo3.c
35
demo4.c
36
lpoly.c
37
jgroup.c
38
smalljac.c
39
smalljac_g23.c
40
smalljactab.c
41
jacorder.c
42
jacstructure.c
43
jac.c
44
hecurve.c
45
hecurve1.c
46
hecurve1x.c
47
hecurve2.c
48
hecurve3.c
49
pointcount.c
50
ffpoly.c
51
ffpoly_g2tor3.c
52
ffpolyext.c
53
ff.c
54
ffext.c
55
mpzutil.c
56
cstd.c
57
58
smalljac.h
59
smalljac_g23.h
60
smalljac_internal.h
61
smalljactab.h
62
jacorder.h
63
jac.h
64
hecurve.h
65
pointcount.h
66
polydisc.h
67
ffwrapper.h
68
ffpoly.h
69
g2tor3poly.h
70
ff.h
71
asm.h
72
mpzutil.h
73
cstd.h
74
75
The script builddemo compiles and links the demo programs: demo1, demo2,
76
demo3, demo4, lpoly, and jgroup (yes, I will eventually put together a makefile).
77
78
The main interface for applications is defined in smalljac.h, and is used by
79
the demo programs above.
80
81
The finite field representation is now set by default to 32 bits, meaning that
82
prime fields up to 2^31 in size may be used. This can be changed to 64
83
bits by defining SMALLJAC_FF_64BITS to be 1 in smalljac.h. Doing so
84
will decrease performance by five to ten percent but increase the maximum
85
field size to 2^63.
86
87
Currently, only genus 1 and 2 curves are fully supported
88
(but in genus 2 only curves with a single point at infinity).
89
Please report bugs (on 64-bit platforms) to [email protected].
90
91
Eventually genus 3 curves will be fully supported (they work now only in
92
the typical case). I also hope to add support for genus 2 curves with zero or
93
two points at infinity (real hyperelliptic curves).
94
95
The following references occur in the code where specific algorithms are
96
implemented. This is by no means a comprehensive bibliography, The
97
code does not generally cite references for well known algorithms (e.g.
98
Shanks' baby-steps giant-steps algorithm and many others), except
99
where a direct implementation of a specific version was used.
100
101
[CANT] Henri Cohen,
102
"A Course in Computational Algebraic Number Theory", Springer, 1996.
103
104
[HECHECC] Henri Cohen (ed.) et al.,
105
"Handbook of Elliptic Curve and Hyperelliptic Curve Cryptography",
106
Chapman and Hall, 2006.
107
108
[KedlayaSutherland2007] Kiran S. Kedlaya and Andrew V. Sutherland,
109
"Computing L-series of hyperelliptic curves", to appear in ANTS VIII,
110
2008, http://arxiv.org/abs/arXiv:0801.2778v2.
111
112
[SutherlandThesis] Andrew V. Sutherland,
113
"Order computations in generic groups", Ph.D. thesis, MIT, 2007,
114
//groups.csail.mit.edu/cis/theses/sutherland-phd.pdf.
115
116
[Sutherland2007] Andrew V. Sutherland,
117
"A generic approach to searching for Jacobians", to appear in Math. Comp.,
118
2007, http://arxiv.org/abs/0708.3168v2.
119
120