summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Raum <martin@raum-brothers.eu>2014-11-13 13:28:15 +0100
committerMartin Raum <martin@raum-brothers.eu>2014-11-14 09:47:47 +0100
commit061f1365e01d594da85025dbe1e56a28479625ae (patch)
tree53638ea1b6455e700716dd2036a57f82242a88c9
parentCorrect doctests of Jacobi form tests (diff)
Adopt to new spacing in doctests.u/mraum/ticket/16448
-rw-r--r--src/sage/modular/jacobi/classical.py48
-rw-r--r--src/sage/modular/jacobi/classical_weak.py23
-rw-r--r--src/sage/modular/jacobi/higherrank.py25
-rw-r--r--src/sage/modular/jacobi/vector_valued.py47
4 files changed, 106 insertions, 37 deletions
diff --git a/src/sage/modular/jacobi/classical.py b/src/sage/modular/jacobi/classical.py
index f5b8b29..636d7c5 100644
--- a/src/sage/modular/jacobi/classical.py
+++ b/src/sage/modular/jacobi/classical.py
@@ -15,15 +15,31 @@ we call ``classical_jacobi_forms``. This compute weight `10`, index
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}]
+ [{(0, 0): 823680,
+ (1, 0): -132447744,
+ (1, 1): -42172416,
+ (1, 2): -329472,
+ (2, 0): -47908194048,
+ (2, 1): -27622932480,
+ (2, 2): -4157936640,
+ (3, 0): -1497954991104,
+ (3, 1): -1045412020224,
+ (3, 2): -318012963840,
+ (4, 0): -17346153217536,
+ (4, 1): -13216244760576,
+ (4, 2): -5574898188288},
+ {(1, 0): -22464,
+ (1, 1): 9984,
+ (1, 2): 1248,
+ (2, 0): -19968,
+ (2, 1): 149760,
+ (2, 2): -149760,
+ (3, 0): 913536,
+ (3, 1): -1707264,
+ (3, 2): 1123200,
+ (4, 0): 359424,
+ (4, 1): 4253184,
+ (4, 2): -2715648}]
For description of Fourier expansions, see the documentation of
classical weak Jacobi forms.
@@ -181,7 +197,19 @@ def classical_jacobi_forms(k, m, prec, algorithm="skoruppa"):
sage: from sage.modular.jacobi.classical import *
sage: k = 4; m = 2; prec = 5
sage: classical_jacobi_forms(k, m, prec)
- [{(1, 2): 564480, (3, 2): 33868800, (0, 0): 40320, (3, 0): 51932160, (3, 1): 54190080, (2, 1): 18063360, (1, 1): 2580480, (2, 0): 23143680, (2, 2): 11289600, (4, 2): 95477760, (1, 0): 3386880, (4, 1): 108380160, (4, 0): 138862080}]
+ [{(0, 0): 40320,
+ (1, 0): 3386880,
+ (1, 1): 2580480,
+ (1, 2): 564480,
+ (2, 0): 23143680,
+ (2, 1): 18063360,
+ (2, 2): 11289600,
+ (3, 0): 51932160,
+ (3, 1): 54190080,
+ (3, 2): 33868800,
+ (4, 0): 138862080,
+ (4, 1): 108380160,
+ (4, 2): 95477760}]
TESTS:
diff --git a/src/sage/modular/jacobi/classical_weak.py b/src/sage/modular/jacobi/classical_weak.py
index c4ac4c2..70217f3 100644
--- a/src/sage/modular/jacobi/classical_weak.py
+++ b/src/sage/modular/jacobi/classical_weak.py
@@ -21,7 +21,11 @@ forms, we call ``classical_weak_jacobi_forms``. This compute weight
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}]
+ [{(0, 1): 660,
+ (1, 1): -172260,
+ (2, 1): -89901900,
+ (3, 1): -3699449160,
+ (4, 1): -56862841860}]
Fourier expansions are represented as dictionaries. Fourier
@@ -189,8 +193,17 @@ def classical_weak_jacobi_forms(k, m, prec, algorithm="skoruppa") :
sage: from sage.modular.jacobi.all import *
sage: classical_weak_jacobi_forms(2, 1, 5)
- [{(0, 1): 2, (0, 0): -4, (3, 0): -106016, (3, 1): 67024, (2, 1): 8238, (2, 0): -14512, (1, 0): -984, (4, 1): 385026, (1, 1): 496, (4, 0): -574488}]
-
+ [{(0, 0): -4,
+ (0, 1): 2,
+ (1, 0): -984,
+ (1, 1): 496,
+ (2, 0): -14512,
+ (2, 1): 8238,
+ (3, 0): -106016,
+ (3, 1): 67024,
+ (4, 0): -574488,
+ (4, 1): 385026}]
+
TESTS:
See ``test_classical_weak.py``.
@@ -198,9 +211,9 @@ def classical_weak_jacobi_forms(k, m, prec, algorithm="skoruppa") :
if algorithm != "skoruppa":
raise NotImplementedError("Algorithm {} is not implemented.".format(algorithm))
factory = ClassicalWeakJacobiFormsFactory(m, prec)
-
+
return [ factory.from_taylor_expansion(fs, k, is_integral=True)
- for fs in _classical_weak_jacobi_taylor_coefficients(k, m) ]
+ for fs in _classical_weak_jacobi_taylor_coefficients(k, m)]
@cached_function
def _classical_weak_jacobi_taylor_coefficients(k, m) :
diff --git a/src/sage/modular/jacobi/higherrank.py b/src/sage/modular/jacobi/higherrank.py
index 7f27008..4849c4b 100644
--- a/src/sage/modular/jacobi/higherrank.py
+++ b/src/sage/modular/jacobi/higherrank.py
@@ -21,12 +21,25 @@ To compute a basis of weight `k` and index `m` Jacobi forms, we call
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}]
+ [{(0, (0, 0)): 1,
+ (1, (0, 0)): 0,
+ (1, (1, 1)): -45,
+ (2, (0, 0)): -59130,
+ (2, (1, 1)): -12672,
+ (3, (0, 0)): -1416960,
+ (3, (1, 1)): -558045,
+ (4, (0, 0)): -14346720,
+ (4, (1, 1)): -7165440},
+ {(0, (0, 0)): 0,
+ (1, (0, 0)): 1,
+ (1, (1, 1)): -1/6,
+ (2, (0, 0)): -15,
+ (2, (1, 1)): 5/3,
+ (3, (0, 0)): 90,
+ (3, (1, 1)): -4/3,
+ (4, (0, 0)): -248,
+ (4, (1, 1)): -155/3}]
+
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::
diff --git a/src/sage/modular/jacobi/vector_valued.py b/src/sage/modular/jacobi/vector_valued.py
index a3e02de..829e9ac 100644
--- a/src/sage/modular/jacobi/vector_valued.py
+++ b/src/sage/modular/jacobi/vector_valued.py
@@ -70,7 +70,10 @@ def vector_valued_modular_forms(k, L, prec):
sage: from sage.modular.jacobi.all import *
sage: L = QuadraticForm(matrix(2, [2,0,0,2]))
sage: vector_valued_modular_forms(3, L, 5)
- [{(0, 1): {7/4: 192, 3/4: 32, 11/4: 480, 15/4: 832, 19/4: 1440}, (1, 0): {19/4: 1440, 11/4: 480, 15/4: 832, 7/4: 192, 3/4: 32}, (0, 0): {0: 1, 1: 60, 2: 252, 3: 544, 4: 1020, 5: 1560}, (1, 1): {9/2: 876, 3/2: 160, 1/2: 12, 7/2: 960, 5/2: 312}}]
+ [{(0, 0): {0: 1, 1: 60, 2: 252, 3: 544, 4: 1020, 5: 1560},
+ (0, 1): {3/4: 32, 7/4: 192, 11/4: 480, 15/4: 832, 19/4: 1440},
+ (1, 0): {3/4: 32, 7/4: 192, 11/4: 480, 15/4: 832, 19/4: 1440},
+ (1, 1): {1/2: 12, 3/2: 160, 5/2: 312, 7/2: 960, 9/2: 876}}]
::
@@ -124,12 +127,20 @@ def vector_valued_modular_forms_weakly_holomorphic(k, L, order, prec):
sage: order = 1
sage: B = 5
sage: vector_valued_modular_forms_weakly_holomorphic(k, L, order, B)
- [{(0, 1): {11/3: -2095952744, 2/3: -49016/3, 8/3: -89122696, -1/3: 11/3, 5/3: -6384917/3},
- (0, 0): {0: 24, 1: 98730, 2: 8033552, 3: 268396434, 4: 5498892864, -1: 1},
- (0, 2): {11/3: 2095952744, 2/3: 49016/3, 8/3: 89122696, -1/3: -11/3, 5/3: 6384917/3}},
- {(0, 1): {11/3: 5522/3, 2/3: 41/9, 8/3: 1039/3, -1/3: -1/18, 5/3: 446/9},
- (0, 0): {0: 1, 1: 21, 2: 198, 3: 1236, 4: 6168, -1: 0},
- (0, 2): {11/3: -5522/3, 2/3: -41/9, 8/3: -1039/3, -1/3: 1/18, 5/3: -446/9}}]
+ [{(0, 0): {-1: 1, 0: 24, 1: 98730, 2: 8033552, 3: 268396434, 4: 5498892864},
+ (0, 1): {-1/3: 11/3,
+ 2/3: -49016/3,
+ 5/3: -6384917/3,
+ 8/3: -89122696,
+ 11/3: -2095952744},
+ (0, 2): {-1/3: -11/3,
+ 2/3: 49016/3,
+ 5/3: 6384917/3,
+ 8/3: 89122696,
+ 11/3: 2095952744}},
+ {(0, 0): {-1: 0, 0: 1, 1: 21, 2: 198, 3: 1236, 4: 6168},
+ (0, 1): {-1/3: -1/18, 2/3: 41/9, 5/3: 446/9, 8/3: 1039/3, 11/3: 5522/3},
+ (0, 2): {-1/3: 1/18, 2/3: -41/9, 5/3: -446/9, 8/3: -1039/3, 11/3: -5522/3}}]
TESTS:
@@ -197,9 +208,13 @@ def vector_valued_modular_forms_weakly_holomorphic_with_principal_part( k, L, pr
sage: L = QuadraticForm(matrix(2, [2, 1, 1, 2]))
sage: pp = {(0,0): {-1: 1}}
sage: vector_valued_modular_forms_weakly_holomorphic_with_principal_part(k, L, pp, 5)
- {(0, 1): {11/3: -2095831260, 2/3: -16038, 8/3: -89099838, -1/3: 0, 5/3: -2125035},
- (0, 0): {0: 90, 1: 100116, 2: 8046620, 3: 268478010, 4: 5499299952, -1: 1},
- (0, 2): {11/3: 2095831260, 2/3: 16038, 8/3: 89099838, -1/3: 0, 5/3: 2125035}}
+ {(0, 0): {-1: 1, 0: 90, 1: 100116, 2: 8046620, 3: 268478010, 4: 5499299952},
+ (0, 1): {-1/3: 0,
+ 2/3: -16038,
+ 5/3: -2125035,
+ 8/3: -89099838,
+ 11/3: -2095831260},
+ (0, 2): {-1/3: 0, 2/3: 16038, 5/3: 2125035, 8/3: 89099838, 11/3: 2095831260}}
TESTS:
@@ -280,9 +295,9 @@ def theta_decomposition(phi, m, r_classes):
sage: jforms = higherrank_jacobi_forms(k, L, 5)
sage: (r_classes, _) = higherrank_jacobi_r_classes(L)
sage: theta_decomposition(jforms[0], L, r_classes)
- {(0, 1): {11/3: 320, 2/3: -1, 8/3: -104, 5/3: 16},
- (0, 0): {0: 0, 1: 0, 2: 0, 3: 0, 4: 0},
- (0, 2): {11/3: -320, 2/3: 1, 8/3: 104, 5/3: -16}}
+ {(0, 0): {0: 0, 1: 0, 2: 0, 3: 0, 4: 0},
+ (0, 1): {2/3: -1, 5/3: 16, 8/3: -104, 11/3: 320},
+ (0, 2): {2/3: 1, 5/3: -16, 8/3: 104, 11/3: -320}}
"""
L = m
L_span = L.matrix().row_module()
@@ -329,7 +344,7 @@ def _mul_scalar_vvform(c, f) :
sage: from sage.modular.jacobi.vector_valued import _mul_scalar_vvform
sage: _mul_scalar_vvform(5, {(0,1): {-1: 4, 0: 2}})
- {(0, 1): {0: 10, -1: 20}}
+ {(0, 1): {-1: 20, 0: 10}}
"""
res = {}
for (mu,fe) in f.items():
@@ -361,7 +376,7 @@ def _add_vvforms(f, g, L_span) :
sage: f2 = {(0,1): {-1: 2, 2: 3}, (1,1): {2: 2}}
sage: L_span = (ZZ**2).span([(1,2), (0,3)])
sage: _add_vvforms(f1, f2, L_span)
- {(0, 1): {0: 2, 2: 3, -1: 6}, (1, 1): {2: 2}}
+ {(0, 1): {-1: 6, 0: 2, 2: 3}, (1, 1): {2: 2}}
"""
res = copy(g)
for (mu,fe) in f.items():
@@ -404,7 +419,7 @@ def _sum_mul_vvforms(coefficients, vvforms, L_span):
sage: f3 = {(0,1): {-1: 2, 2: 3}, (1,1): {2: 2}}
sage: L_span = (ZZ**2).span([(1,2), (0,3)])
sage: _sum_mul_vvforms([1,-1,3], [f1,f2,f3], L_span)
- {(0, 1): {0: 4, 2: 9, -1: 6}, (1, 1): {2: 6}}
+ {(0, 1): {-1: 6, 0: 4, 2: 9}, (1, 1): {2: 6}}
"""
res = {}
for (c,f) in zip(coefficients, vvforms):