#10981: algebraic real field partial_fraction_decomposition bug
----------------------------+-----------------------------------------------
Reporter: mariah | Owner: AlexGhitza
Type: defect | Status: positive_review
Priority: major | Milestone: sage-4.7.2
Component: algebra | Keywords: sd32
Work_issues: | Upstream: N/A
Reviewer: Simon Spicer | Author: William Stein
Merged: | Dependencies:
----------------------------+-----------------------------------------------
Description changed by leif:
Old description:
> {{{
> sage: x= AA['x'].gen()
> sage: P= 1/(1+x^4)
> sage: P.partial_fraction_decomposition()
> ---------------------------------------------------------------------------
> AttributeError Traceback (most recent call
> last)
>
> /home/mariah/<ipython console> in <module>()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/categories/quotient_fields.pyc in
> partial_fraction_decomposition(self)
> 173 # note that the product below is non-empty, since
> the case
> 174 # of only one factor has been dealt with above
> --> 175 n = numer * prod([r for r in factors if r !=
> d]).inverse_mod(d) % d # we know the inverse exists as the two are
> relatively prime
> 176 parts.append(n/d)
> 177 return whole, parts
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial.inverse_mod
> (sage/rings/polynomial/polynomial_element.c:9816)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.PrincipalIdealDomainElement.xgcd
> (sage/structure/element.c:15524)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial._xgcd
> (sage/rings/polynomial/polynomial_element.c:33988)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial.__div__
> (sage/rings/polynomial/polynomial_element.c:12221)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.RingElement.__mul__
> (sage/structure/element.c:11449)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/coerce.so in
> sage.structure.coerce.CoercionModel_cache_maps.bin_op
> (sage/structure/coerce.c:6105)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/coerce_actions.so in
> sage.structure.coerce_actions.RightModuleAction._call_
> (sage/structure/coerce_actions.c:5782)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/polynomial/polynomial_element.so in
> sage.rings.polynomial.polynomial_element.Polynomial_generic_dense._lmul_
> (sage/rings/polynomial/polynomial_element.c:40358)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.Element.__nonzero__
> (sage/structure/element.c:5806)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.Element.__richcmp__
> (sage/structure/element.c:7169)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.Element._richcmp (sage/structure/element.c:7052)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/qqbar.pyc in __cmp__(self, other)
> 3400 if self is other: return 0
> 3401 if other._descr.is_rational() and
> other._descr.rational_value() == 0:
> -> 3402 return self.sign()
> 3403 elif self._descr.is_rational() and
> self._descr.rational_value() == 0:
> 3404 return -other.sign()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/rings/qqbar.pyc in sign(self)
> 3597 0
> 3598 """
> -> 3599 if self._value.lower() > 0:
> 3600 return 1
> 3601 elif self._value.upper() < 0:
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/element.so in
> sage.structure.element.Element.__getattr__
> (sage/structure/element.c:2715)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/parent.so in
> sage.structure.parent.getattr_from_other_class
> (sage/structure/parent.c:2841)()
>
> /home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
> /site-packages/sage/structure/parent.so in
> sage.structure.parent.raise_attribute_error
> (sage/structure/parent.c:2636)()
>
> AttributeError: 'sage.rings.complex_interval.ComplexIntervalFieldElement'
> object has no attribute 'lower'
> sage:
> }}}
New description:
{{{
sage: x= AA['x'].gen()
sage: P= 1/(1+x^4)
sage: P.partial_fraction_decomposition()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call
last)
/home/mariah/<ipython console> in <module>()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/categories/quotient_fields.pyc in
partial_fraction_decomposition(self)
173 # note that the product below is non-empty, since
the case
174 # of only one factor has been dealt with above
--> 175 n = numer * prod([r for r in factors if r !=
d]).inverse_mod(d) % d # we know the inverse exists as the two are
relatively prime
176 parts.append(n/d)
177 return whole, parts
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.inverse_mod
(sage/rings/polynomial/polynomial_element.c:9816)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.PrincipalIdealDomainElement.xgcd
(sage/structure/element.c:15524)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial._xgcd
(sage/rings/polynomial/polynomial_element.c:33988)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial.__div__
(sage/rings/polynomial/polynomial_element.c:12221)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.RingElement.__mul__
(sage/structure/element.c:11449)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/coerce.so in
sage.structure.coerce.CoercionModel_cache_maps.bin_op
(sage/structure/coerce.c:6105)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/coerce_actions.so in
sage.structure.coerce_actions.RightModuleAction._call_
(sage/structure/coerce_actions.c:5782)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/polynomial/polynomial_element.so in
sage.rings.polynomial.polynomial_element.Polynomial_generic_dense._lmul_
(sage/rings/polynomial/polynomial_element.c:40358)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.Element.__nonzero__
(sage/structure/element.c:5806)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.Element.__richcmp__
(sage/structure/element.c:7169)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.Element._richcmp (sage/structure/element.c:7052)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/qqbar.pyc in __cmp__(self, other)
3400 if self is other: return 0
3401 if other._descr.is_rational() and
other._descr.rational_value() == 0:
-> 3402 return self.sign()
3403 elif self._descr.is_rational() and
self._descr.rational_value() == 0:
3404 return -other.sign()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/rings/qqbar.pyc in sign(self)
3597 0
3598 """
-> 3599 if self._value.lower() > 0:
3600 return 1
3601 elif self._value.upper() < 0:
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/element.so in
sage.structure.element.Element.__getattr__
(sage/structure/element.c:2715)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/parent.so in
sage.structure.parent.getattr_from_other_class
(sage/structure/parent.c:2841)()
/home/mariah/sage/sage-4.6.2-x86_64-Linux-core2-fc/local/lib/python2.6
/site-packages/sage/structure/parent.so in
sage.structure.parent.raise_attribute_error
(sage/structure/parent.c:2636)()
AttributeError: 'sage.rings.complex_interval.ComplexIntervalFieldElement'
object has no attribute 'lower'
sage:
}}}
----
Apply [attachment:trac_10981.patch] to the Sage library.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10981#comment:6>
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.