#20932: Issues with p1list in modular symbols
-----------------------------------+------------------------
Reporter: kedlaya | Owner:
Type: defect | Status: new
Priority: major | Milestone: sage-7.3
Component: modular forms | Resolution:
Keywords: modular symbols | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
-----------------------------------+------------------------
Old description:
> Originally reported by robharron on sage-nt:
> [https://groups.google.com/forum/#!msg/sage-nt/5HYpZKFB2qA/fRXgDkaICAAJ].
> {{{
> sage: import sage.modular.modsym.p1list as p1list
> sage: for (i,j) in p1list.P1List(103809):
> sage: if i != 1 and i != 3: print (i,j)
> (0, 1) #should also return (34603, 1) and (34603, 2)
> }}}
New description:
Two related issues with modular symbols, originally reported by robharron
on sage-nt: [https://groups.google.com/forum/#!msg/sage-
nt/5HYpZKFB2qA/fRXgDkaICAAJ].
Issue 1:
{{{
sage: chi = kronecker_character(3*34603)
sage: M = ModularSymbols(chi, 2, sign=1, base_ring=GF(3))
...
File "/projects/sage/sage-6.10/local/lib/python2.7/site-
packages/sage/modular/modsym/relation_matrix.py", line 126, in
modS_relations
assert j != -1
AssertionError
}}}
The underlying problem appears to be:
{{{
sage: import sage.modular.modsym.p1list as p1list
sage: for (i,j) in p1list.P1List(103809):
sage: if i != 1 and i != 3: print (i,j)
(0, 1) #should also return (34603, 1) and (34603, 2)
}}}
Issue 2:
{{{
sage: chi = kronecker_character(3*61379)
sage: M = ModularSymbols(chi, 2, sign=1, base_ring=GF(3))
...
File "sage/rings/fast_arith.pyx", line 381, in
sage.rings.fast_arith.arith_llong.c_inverse_mod_longlong
(/projects/sage/sage-6.10/src/build/cythonized/sage/rings/fast_arith.c:5546)
raise ArithmeticError("The inverse of %s modulo %s is not
defined."%(a,m))
ArithmeticError: The inverse of -2142142713 modulo 184137 is not defined.
}}}
The underlying issue appears to be:
{{{
sage: import sage.modular.modsym.p1list as p1list
sage: N = 3*61379
sage: p1 = p1list.P1List(N)
sage: p1.normalize_with_scalar(21, -1)
...
ArithmeticError: The inverse of -2142142713 modulo 184137 is not defined.
--
Comment (by kedlaya):
Re issue 2: the offending subroutine in `p1list` appears to be
`c_p1_normalize_llong`, in which one finds:
{{{
if compute_s:
ss[0] = <int> (arith_llong.c_inverse_mod_longlong(s*min_t, N) %
ll_N)
}}}
As written, this creates a 32-bit integer overflow. It should be:
{{{
if compute_s:
ss[0] = <int> (arith_llong.c_inverse_mod_longlong((<llong>
s)*(<llong> min_t), N) % ll_N)
}}}
--
Ticket URL: <https://trac.sagemath.org/ticket/20932#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.