Fwd: [sage-devel] Newforms calculation is nondeterministic

26 views
Skip to first unread message

John Cremona

unread,
Aug 31, 2019, 6:38:12 AM8/31/19
to sage-nt

---------- Forwarded message ---------
From: Ethan Yang <ethanyi...@gmail.com>
Date: Sat, 31 Aug 2019, 06:44
Subject: [sage-devel] Newforms calculation is nondeterministic
To: sage-devel <sage-...@googlegroups.com>


Calculating newforms of a cuspidal subspace gives different answers on different runs. 

I did not (and don't know how to) check whether the newforms are equivalent (and if they aren't, this would be a much more serious bug), but, regardless, this type of calculation should definitely be deterministic.

Steps to reproduce:

eps = kronecker_character(105)

M2 = ModularForms(eps)

S2 = M2.cuspidal_subspace()

print(S2.newforms('a'))


Running it multiple times, one gets a variety of q-expansions for the newforms. Here I have listed 4 that I have received in output.


[q + (-1/10*a0^3 + 3/10*a0^2 + 2/5*a0 - 3/5)*q^2 + (-1/10*a0^3 + 3/10*a0^2 - 3/5*a0 - 3/5)*q^3 + q^4 + (a0 - 1)*q^5 + O(q^6),

 q - 1/2*a1*q^3 - 2*q^4 + (-1/24*a1^3 - 1/3*a1)*q^5 + O(q^6),

 q + (-1/10*a2^3 + 3/10*a2^2 + 2/5*a2 - 3/5)*q^2 + (1/10*a2^3 - 3/10*a2^2 + 3/5*a2 + 3/5)*q^3 + q^4 + (-a2 + 1)*q^5 + O(q^6)]


[q + (-1/22*a0^3 - 3/11*a0^2 - 1/2*a0 - 3/11)*q^2 + (1/44*a0^3 + 3/22*a0^2 + 3/4*a0 + 3/22)*q^3 + q^4 + (-3/44*a0^3 - 9/22*a0^2 - 5/4*a0 - 31/22)*q^5 + O(q^6), 

q - 1/2*a1*q^3 - 2*q^4 + (-1/24*a1^3 - 1/3*a1)*q^5 + O(q^6), 

q + (-1/22*a2^3 - 3/11*a2^2 - 1/2*a2 - 3/11)*q^2 + (-1/44*a2^3 - 3/22*a2^2 - 3/4*a2 - 3/22)*q^3 + q^4 + (3/44*a2^3 + 9/22*a2^2 + 5/4*a2 + 31/22)*q^5 + O(q^6)]


[q + (-1/10*a0^3 - 3/10*a0^2 + 2/5*a0 + 3/5)*q^2 + (1/10*a0^3 + 3/10*a0^2 + 3/5*a0 - 3/5)*q^3 + q^4 + (-1/5*a0^3 - 3/5*a0^2 - 1/5*a0 + 1/5)*q^5 + O(q^6), 

q - 1/2*a1*q^3 - 2*q^4 + (-1/24*a1^3 - 1/3*a1)*q^5 + O(q^6), 

q + (-1/22*a2^3 - 3/11*a2^2 - 1/2*a2 - 3/11)*q^2 + (-1/44*a2^3 - 3/22*a2^2 - 3/4*a2 - 3/22)*q^3 + q^4 + (3/44*a2^3 + 9/22*a2^2 + 5/4*a2 + 31/22)*q^5 + O(q^6)]


[q + (-1/22*a0^3 + 3/11*a0^2 - 1/2*a0 + 3/11)*q^2 + (-1/44*a0^3 + 3/22*a0^2 - 3/4*a0 + 3/22)*q^3 + q^4 + (-1/44*a0^3 + 3/22*a0^2 + 1/4*a0 - 19/22)*q^5 + O(q^6), 

q - a1*q^3 - 2*q^4 + (-1/3*a1^3 - 2/3*a1)*q^5 + O(q^6), 

q + (-1/10*a2^3 - 3/10*a2^2 + 2/5*a2 + 3/5)*q^2 + (-1/10*a2^3 - 3/10*a2^2 - 3/5*a2 + 3/5)*q^3 + q^4 + (1/5*a2^3 + 3/5*a2^2 + 1/5*a2 - 1/5)*q^5 + O(q^6)]


Version: 8.7
OS: macOS High Sierra 10.13.6, 64 Bit

--
You received this message because you are subscribed to the Google Groups "sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/3e481276-0fe2-4634-afcd-10596be689f6%40googlegroups.com.

Kevin Lui

unread,
Aug 31, 2019, 12:36:07 PM8/31/19
to sage-nt
They should all be equivalent. The choice of defining polynomial for the Hecke eigenvalue field is possibly different in each run since computing the dual eigenvalues uses a random algorithm. A workaround could be to set a random seed in the beginning using
set_random_seed(0)

.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages