diff --git a/CONTRIBUTORS.yaml b/CONTRIBUTORS.yaml index 0babaf39fe..96f17d42f3 100644 --- a/CONTRIBUTORS.yaml +++ b/CONTRIBUTORS.yaml @@ -443,4 +443,6 @@ affil: The University of North Carolina Greensboro name: David Yuen affil: Lake Forest College url: https://www.lakeforest.edu/academics/faculty/yuen/ - +--- +name: Weiyi Wang +email: wwylele@gmail.com diff --git a/lmfdb/classical_modular_forms/test_cmf.py b/lmfdb/classical_modular_forms/test_cmf.py index f00986423a..15cff2dde3 100644 --- a/lmfdb/classical_modular_forms/test_cmf.py +++ b/lmfdb/classical_modular_forms/test_cmf.py @@ -264,6 +264,12 @@ def test_decomposition(self): assert elt + '.a' in page.get_data(as_text=True) for elt in ['Decomposition', r"S_{9}^{\mathrm{old}}(\Gamma_1(38))", "lower level spaces"]: assert elt in page.get_data(as_text=True) + decomposition = r""" +
+ \( S_{9}^{\mathrm{old}}(\Gamma_1(38)) \cong \) \(S_{9}^{\mathrm{new}}(\Gamma_1(1))\)\(^{\oplus 4}\)\(\oplus\)\(S_{9}^{\mathrm{new}}(\Gamma_1(2))\)\(^{\oplus 2}\)\(\oplus\)\(S_{9}^{\mathrm{new}}(\Gamma_1(19))\)\(^{\oplus 2}\) +
+""" + assert decomposition in page.get_data(as_text=True) def test_convert_conreylabels(self): for c in [27, 31]: @@ -594,3 +600,58 @@ def test_underlying_data(self): and 'mf_hecke_charpolys' in data and 'charpoly_factorization' in data and 'mf_newform_portraits' in data and "data:image/png;base64" in data and 'mf_hecke_traces' in data and 'trace_an' in data) + + def test_character_values(self): + # A newform orbit of dimension 1 + data = self.tc.get('/ModularForm/GL2/Q/holomorphic/12/3/c/a/').get_data(as_text=True) + character_values_table = r""" + + + + + + + + + + + +
\(n\)\(5\)\(7\)
\(\chi(n)\)\(-1\)\(1\)
+""" + assert (character_values_table in data) + + # A newform orbit of dimension 2 + data = self.tc.get('/ModularForm/GL2/Q/holomorphic/119/1/d/a/').get_data(as_text=True) + character_values_table = r""" + + + + + + + + + + + +
\(n\)\(52\)\(71\)
\(\chi(n)\)\(-1\)\(-1\)
+""" + assert (character_values_table in data) + + # An embedded newform + data = self.tc.get('/ModularForm/GL2/Q/holomorphic/119/1/d/a/118/1/').get_data(as_text=True) + character_values_table = r""" + + + + + + + + + + + +
\(n\)\(52\)\(71\)
\(\chi(n)\)\(-1\)\(-1\)
+""" + assert (character_values_table in data) diff --git a/lmfdb/classical_modular_forms/web_newform.py b/lmfdb/classical_modular_forms/web_newform.py index 48b5ddde5e..1839a9134b 100644 --- a/lmfdb/classical_modular_forms/web_newform.py +++ b/lmfdb/classical_modular_forms/web_newform.py @@ -185,6 +185,9 @@ def __init__(self, data, space=None, all_m=False, all_n=False, embedding_label=N if self.dim == 1: # avoid using mf_hecke_nf when the dimension is 1 vals = ConreyCharacter(self.level, db.char_dirichlet.lookup("%s.%s" % (self.level,self.char_orbit_label),projection="first")).values_gens + # ConreyCharacter.values_gens returns the exponent of character values, + # But we need the character values themselves here when hecke_ring_cyclotomic_generator is unspecified. + vals = [[v[0],[1] if v[1] == 0 else [-1]] for v in vals] eigenvals = { 'hecke_ring_cyclotomic_generator': 0, 'hecke_ring_character_values': vals, 'hecke_ring_power_basis': True, 'maxp': previous_prime(len(self.traces)+1), 'an': self.traces } else: eigenvals = db.mf_hecke_nf.lucky({'hecke_orbit_code': self.hecke_orbit_code}, ['an'] + hecke_cols) diff --git a/lmfdb/classical_modular_forms/web_space.py b/lmfdb/classical_modular_forms/web_space.py index a9df8cfb12..b44adc1d35 100644 --- a/lmfdb/classical_modular_forms/web_space.py +++ b/lmfdb/classical_modular_forms/web_space.py @@ -481,7 +481,7 @@ def __init__(self, level, weight): self.has_trace_form = (data.get('traces') is not None) # By default we sort on char_orbit_index newspaces = list(db.mf_newspaces.search({'level':level, 'weight':weight, 'char_parity': self.weight_parity})) - self.oldspaces = [(sublevel, number_of_divisors(level/sublevel)) for sublevel in divisors(level)] + self.oldspaces = [(sublevel, number_of_divisors(level/sublevel)) for sublevel in divisors(level) if sublevel != level] self.oldspaces.sort() self.dim_grid = DimGrid.from_db(data) self.decomp = [] diff --git a/lmfdb/lfunctions/templates/LfunctionNavigate.html b/lmfdb/lfunctions/templates/LfunctionNavigate.html index faca32b75a..ac27e49f3e 100644 --- a/lmfdb/lfunctions/templates/LfunctionNavigate.html +++ b/lmfdb/lfunctions/templates/LfunctionNavigate.html @@ -50,7 +50,7 @@

By {{KNOWL('lfunction.underlying_object', 'origin')}}

Artin representation - Hilbert modular form + Hilbert modular form Bianchi modular form Elliptic curve over $\mathbb{Q}(\sqrt{d})$ Genus 2 curve over $\mathbb{Q}$