"Source: Text/Geometry/ModFrmHil.text";
"Line: 968";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/ModFrmHil.text, line: 968
// Example: H149E8 ()
print "Example: H149E8";
ei := GetEchoInput();
SetEchoInput(true);
QQ := RationalsAsNumberField();
ZZ := Integers(QQ);
M := HilbertCuspForms(QQ, 14*ZZ);
A := QuaternionAlgebra(2*ZZ, InfinitePlaces(QQ) : Optimized);
M14 := NewSubspace(M : QuaternionOrder:=MaximalOrder(A) );
Dimension(M14);
assert $1 eq 1;
f := Eigenform(NewformDecomposition(M14)[1]);
primes := PrimesUpTo(50);
time eigenvalues1:= [ <p, HeckeEigenvalue(f,p*ZZ)> : p in primes ];
eigenvalues1;
Q := Rationals();
M := HilbertCuspForms(Q, 14);
A := QuaternionAlgebra(14 : Al:="Smallest" );
A.1^2, A.2^2;
M14 := NewSubspace(M : QuaternionOrder:=MaximalOrder(A) );
IsDefinite(M14); // Not definite means Algorithm 2
assert not $1;
Dimension(M14);
assert $1 eq 1;
f := Eigenform(NewformDecomposition(M14)[1]);
time eigenvalues2 := [ <p, HeckeEigenvalue(f,p)> : p in primes | 
                                                         GCD(p,14) eq 1];
eigenvalues2;
M14 := CuspForms(14);
time eigenvalues := [ <p, HeckeOperator(M14,p)[1,1]> : p in primes ];
assert eigenvalues1 eq eigenvalues;
assert eigenvalues2 subset eigenvalues;
SetEchoInput(ei);
