Sage: Ticket #8659: another broken square root simplification
https://trac.sagemath.org/ticket/8659
<p>
Reported by Alex Raichev on sage-support:
</p>
<pre class="wiki">On Wed, 7 Apr 2010 16:56:01 -0700 (PDT)
Alex Raichev <tortoise.said@gmail.com> wrote:
> What the?
>
> ----------------------------------------------------------------------
> | Sage Version 4.3.5, Release Date: 2010-03-28 |
> | Type notebook() for the GUI, and license() for information. |
> ----------------------------------------------------------------------
> sage: a= matrix([[2,2,I],[2,2,-I],[I,-I,0]]).determinant(); a
> 8
> sage: a^(-1/2)
> ---------------------------------------------------------------------------
> TypeError Traceback (most recent call
> last)
>
> /Users/arai021/Dropbox/sage_work/<ipython console> in <module>()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/
> expression.so in sage.symbolic.expression.Expression.__pow__ (sage/
> symbolic/expression.cpp:11892)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/rings/
> number_field/number_field_element.so in
> sage.rings.number_field.number_field_element.NumberFieldElement.__pow__
> (sage/rings/number_field/number_field_element.cpp:10038)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/
> power_helper.so in sage.symbolic.power_helper.try_symbolic_power
> (sage/ symbolic/power_helper.cpp:633)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/
> power_helper.so in sage.symbolic.power_helper.try_symbolic_power
> (sage/ symbolic/power_helper.cpp:509)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/symbolic/
> expression.so in sage.symbolic.expression.Expression.__pow__ (sage/
> symbolic/expression.cpp:11892)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/rings/
> rational.so in sage.rings.rational.Rational.__pow__ (sage/rings/
> rational.c:15609)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/structure/
> element.so in sage.structure.element.RingElement.__mul__ (sage/
> structure/element.c:11337)()
>
> /Applications/sage/local/lib/python2.6/site-packages/sage/structure/
> coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op
> (sage/structure/coerce.c:6994)()
>
> TypeError: unsupported operand parent(s) for '*': 'Rational Field' and
> '<type 'NoneType'>'
</pre><p>
Here is the thread:
</p>
<p>
<a class="ext-link" href="http://groups.google.com/group/sage-support/t/3e8ae9f6b7c44e7c"><span class="icon"></span>http://groups.google.com/group/sage-support/t/3e8ae9f6b7c44e7c</a>
</p>
<p>
This looks similar to <a class="closed ticket" href="https://trac.sagemath.org/ticket/8540" title="defect: very simple basic sqrt simplification totally broken (closed: fixed)">#8540</a>, though it is a long standing issue, not caused by that ticket:
</p>
<pre class="wiki">----------------------------------------------------------------------
| Sage Version 4.3.3.alpha0, Release Date: 2010-02-11 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
**********************************************************************
* *
* Warning: this is a prerelease version, and it may be unstable. *
* *
**********************************************************************
sage: a= matrix([[2,2,I],[2,2,-I],[I,-I,0]]).determinant(); a
8
sage: a^(-1/2)
<boom>
</pre><p>
Apply <a class="attachment" href="https://trac.sagemath.org/attachment/ticket/8659/trac_8659-hold_powers.take4.patch" title="Attachment 'trac_8659-hold_powers.take4.patch' in Ticket #8659">attachment:trac_8659-hold_powers.take4.patch</a><a class="trac-rawlink" href="https://trac.sagemath.org/raw-attachment/ticket/8659/trac_8659-hold_powers.take4.patch" title="Download"></a>
</p>
en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/8659
Trac 1.1.6jasonThu, 08 Apr 2010 14:46:52 GMT
https://trac.sagemath.org/ticket/8659#comment:1
https://trac.sagemath.org/ticket/8659#comment:1
<p>
This problem might not be in symbolics, but in number fields:
</p>
<pre class="wiki">----------------------------------------------------------------------
| Sage Version 4.3.4, Release Date: 2010-03-19 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: a= matrix([[2,2,I],[2,2,-I],[I,-I,0]]).determinant();
sage: a
8
sage: type(a.pyobject())
<type 'sage.rings.number_field.number_field_element_quadratic.NumberFieldElement_quadratic'>
sage: b=a.pyobject()
sage: b
8
sage: parent(b)
Number Field in I with defining polynomial x^2 + 1
sage: sqrt(b)
2*sqrt(2)
sage: 1/sqrt(b)
1/4*sqrt(2)
sage: b^(-1/2)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/jason/<ipython console> in <module>()
/home/jason/sage/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element.so in sage.rings.number_field.number_field_element.NumberFieldElement.__pow__ (sage/rings/number_field/number_field_element.cpp:10038)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/power_helper.so in sage.symbolic.power_helper.try_symbolic_power (sage/symbolic/power_helper.cpp:633)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/power_helper.so in sage.symbolic.power_helper.try_symbolic_power (sage/symbolic/power_helper.cpp:509)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression.__pow__ (sage/symbolic/expression.cpp:11892)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/rings/rational.so in sage.rings.rational.Rational.__pow__ (sage/rings/rational.c:15609)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (sage/structure/element.c:11337)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:6994)()
TypeError: unsupported operand parent(s) for '*': 'Rational Field' and '<type 'NoneType'>'
</pre>
TicketjasonThu, 08 Apr 2010 14:51:38 GMT
https://trac.sagemath.org/ticket/8659#comment:2
https://trac.sagemath.org/ticket/8659#comment:2
<p>
Interestingly, these all work (starting from the above example in my post):
</p>
<pre class="wiki">sage: b^(1/3)
2
sage: b^(1/4)
8^(1/4)
sage: b^(-1/4)
1/8*8^(3/4)
</pre><p>
So it seems that b<sup>(1/2) is the only problem?
</sup></p>
TicketjasonThu, 08 Apr 2010 15:27:29 GMT
https://trac.sagemath.org/ticket/8659#comment:3
https://trac.sagemath.org/ticket/8659#comment:3
<p>
On the other hand, it seems like the problem is in try_symbolic_power. When I change that function to:
</p>
<pre class="wiki"> global __pynac_pow
print "entering try_symbolic_power: ", obj, p, "; __pynac_pow is ", __pynac_pow
if __pynac_pow:
__pynac_pow = False
print " set __pynac_pow to False and return None"
return None
else:
try:
__pynac_pow = True
print " Try SR powers: ", ring.SR(obj), ring.SR(p)
return ring.SR(obj)**ring.SR(p)
finally:
print " and then set __pynac_pow to False"
__pynac_pow = False
</pre><p>
then I get:
</p>
<pre class="wiki">sage: b^(1/2)
entering try_symbolic_power: 8 1/2 ; __pynac_pow is False
Try SR powers: 8 1/2
entering try_symbolic_power: 2 1/2 ; __pynac_pow is True
set __pynac_pow to False and return None
and then set __pynac_pow to False
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/jason/<ipython console> in <module>()
/home/jason/sage/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element.so in sage.rings.number_field.number_field_element.NumberFieldElement.__pow__ (sage/rings/number_field/number_field_element.cpp:10065)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/power_helper.so in sage.symbolic.power_helper.try_symbolic_power (sage/symbolic/power_helper.cpp:755)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/power_helper.so in sage.symbolic.power_helper.try_symbolic_power (sage/symbolic/power_helper.cpp:614)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression.__pow__ (sage/symbolic/expression.cpp:11892)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/rings/rational.so in sage.rings.rational.Rational.__pow__ (sage/rings/rational.c:15609)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (sage/structure/element.c:11337)()
/home/jason/sage/local/lib/python2.6/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:6994)()
TypeError: unsupported operand parent(s) for '*': 'Rational Field' and '<type 'NoneType'>'
sage: b^(1/4)
entering try_symbolic_power: 8 1/4 ; __pynac_pow is False
Try SR powers: 8 1/4
entering try_symbolic_power: 8 1/4 ; __pynac_pow is True
set __pynac_pow to False and return None
and then set __pynac_pow to False
8^(1/4)
</pre>
TicketjasonThu, 08 Apr 2010 16:00:32 GMT
https://trac.sagemath.org/ticket/8659#comment:4
https://trac.sagemath.org/ticket/8659#comment:4
<p>
Unsurprisingly, I get the same error traceback if I do <code>(b*b)^(1/4)</code>
</p>
TicketburcinSat, 25 Sep 2010 23:24:24 GMTstatus changed; author set
https://trac.sagemath.org/ticket/8659#comment:5
https://trac.sagemath.org/ticket/8659#comment:5
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>needs_review</em>
</li>
<li><strong>author</strong>
set to <em>Burcin Erocal</em>
</li>
</ul>
<p>
Now that we have the <code>hold()</code> function for symbolic expressions (<a class="closed ticket" href="https://trac.sagemath.org/ticket/9879" title="enhancement: allow preventing automatic evaluation of symbolic expressions (hold) (closed: fixed)">#9879</a>), we don't need <code>sage.symbolic.power_helper</code>. <a class="attachment" href="https://trac.sagemath.org/attachment/ticket/8659/trac_8659-hold_powers.patch" title="Attachment 'trac_8659-hold_powers.patch' in Ticket #8659">attachment:trac_8659-hold_powers.patch</a><a class="trac-rawlink" href="https://trac.sagemath.org/raw-attachment/ticket/8659/trac_8659-hold_powers.patch" title="Download"></a> removes this module, and fixes the problem described.
</p>
<p>
This ticket depends on <a class="closed ticket" href="https://trac.sagemath.org/ticket/9879" title="enhancement: allow preventing automatic evaluation of symbolic expressions (hold) (closed: fixed)">#9879</a>.
</p>
TicketkcrismanThu, 11 Nov 2010 14:35:18 GMTcc set
https://trac.sagemath.org/ticket/8659#comment:6
https://trac.sagemath.org/ticket/8659#comment:6
<ul>
<li><strong>cc</strong>
<em>kcrisman</em> added
</li>
</ul>
TicketburcinTue, 22 Mar 2011 21:18:46 GMTattachment set
https://trac.sagemath.org/ticket/8659
https://trac.sagemath.org/ticket/8659
<ul>
<li><strong>attachment</strong>
set to <em>trac_8659-hold_powers.patch</em>
</li>
</ul>
TicketkcrismanMon, 25 Apr 2011 17:02:33 GMTstatus changed
https://trac.sagemath.org/ticket/8659#comment:7
https://trac.sagemath.org/ticket/8659#comment:7
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_info</em>
</li>
</ul>
<p>
At first I thought I minded this discrepancy, but I think that maybe that's okay, given they really do live in different places. At the same time, in theory then we should be holding anything that might ever be multivalued. Like a square root.
</p>
<pre class="wiki">sage: 8^(1/2)
2*sqrt(2)
sage: I.pyobject().parent()
Number Field in I with defining polynomial x^2 + 1
sage: I.pyobject().parent()(8)^(1/2)
sqrt(8)
</pre><p>
In particular, what do we want here?
</p>
<pre class="wiki">sage: a= matrix([[2,2,I],[2,2,-I],[I,-I,0]]).determinant();
sage: b = a.pyobject()
sage: b^(-1/2); a^(-1/2)
1/sqrt(8)
1/8*sqrt(8)
</pre>
TicketkcrismanMon, 25 Apr 2011 19:53:24 GMT
https://trac.sagemath.org/ticket/8659#comment:8
https://trac.sagemath.org/ticket/8659#comment:8
<p>
Also, is
</p>
<pre class="wiki">sage: (t^2)^(1/4)
64^(1/4)
</pre><p>
intended to test
</p>
<pre class="wiki">return SR(nbase).power(nexp*exp, hold=True)
</pre><p>
But the powers weren't multiplied, because <code>SR(base)</code> already is just 64.
</p>
<p>
Similarly,
</p>
<pre class="wiki">sage: 8^(-1/5)
</pre><p>
can't be to test the change in that file, because 8 isn't rational.
</p>
<p>
Or am I missing something? Sorry if I've misinterpreted something; otherwise this is a good fix, it seems.
</p>
TicketburcinMon, 30 May 2011 22:28:01 GMTattachment set
https://trac.sagemath.org/ticket/8659
https://trac.sagemath.org/ticket/8659
<ul>
<li><strong>attachment</strong>
set to <em>trac_8659-hold_powers.take2.patch</em>
</li>
</ul>
TicketburcinMon, 30 May 2011 22:32:36 GMTstatus, description changed
https://trac.sagemath.org/ticket/8659#comment:9
https://trac.sagemath.org/ticket/8659#comment:9
<ul>
<li><strong>status</strong>
changed from <em>needs_info</em> to <em>needs_review</em>
</li>
<li><strong>description</strong>
modified (<a href="/ticket/8659?action=diff&version=9">diff</a>)
</li>
</ul>
<p>
<a class="attachment" href="https://trac.sagemath.org/attachment/ticket/8659/trac_8659-hold_powers.take2.patch" title="Attachment 'trac_8659-hold_powers.take2.patch' in Ticket #8659">attachment:trac_8659-hold_powers.take2.patch</a><a class="trac-rawlink" href="https://trac.sagemath.org/raw-attachment/ticket/8659/trac_8659-hold_powers.take2.patch" title="Download"></a> should address the issues in <a class="ticket" href="https://trac.sagemath.org/ticket/8659#comment:7" title="Comment 7">comment:7</a> at the cost of magically changing the type of the coefficients to rational.
</p>
<p>
The test
</p>
<pre class="wiki">sage: 8^(-1/5)
</pre><p>
does test the <code>__pow__</code> method of rationals, since the <code>__pow__</code> method of <code>Integer</code> casts the base to a rational and calls pow again.
</p>
TicketkcrismanThu, 16 Jun 2011 04:37:40 GMTstatus changed
https://trac.sagemath.org/ticket/8659#comment:10
https://trac.sagemath.org/ticket/8659#comment:10
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
TicketburcinWed, 15 Feb 2012 15:46:31 GMTstatus, description changed; dependencies set
https://trac.sagemath.org/ticket/8659#comment:11
https://trac.sagemath.org/ticket/8659#comment:11
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
<li><strong>dependencies</strong>
set to <em>#12511</em>
</li>
<li><strong>description</strong>
modified (<a href="/ticket/8659?action=diff&version=11">diff</a>)
</li>
</ul>
<p>
I uploaded a new patch which should finally fix this. Please review.
</p>
TicketkcrismanWed, 15 Feb 2012 15:59:50 GMTstatus changed
https://trac.sagemath.org/ticket/8659#comment:12
https://trac.sagemath.org/ticket/8659#comment:12
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
<p>
[[[
infite loops
}}}
</p>
TicketkcrismanWed, 15 Feb 2012 16:14:56 GMT
https://trac.sagemath.org/ticket/8659#comment:13
https://trac.sagemath.org/ticket/8659#comment:13
<p>
Hmm, that didn't format right. I meant to say, there are two occurrences of
</p>
<pre class="wiki">infite loops
</pre><p>
I think it would be helpful to have a doctest or two for each branch of the number field code. Some are no doubt already in there, but all? For instance, I would have thought that <code>(t^2)^(1/4)</code> is testing <code>return nbase.power(pexp * exp, hold=True) </code>, but it doesn't give <code>8^(1/2)</code> like I would have thought from that (so it must be from the <code>if not SR</code> branch); so it would be good to have one for that branch.
</p>
<p>
Also, can you think of a place where putting the rational power in the denominator could cause something to break? Is that standard practice in this kind of computer algebra? For instance, Maxima does not do this.
</p>
<pre class="wiki">(%i3) 2^(-1/2);
(%o3) 1/sqrt(2)
</pre><p>
Sorry if these are dumb questions.
</p>
TicketburcinWed, 15 Feb 2012 16:59:30 GMTattachment set
https://trac.sagemath.org/ticket/8659
https://trac.sagemath.org/ticket/8659
<ul>
<li><strong>attachment</strong>
set to <em>trac_8659-hold_powers.take3.patch</em>
</li>
</ul>
TicketburcinWed, 15 Feb 2012 17:05:32 GMTstatus changed
https://trac.sagemath.org/ticket/8659#comment:14
https://trac.sagemath.org/ticket/8659#comment:14
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/8659#comment:13" title="Comment 13">kcrisman</a>:
</p>
<blockquote class="citation">
<p>
Hmm, that didn't format right. I meant to say, there are two occurrences of
</p>
<pre class="wiki">infite loops
</pre></blockquote>
<p>
I updated the patch to fix the typos.
</p>
<blockquote class="citation">
<p>
I think it would be helpful to have a doctest or two for each branch of the number field code. Some are no doubt already in there, but all? For instance, I would have thought that <code>(t^2)^(1/4)</code> is testing <code>return nbase.power(pexp * exp, hold=True) </code>, but it doesn't give <code>8^(1/2)</code> like I would have thought from that (so it must be from the <code>if not SR</code> branch); so it would be good to have one for that branch.
</p>
</blockquote>
<p>
That branch is tested by these:
</p>
<pre class="wiki"> sage: sqrt2^(1/5)
2^(1/10)
sage: sqrt2^sqrt2
2^(1/2*sqrt(2))
</pre><blockquote class="citation">
<p>
Also, can you think of a place where putting the rational power in the denominator could cause something to break? Is that standard practice in this kind of computer algebra? For instance, Maxima does not do this.
</p>
<pre class="wiki">(%i3) 2^(-1/2);
(%o3) 1/sqrt(2)
</pre></blockquote>
<p>
AFAICT, GiNaC assumes this normal form.
</p>
<p>
On another note... IMHO, a simple typo in comments within source code, or not documenting which doctest corresponds to which branch in the code is justification to switch a ticket to <code>needs_work</code>. You might not be satisfied with the work, but it is possible that someone else will give a positive review, especially since this is a <code>critical</code> ticket.
</p>
TicketkcrismanWed, 15 Feb 2012 17:52:47 GMT
https://trac.sagemath.org/ticket/8659#comment:15
https://trac.sagemath.org/ticket/8659#comment:15
<blockquote class="citation">
<p>
On another note... IMHO, a simple typo in comments within source code, or not documenting which doctest corresponds to which branch in the code is justification to switch a ticket to <code>needs_work</code>. You might not be satisfied with the work, but it is
</p>
</blockquote>
<p>
Fair enough! Though I do think typos are 'needs work', often I can update them on a refresh. The doctest thing was just wanting to check that we *did* check all branches. Maybe 'needs info' is better? The point is that I want to make sure the comment gets seen; a lot of times I see questions on 'needs review' that are then never actually addressed. I don't really care what the status itself is.
</p>
<blockquote class="citation">
<p>
possible that someone else will give a positive review, especially since this is a <code>critical</code> ticket.
</p>
</blockquote>
<p>
Well, it's apparently been <code>critical</code> for nearly two years, so perhaps that is less convincing of an argument on this ticket than others. But point taken in general!
</p>
TicketkcrismanWed, 15 Feb 2012 20:22:14 GMTreviewer set
https://trac.sagemath.org/ticket/8659#comment:16
https://trac.sagemath.org/ticket/8659#comment:16
<ul>
<li><strong>reviewer</strong>
set to <em>Karl-Dieter Crisman</em>
</li>
</ul>
<p>
Okay, I now get all the branches, and it makes sense. Thanks for hanging in there with me! Also, good catch and test on the powers less than -1.
</p>
<p>
I'm not putting 'needs work' :) but also not yet positive review. In <a class="ticket" href="https://trac.sagemath.org/ticket/8659#comment:7" title="Comment 7">comment:7</a>, we see the equivalent of this inconsistency:
</p>
<pre class="wiki">sage: a= matrix([[2,2,I],[2,2,-I],[I,-I,0]]).determinant();
sage: a; type(a)
8
<type 'sage.symbolic.expression.Expression'>
sage: b = SR(8)
sage: type(b)
<type 'sage.symbolic.expression.Expression'>
sage: a.operands(); a.operator()
[]
sage: b.operands(); b.operator()
[]
sage: b^(-1/2)
1/4*sqrt(2)
sage: a^(-1/2)
1/8*sqrt(8)
sage: a^(1/2)
sqrt(8)
sage: b^(1/2)
2*sqrt(2)
</pre><p>
I thought that maybe this was because (for reasons unclear to me) we had entered
</p>
<pre class="wiki">
if not PY_TYPE_CHECK(self, Rational):
</pre><p>
but
</p>
<pre class="wiki">sage: isinstance(b,Rational)
False
sage: isinstance(a,Rational)
False
</pre><p>
so I must be missing something obvious. Anyway, I can't see why these should return different things, and we still have the switch to rational that should take care of this:
</p>
<pre class="wiki"> res = QQ(base)**exp
</pre><p>
Also, the documentation in rational.pyx still says
</p>
<pre class="wiki">
def __pow__(self, n, dummy):
"""
Raise self to the integer power n.
</pre><p>
though I think this code has been used for non-integer powers for quite a while.
</p>
<p>
But perhaps another reviewer will see what is going on in these cases, my apologies if I'm wasting time.
</p>
TicketdavidloefflerSat, 10 Mar 2012 10:53:09 GMT
https://trac.sagemath.org/ticket/8659#comment:17
https://trac.sagemath.org/ticket/8659#comment:17
<p>
Apply trac_8659-hold_powers.take3.patch
</p>
<p>
(for the patchbot, which is trying to apply all three patches simultaneously)
</p>
TicketdavidloefflerSun, 11 Mar 2012 14:32:19 GMTstatus, reviewer changed
https://trac.sagemath.org/ticket/8659#comment:18
https://trac.sagemath.org/ticket/8659#comment:18
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
<li><strong>reviewer</strong>
changed from <em>Karl-Dieter Crisman</em> to <em>Karl-Dieter Crisman, PatchBot</em>
</li>
</ul>
<p>
Patch does not apply (either to 5.0.beta7, or to 4.8 with <a class="closed ticket" href="https://trac.sagemath.org/ticket/12511" title="defect: Unable to take numeric powers of I (closed: fixed)">#12511</a> installed).
</p>
TicketburcinThu, 24 May 2012 09:49:41 GMTattachment set
https://trac.sagemath.org/ticket/8659
https://trac.sagemath.org/ticket/8659
<ul>
<li><strong>attachment</strong>
set to <em>trac_8659-hold_powers.take4.patch</em>
</li>
</ul>
TicketburcinThu, 24 May 2012 09:50:55 GMTstatus, reviewer changed
https://trac.sagemath.org/ticket/8659#comment:19
https://trac.sagemath.org/ticket/8659#comment:19
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
<li><strong>reviewer</strong>
changed from <em>Karl-Dieter Crisman, PatchBot</em> to <em>Karl-Dieter Crisman</em>
</li>
</ul>
<p>
I rebased the patch to 5.0. Apply only <a class="attachment" href="https://trac.sagemath.org/attachment/ticket/8659/trac_8659-hold_powers.take4.patch" title="Attachment 'trac_8659-hold_powers.take4.patch' in Ticket #8659">attachment:trac_8659-hold_powers.take4.patch</a><a class="trac-rawlink" href="https://trac.sagemath.org/raw-attachment/ticket/8659/trac_8659-hold_powers.take4.patch" title="Download"></a>.
</p>
TicketmhansenMon, 28 May 2012 20:53:57 GMTdescription changed
https://trac.sagemath.org/ticket/8659#comment:20
https://trac.sagemath.org/ticket/8659#comment:20
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/8659?action=diff&version=20">diff</a>)
</li>
</ul>
<p>
For the patchbot, apply trac_8659-hold_powers.take4.patch
</p>
TicketmhansenMon, 28 May 2012 21:09:03 GMTstatus, reviewer changed; keywords set
https://trac.sagemath.org/ticket/8659#comment:21
https://trac.sagemath.org/ticket/8659#comment:21
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>positive_review</em>
</li>
<li><strong>reviewer</strong>
changed from <em>Karl-Dieter Crisman</em> to <em>Karl-Dieter Crisman, Mike Hansen</em>
</li>
<li><strong>keywords</strong>
<em>sd40.5</em> added
</li>
</ul>
<p>
Looks good to me.
</p>
TicketjdemeyerMon, 18 Jun 2012 10:21:48 GMTstatus changed; resolution, merged set
https://trac.sagemath.org/ticket/8659#comment:22
https://trac.sagemath.org/ticket/8659#comment:22
<ul>
<li><strong>status</strong>
changed from <em>positive_review</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>fixed</em>
</li>
<li><strong>merged</strong>
set to <em>sage-5.1.beta5</em>
</li>
</ul>
Ticket