import numberdb.sage
import sage.symbolic.expression
import sage.rings.polynomial.laurent_polynomial_ring
from sage.modular.modform.constructor import Newforms
from sage.rings.complex_mpfr import ComplexField
k = 24; i = 1; bits = 330
C = ComplexField(bits)
forms = []
for f in Newforms(1, k, names='a'):
a2 = f[2]
for embedding, phi in enumerate(a2.parent().embeddings(C)):
forms.append((phi(a2).real(), embedding, f))
forms.sort(key=lambda row: row[0])
forms[i - 1][2].petersson_norm(embedding=forms[i - 1][1], prec=bits)default(realbitprecision, 330);
k = 24; i = 1;
mf = mfinit([1,k], 0);
F = mfeigenbasis(mf)[1];
a2 = mfcoefs(F, 2)[3];
A2 = if(type(a2) == "t_POLMOD", nfeltembed(nfinit(component(a2, 1)), a2), [a2]);
P = mfpetersson(mfsymbol(mf, F));
vecsort(vector(#A2, j, [real(A2[j]), if (#A2 == 1, P, P[j,j])]), 1)[i][2]The generator evaluates Sage's petersson_norm [3] at $80$ and $120$ decimal working digits, passing explicit bit precisions to Sage's symmetric-square $L$-function computation. It sorts the embeddings of each Hecke orbit by the embedded value of $a_2$.
An independent check compares every stored value with PARI/GP's mfsymbol and mfpetersson [4], after sorting PARI's embeddings by the same $a_2$ values, with tolerance $10^{-40}\max(1,|x|)$. The table stores $30$ digits because that is comfortably inside the Sage-PARI comparison tolerance. Neither computation gives a certified error bound, so the table does not claim proven digits.