summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Raum <martin@raum-brothers.eu>2014-06-11 18:28:50 +0200
committerMartin Raum <martin@raum-brothers.eu>2014-11-14 09:47:46 +0100
commit3451307c14a5f02b51c2d252f6ba496a6ef261a2 (patch)
treee5c753f866c2ab7a26bcd35d2683168db7fe6596
parentFix doctests for classical Jacobi forms. (diff)
Add global examples.
-rw-r--r--src/sage/modular/jacobi/classical.py29
-rw-r--r--src/sage/modular/jacobi/classical_weak.py43
-rw-r--r--src/sage/modular/jacobi/higherrank.py54
3 files changed, 118 insertions, 8 deletions
diff --git a/src/sage/modular/jacobi/classical.py b/src/sage/modular/jacobi/classical.py
index 94e58e0..ada413b 100644
--- a/src/sage/modular/jacobi/classical.py
+++ b/src/sage/modular/jacobi/classical.py
@@ -1,9 +1,32 @@
r"""
-Fourier expansions of classical weak Jacobi forms.
+Fourier expansions of classical Jacobi forms.
AUTHOR:
- Martin Raum
+
+EXAMPLES:
+
+To compute a basis of weight `k` and index `m \in \ZZ` Jacobi forms,
+we call ``classical_jacobi_forms``. This compute weight `10`, index
+`2` Jacobi forms up to precision `5`.
+
+::
+
+ sage: from sage.modular.jacobi.all import classical_jacobi_forms
+ sage: classical_jacobi_forms(10, 2, 5)
+ [{(1, 2): -329472, (3, 2): -318012963840, (0, 0): 823680,
+ (3, 0): -1497954991104, (3, 1): -1045412020224, (2, 1): -27622932480,
+ (1, 1): -42172416, (2, 0): -47908194048, (2, 2): -4157936640,
+ (4, 2): -5574898188288, (1, 0): -132447744, (4, 1): -13216244760576,
+ (4, 0): -17346153217536},
+ {(1, 2): 1248, (3, 2): 1123200, (3, 0): 913536,
+ (3, 1): -1707264, (2, 1): 149760, (1, 1): 9984, (2, 0): -19968,
+ (2, 2): -149760, (4, 2): -2715648, (1, 0): -22464, (4, 1): 4253184,
+ (4, 0): 359424}]
+
+For description of Fourier expansions, see the documentation of
+classical weak Jacobi forms.
"""
#===============================================================================
@@ -99,7 +122,7 @@ def _classical_jacobi_forms_as_weak_jacobi_forms(k, m, algorithm="skoruppa"):
INPUT:
- - `k -- An integer.
+ - `k` -- An integer.
- `m` -- A non-negative integer.
@@ -139,7 +162,7 @@ def classical_jacobi_forms(k, m, prec, algorithm="skoruppa"):
INPUT:
- - `k -- An integer.
+ - `k` -- An integer.
- `m` -- A non-negative integer.
diff --git a/src/sage/modular/jacobi/classical_weak.py b/src/sage/modular/jacobi/classical_weak.py
index 2bd0d73..402b480 100644
--- a/src/sage/modular/jacobi/classical_weak.py
+++ b/src/sage/modular/jacobi/classical_weak.py
@@ -7,8 +7,43 @@ AUTHOR:
REFERENCES:
-[Sk84] - Skoruppa, Über den Zusammenhang zwischen Jacobiformen und
- Modulformen halbganzen Gewichts, 1984, University of Bonn.
+.. [Sk84] Skoruppa, Uber den Zusammenhang zwischen Jacobiformen und
+ Modulformen halbganzen Gewichts, 1984, University of Bonn.
+
+EXAMPLES::
+
+To compute a basis of weight `k` and index `m \in \ZZ` weak Jacobi
+forms, we call ``classical_weak_jacobi_forms``. This compute weight
+`9`, index `2` Jacobi forms up to precision `5`.
+
+::
+
+ sage: from sage.modular.jacobi.all import *
+ sage: jforms = classical_weak_jacobi_forms(9, 2, 5)
+ sage: jforms
+ [{(0, 1): 660, (3, 1): -3699449160, (4, 1): -56862841860, (1, 1): -172260, (2, 1): -89901900}]
+
+
+Fourier expansions are represented as dictionaries. Fourier
+coefficients of Jacobi forms are index by pairs `(n,r)` of integers.
+We call `(n,r)` reduced if `0 \le r \le m`. Fourier expansions are
+given in terms of Fourier coefficients of reduced index. They can be
+accessed directly; If a reduced pair does not occur as a key and `n`
+does not exceed the prescribed precision, then the corresponding
+Fourier coefficient vanishes.
+
+To access Fourier coefficients of non reduced index, we compute the attached reduction by ``reduce_classical_jacobi_fe_index``::
+
+ sage: reduce_classical_jacobi_fe_index((2, 3), 2)
+ ((1, 1), -1)
+
+As a result, we obtain `(n', r')` and a sign `s`. The Fourier
+coefficient at `(n,r)` equals `s^k` times the coefficient at `(n',
+r')`. In the specific examples (`k` is odd), the `(2,3)`-th Fourier
+coefficient of the first basis element is equal to::
+
+ sage: -jforms[0][(1,1)]
+ 172260
"""
#===============================================================================
@@ -141,7 +176,7 @@ def classical_weak_jacobi_forms(k, m, prec, algorithm="skoruppa") :
r"""
INPUT:
- - `k -- An integer.
+ - `k` -- An integer.
- `m` -- A non-negative integer.
@@ -178,7 +213,7 @@ def _classical_weak_jacobi_taylor_coefficients(k, m) :
INPUT:
- - `k -- An integer.
+ - `k` -- An integer.
- `m` -- A non-negative integer.
diff --git a/src/sage/modular/jacobi/higherrank.py b/src/sage/modular/jacobi/higherrank.py
index cf0e8e4..07a4a83 100644
--- a/src/sage/modular/jacobi/higherrank.py
+++ b/src/sage/modular/jacobi/higherrank.py
@@ -7,7 +7,59 @@ AUTHOR:
REFERENCE:
-- [Ra] Martin Raum, Computation of Jacobi forms degree 1 and higher rank index.
+.. [Ra] Martin Raum, Computation of Jacobi forms degree 1 and higher rank index.
+
+EXAMPLES::
+
+To compute a basis of weight `k` and index `m` Jacobi forms, we call
+``higherrank_jacobi_forms``. The index `m` is a quadratic form over
+`\ZZ`. This compute weight `10` Jacobi forms up to precision `20`.
+
+::
+
+ sage: from sage.modular.jacobi.all import *
+ sage: m = QuadraticForm(ZZ, 2, [1,1,1])
+ sage: jforms = higherrank_jacobi_forms(10, m, 5)
+ sage: jforms
+ [{(4, (1, 1)): -7165440, (2, (1, 1)): -12672, (1, (0, 0)): 0,
+ (3, (0, 0)): -1416960, (2, (0, 0)): -59130, (4, (0, 0)): -14346720,
+ (3, (1, 1)): -558045, (1, (1, 1)): -45, (0, (0, 0)): 1},
+ {(4, (1, 1)): -155/3, (2, (1, 1)): 5/3, (1, (0, 0)): 1,
+ (3, (0, 0)): 90, (2, (0, 0)): -15, (4, (0, 0)): -248,
+ (3, (1, 1)): -4/3, (1, (1, 1)): -1/6, (0, (0, 0)): 0}]
+
+Fourier expansions are represented as dictionaries. They are similar to the ones used for classical Jacobi forms. Fourier
+coefficients of Jacobi forms are index by pairs `(n,r)`, where `n` is an integer and `r` is a tuple. The notion of reduced `r` depends on a choice and is dictated by the following output::
+
+ sage: (r_classes, _) = higherrank_jacobi_r_classes(m)
+ sage: r_classes
+ [[(0, 0)],
+ [(1, 1), (-1, -1), (0, 1), (0, -1), (1, 0), (-1, 0)]]
+
+This is a list of lists, the first elements of which are, by convention, reduced. They are guarenteed to have minimal length in their class in `\ZZ^l / m \ZZ^l`, where `l` is the rank of `m` and `m` is identified with its Gram matrix::
+
+ sage: ZZ^m.dim() / m.matrix().row_module()
+ Finitely generated module V/W over Integer Ring with invariants (3)
+
+Fourier expansions are given in terms of Fourier coefficients of
+reduced index. They can be accessed directly; If a reduced pair does
+not occur as a key and `n` does not exceed the prescribed precision,
+then the corresponding Fourier coefficient vanishes.
+
+To access Fourier coefficients of non reduced index, we compute the attached reduction by ``reduce_classical_jacobi_fe_index``::
+
+ sage: m_adj = QuadraticForm(2 * m.matrix().adjoint())
+ sage: m_span = m.matrix().row_module()
+ sage: reduce_higherrank_jacobi_fe_index((4, (2,1)), m, r_classes, m_adj, m_span)
+ ((3, (0, 0)), 1)
+
+As a result, we obtain `(n', r')` and a sign `s`. The Fourier
+coefficient at `(n,r)` equals `s^k` times the coefficient at `(n',
+r')`. In the specific examples (`k` is odd), the `(4, (2,1))`-th Fourier
+coefficient of the first basis element is equal to::
+
+ sage: jforms[0][(3,(0,0))]
+ -1416960
"""
#===============================================================================