#11234: Fractional ideal class double exponentiation fails
-----------------------------+----------------------------------------------
Reporter: jdemeyer | Owner: davidloeffler
Type: defect | Status: needs_work
Priority: major | Milestone: sage-4.7.1
Component: number fields | Keywords: pari class group
Work_issues: | Upstream: N/A
Reviewer: | Author: Francis Clarke
Merged: | Dependencies:
-----------------------------+----------------------------------------------
Description changed by fwclarke:
Old description:
> {{{
> sage: k.<a> = NumberField(x^2 + 20072); G = k.class_group(); (G.0^2)^2
> ---------------------------------------------------------------------------
> TypeError Traceback (most recent call
> last)
>
> /usr/local/src/sage-4.7.alpha4/<ipython console> in <module>()
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/rings/number_field/class_group.pyc in __pow__(self, n)
> 302 # we go along; actually computing self.__ideal ** n would
> 303 # be disastrous.
> --> 304 n = n % self.order()
> 305 return MonoidElement.__pow__(self, n)
> 306
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/rings/number_field/class_group.pyc in order(self)
> 392 """
> 393 # an old method with a new docstring
> --> 394 return AbelianGroupElement.order(self)
> 395
> 396 def multiplicative_order(self):
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/groups/abelian_gps/abelian_group_element.pyc in order(self)
> 304 return o
> 305 L = list(self.list())
> --> 306 N = LCM([invs[i]//GCD(invs[i],L[i]) for i in
> range(len(invs)) if L[i]!=0])
> 307 if N == 0:
> 308 return infinity
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/rings/integer.so in sage.rings.integer.Integer.__floordiv__
> (sage/rings/integer.c:12659)()
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/structure/element.so in sage.structure.element.bin_op
> (sage/structure/element.c:19135)()
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/structure/element.so in sage.structure.element.bin_op
> (sage/structure/element.c:19033)()
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/structure/coerce.so in
> sage.structure.coerce.CoercionModel_cache_maps.bin_op
> (sage/structure/coerce.c:6498)()
>
> /usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
> packages/sage/structure/coerce.so in
> sage.structure.coerce.CoercionModel_cache_maps.bin_op
> (sage/structure/coerce.c:6436)()
>
> TypeError: unsupported operand type(s) for //: 'sage.libs.pari.gen.gen'
> and 'sage.libs.pari.gen.gen'
> }}}
New description:
{{{
sage: k.<a> = NumberField(x^2 + 20072); G = k.class_group(); (G.0^2)^2
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/usr/local/src/sage-4.7.alpha4/<ipython console> in <module>()
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/rings/number_field/class_group.pyc in __pow__(self, n)
302 # we go along; actually computing self.__ideal ** n would
303 # be disastrous.
--> 304 n = n % self.order()
305 return MonoidElement.__pow__(self, n)
306
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/rings/number_field/class_group.pyc in order(self)
392 """
393 # an old method with a new docstring
--> 394 return AbelianGroupElement.order(self)
395
396 def multiplicative_order(self):
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/groups/abelian_gps/abelian_group_element.pyc in order(self)
304 return o
305 L = list(self.list())
--> 306 N = LCM([invs[i]//GCD(invs[i],L[i]) for i in
range(len(invs)) if L[i]!=0])
307 if N == 0:
308 return infinity
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/rings/integer.so in sage.rings.integer.Integer.__floordiv__
(sage/rings/integer.c:12659)()
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/structure/element.so in sage.structure.element.bin_op
(sage/structure/element.c:19135)()
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/structure/element.so in sage.structure.element.bin_op
(sage/structure/element.c:19033)()
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/structure/coerce.so in
sage.structure.coerce.CoercionModel_cache_maps.bin_op
(sage/structure/coerce.c:6498)()
/usr/local/src/sage-4.7.alpha4/local/lib/python2.6/site-
packages/sage/structure/coerce.so in
sage.structure.coerce.CoercionModel_cache_maps.bin_op
(sage/structure/coerce.c:6436)()
TypeError: unsupported operand type(s) for //: 'sage.libs.pari.gen.gen'
and 'sage.libs.pari.gen.gen'
}}}
Both patches should be applied.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11234#comment:4>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.