Skip to content

Commit

Permalink
Merge pull request #6327 from LMFDB/main
Browse files Browse the repository at this point in the history
main -> dev
  • Loading branch information
edgarcosta authored Jan 31, 2025
2 parents 420c43a + 98038fc commit 8d82d0e
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 3 deletions.
4 changes: 3 additions & 1 deletion CONTRIBUTORS.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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: [email protected]
61 changes: 61 additions & 0 deletions lmfdb/classical_modular_forms/test_cmf.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"""
<div class="center">
\( S_{9}^{\mathrm{old}}(\Gamma_1(38)) \cong \) <a href=/ModularForm/GL2/Q/holomorphic/1/9/>\(S_{9}^{\mathrm{new}}(\Gamma_1(1))\)</a>\(^{\oplus 4}\)\(\oplus\)<a href=/ModularForm/GL2/Q/holomorphic/2/9/>\(S_{9}^{\mathrm{new}}(\Gamma_1(2))\)</a>\(^{\oplus 2}\)\(\oplus\)<a href=/ModularForm/GL2/Q/holomorphic/19/9/>\(S_{9}^{\mathrm{new}}(\Gamma_1(19))\)</a>\(^{\oplus 2}\)
</div>
"""
assert decomposition in page.get_data(as_text=True)

def test_convert_conreylabels(self):
for c in [27, 31]:
Expand Down Expand Up @@ -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"""
<table class="ntdata">
<tbody>
<tr>
<td class="dark border-right border-bottom">\(n\)</td>
<td class="light border-bottom">\(5\)</td>
<td class="dark border-bottom">\(7\)</td> </tr>
<tr>
<td class="dark border-right">\(\chi(n)\)</td>
<td class="light">\(-1\)</td>
<td class="dark">\(1\)</td> </tr>
</tbody>
</table>
"""
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"""
<table class="ntdata">
<tbody>
<tr>
<td class="dark border-right border-bottom">\(n\)</td>
<td class="light border-bottom">\(52\)</td>
<td class="dark border-bottom">\(71\)</td> </tr>
<tr>
<td class="dark border-right">\(\chi(n)\)</td>
<td class="light">\(-1\)</td>
<td class="dark">\(-1\)</td> </tr>
</tbody>
</table>
"""
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"""
<table class="ntdata">
<tbody>
<tr>
<td class="dark border-right border-bottom">\(n\)</td>
<td class="light border-bottom">\(52\)</td>
<td class="dark border-bottom">\(71\)</td> </tr>
<tr>
<td class="dark border-right">\(\chi(n)\)</td>
<td class="light">\(-1\)</td>
<td class="dark">\(-1\)</td> </tr>
</tbody>
</table>
"""
assert (character_values_table in data)
3 changes: 3 additions & 0 deletions lmfdb/classical_modular_forms/web_newform.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion lmfdb/classical_modular_forms/web_space.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = []
Expand Down
2 changes: 1 addition & 1 deletion lmfdb/lfunctions/templates/LfunctionNavigate.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ <h3> By {{KNOWL('lfunction.underlying_object', 'origin')}} </h3>
<td><a href="?origin=Artin">Artin representation</a></td>
</tr>
<tr>
<td><a href="?origin=BMF">Hilbert modular form</a></td>
<td><a href="?origin=HMF">Hilbert modular form</a></td>
<td><a href="?origin=BMF">Bianchi modular form</a></td>
<td><a href="?degree=4&origin=ECNF">Elliptic curve over $\mathbb{Q}(\sqrt{d})$</a></td>
<td><a href="?origin=G2Q">Genus 2 curve over $\mathbb{Q}$</a></td>
Expand Down

0 comments on commit 8d82d0e

Please sign in to comment.