#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.

Reply via email to