From 7df5371567c09092ea9dff8d270891f9a001c858 Mon Sep 17 00:00:00 2001 From: Weiyi Wang Date: Tue, 7 Jan 2025 23:02:22 -0500 Subject: [PATCH] Fix Dirichlet character for newform orbit whose dimension is 1 --- lmfdb/classical_modular_forms/test_cmf.py | 55 ++++++++++++++++++++ lmfdb/classical_modular_forms/web_newform.py | 3 ++ 2 files changed, 58 insertions(+) diff --git a/lmfdb/classical_modular_forms/test_cmf.py b/lmfdb/classical_modular_forms/test_cmf.py index f00986423a..1d71e15250 100644 --- a/lmfdb/classical_modular_forms/test_cmf.py +++ b/lmfdb/classical_modular_forms/test_cmf.py @@ -594,3 +594,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)