Sage: Ticket #13213: Comparisons in quadratic number field
https://trac.sagemath.org/ticket/13213
<p>
The order of quadratic field with specified embedding is not induced from the order of RR and CC. More precisely we have
</p>
<pre class="wiki">sage: K.<sqrt2> = NumberField(x^2 - 2, 'sqrt2', embedding=1.4142)
sage: sqrt2 < 100
False
sage: K.<s> = NumberField(x^3 - 2, 's', embedding=1.26)
sage: s < 100
False
</pre><p>
which is not compatible with the order of RR and
</p>
<pre class="wiki">sage: K.<i> = QuadraticField(-1)
sage: i > 1
True
sage: 1 > i
True
</pre><p>
which is not compatible (!) with the order of CC.
</p>
<p>
The ticket implements the order for quadratic field (for which comparisons are made using only operations on integers).
</p>
<p>
Note:
</p>
<ul><li>this patch is partly a duplicate because of <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a>
</li><li>the modifications for quadratic field field modify the behavior of many commands (especially about output order).
</li><li>the patch introduces a new attribute to NumberFieldElement_quadratic called standard_embedding (of type bint)
</li></ul><hr />
<p>
There is no significant lost of speed as shown on the following timings.
</p>
<pre class="wiki">sage: K.<sqrt2> = QuadraticField(2, 'sqrt2', embedding=1.4142)
sage: a = (3*sqrt2 + 18)/7
sage: b = (5*sqrt2 + 14)/5
sage: %timeit a < b
1000000 loops, best of 3: 408 ns per loop
sage: K.<s> = QuadraticField(-2)
sage: a = 3*s + 2/4
sage: b = 5/7*s + 1/3
sage: %timeit a < b
1000000 loops, best of 3: 352 ns per loop
</pre><p>
Timings without the patch
</p>
<pre class="wiki">sage: sage: K.<sqrt2> = QuadraticField(2,'sqrt2',embedding=1.4142)
sage: a = (3*sqrt2 + 18)/7
sage: b = (5*sqrt2 + 14)/5
sage: %timeit a < b
1000000 loops, best of 3: 393 ns per loop
sage: K.<s> = QuadraticField(-2)
sage: a = 3*s+2/4
sage: b = 5/7*s+1/3
sage: %timeit a < b
1000000 loops, best of 3: 344 ns per loop
</pre><p>
Apply:
</p>
<ul><li><a class="attachment" href="https://trac.sagemath.org/attachment/ticket/13213/trac_13213-quadratic_field_comparison.patch" title="Attachment 'trac_13213-quadratic_field_comparison.patch' in Ticket #13213">trac_13213-quadratic_field_comparison.patch</a><a class="trac-rawlink" href="https://trac.sagemath.org/raw-attachment/ticket/13213/trac_13213-quadratic_field_comparison.patch" title="Download">â€‹</a>
</li></ul>en-usSagehttps://trac.sagemath.org/chrome/site/logo_sagemath_trac.png
https://trac.sagemath.org/ticket/13213
Trac 1.1.6aapitzschSun, 08 Jul 2012 19:42:26 GMTauthor changed
https://trac.sagemath.org/ticket/13213#comment:1
https://trac.sagemath.org/ticket/13213#comment:1
<ul>
<li><strong>author</strong>
changed from <em>vdelecroix</em> to <em>Vincent Delecroix</em>
</li>
</ul>
<p>
I had a short look at your patch.
Could you use Python 3 compatible syntax to raise errors. E.g.
</p>
<pre class="wiki">raise ValueError("absolute value not implemented for complex embeddings")
</pre>
TicketvdelecroixMon, 09 Jul 2012 07:51:14 GMTdescription changed
https://trac.sagemath.org/ticket/13213#comment:2
https://trac.sagemath.org/ticket/13213#comment:2
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=2">diff</a>)
</li>
</ul>
TicketvdelecroixMon, 09 Jul 2012 07:51:55 GMTdescription changed
https://trac.sagemath.org/ticket/13213#comment:3
https://trac.sagemath.org/ticket/13213#comment:3
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=3">diff</a>)
</li>
</ul>
TicketvdelecroixMon, 09 Jul 2012 08:18:07 GMTdescription changed
https://trac.sagemath.org/ticket/13213#comment:4
https://trac.sagemath.org/ticket/13213#comment:4
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=4">diff</a>)
</li>
</ul>
TicketburcinTue, 10 Jul 2012 17:04:55 GMTreviewer set
https://trac.sagemath.org/ticket/13213#comment:5
https://trac.sagemath.org/ticket/13213#comment:5
<ul>
<li><strong>reviewer</strong>
set to <em>Burcin Erocal</em>
</li>
</ul>
<p>
Thanks again for the patch. A few comments:
</p>
<ul><li>reimplementing the comparison of quadratic number field elements is a well defined unit of change itself. I suggest moving <code>floor()</code> and <code>ceil()</code> implementations to a separate patch, even a different ticket.
</li><li>Do you really need to use rich comparisons? Working only with <code>__cmp__</code> should simplify the case comparisons before the return statements and avoid the new <code>python_object.pxi</code> include.
</li><li>I guess speed could be further improved by using an approximation (with <code>double</code>s say) first and falling back to the exact computation if the results are too close.
</li><li><code>left.D</code> is of type <code>Integer</code>. Cython tries to do the right thing for <code><unsigned int> left.D</code>, but it would be better to use <code>mpz_mul()</code> with <code>left.D.value</code>.
</li><li><code>mpz_sgn()</code> returns 0 if the argument is <code>0</code>. You don't seem to cover this case, though I couldn't find any example that returns wrong results.
</li><li>To avoid code duplication, it might be better change the if statement to:
<pre class="wiki"> if mpz_sgn(i)*mpz_sgn(j) == 1:
# both i and j are positive or negative
mpz_mul(i, i, i)
mpz_mul(j, j, j)
mpz_mul_ui(j, j, <unsigned int> left.D)
test = mpz_cmp(i, j)
if mpz_sgn(i) == -1:
# both i and j are negative
test *= -1
</pre></li></ul>
TicketvdelecroixWed, 11 Jul 2012 07:37:03 GMTdescription changed
https://trac.sagemath.org/ticket/13213#comment:6
https://trac.sagemath.org/ticket/13213#comment:6
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=6">diff</a>)
</li>
</ul>
<blockquote class="citation">
<ul><li>reimplementing the comparison of quadratic number field elements is a well defined unit of change itself. I suggest moving <code>floor()</code> and <code>ceil()</code> implementations to a separate patch, even a different ticket.
</li><li><code>left.D</code> is of type <code>Integer</code>. Cython tries to do the right thing for <code><unsigned int> left.D</code>, but it would be better to use <code>mpz_mul()</code> with <code>left.D.value</code>.
</li></ul></blockquote>
<p>
Done and done.
</p>
<blockquote class="citation">
<ul><li>Do you really need to use rich comparisons? Working only with <code>__cmp__</code> should simplify the case comparisons before the return statements and avoid the new <code>python_object.pxi</code> include.
</li></ul></blockquote>
<p>
We loose speed (~1 micro sec) by doing this. I quickly look at the code of comparison for Integer. The comparison is directly implemented inside <span class="underline">richcmp</span> and avoid as much as possible the coercion machinery (ie the type of the input is check with the cython function PY_TYPE_CHECK). Do you think we should proceed that way ?
</p>
<blockquote class="citation">
<ul><li>I guess speed could be further improved by using an approximation (with <code>double</code>s say) first and falling back to the exact computation if the results are too close.
</li></ul></blockquote>
<p>
What do you mean by too close ? How do I certify that my float comparison is accurate enough ?
Moreover, if we proceed that way we have to perform conversion from mpz_t to float (or double or real_mpfr). A way it may work is to look first if a,b, D and denom have reasonable values (recall that mpz_t have unlimited precision) and if yes, convert it to double and try to compare the arguments.
Last, I'm not sure the gain of speed would be terrific. Comparison requires only 7 integer operations.
</p>
<blockquote class="citation">
<ul><li><code>mpz_sgn()</code> returns 0 if the argument is <code>0</code>. You don't seem to cover this case, though I couldn't find any example that returns wrong results.
</li></ul></blockquote>
<p>
Actually there is no problem since we compute the sign of an expression of the form a<sup>2 + b</sup>2 D where a and b are both integers (and one of them is non null) and D is a square free integer. Hence the sign is never 0.
</p>
<blockquote class="citation">
<ul><li>To avoid code duplication, it might be better change the if statement to:
<pre class="wiki"> if mpz_sgn(i)*mpz_sgn(j) == 1:
# both i and j are positive or negative
mpz_mul(i, i, i)
mpz_mul(j, j, j)
mpz_mul_ui(j, j, <unsigned int> left.D)
test = mpz_cmp(i, j)
if mpz_sgn(i) == -1:
# both i and j are negative
test *= -1
</pre></li></ul></blockquote>
<p>
Sure but that way we call twice mpz_sgn(i)... I may change it if you prefer.
</p>
<p>
Actually, the part where a lot of time is lost is the check for embedding
</p>
<pre class="wiki">if not RDF.has_coerce_map_from(left._parent):
...
</pre><p>
By replacing it by
</p>
<pre class="wiki">if left.D < 0:
...
</pre><p>
I pass from 4 micro second to 2 micro seconds. That way comparison without embedding for positive discriminant will be equivalent to comparison with the standard embedding. This is in the last version of the patch. What do you think about that ?
</p>
TicketvdelecroixSat, 14 Jul 2012 18:54:58 GMTstatus changed
https://trac.sagemath.org/ticket/13213#comment:7
https://trac.sagemath.org/ticket/13213#comment:7
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>needs_review</em>
</li>
</ul>
TicketvdelecroixWed, 18 Jul 2012 11:59:40 GMT
https://trac.sagemath.org/ticket/13213#comment:8
https://trac.sagemath.org/ticket/13213#comment:8
<p>
The code for comparison introduces a small bug as it ask to the parent whether the embedding is standard or not (via the boolean attribute _standard_embedding). But the latter was not defined for Cyclotomic field of order 3,4,6 (which are the ones which are quadratic). In that case, the attribute _standard_embedding is created at the initialization of the cyclotomic field.
</p>
<p>
The new patch takes care of this.
</p>
TicketvdelecroixSat, 04 Aug 2012 04:29:17 GMTstatus, description changed
https://trac.sagemath.org/ticket/13213#comment:9
https://trac.sagemath.org/ticket/13213#comment:9
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=9">diff</a>)
</li>
</ul>
TicketvdelecroixSat, 04 Aug 2012 12:38:37 GMT
https://trac.sagemath.org/ticket/13213#comment:10
https://trac.sagemath.org/ticket/13213#comment:10
<p>
Because there are many parents for quadratic elements, I was obliged to test whether the parent has a method '_standard_embedding' or not. I correct all tests (many output have changed) and waiting for patchbot and reviewer!
</p>
TicketvdelecroixSat, 04 Aug 2012 12:38:46 GMTstatus changed
https://trac.sagemath.org/ticket/13213#comment:11
https://trac.sagemath.org/ticket/13213#comment:11
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
TicketvdelecroixWed, 08 Aug 2012 09:14:28 GMT
https://trac.sagemath.org/ticket/13213#comment:12
https://trac.sagemath.org/ticket/13213#comment:12
<p>
I corrected the two last tests that have failed...
</p>
TicketjdemeyerWed, 08 Aug 2012 12:42:37 GMT
https://trac.sagemath.org/ticket/13213#comment:13
https://trac.sagemath.org/ticket/13213#comment:13
<p>
How does this patch here relate to <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a>?
</p>
TicketjdemeyerWed, 08 Aug 2012 12:45:14 GMT
https://trac.sagemath.org/ticket/13213#comment:14
https://trac.sagemath.org/ticket/13213#comment:14
<p>
In the ticket title "real number field", should it say "quadratic number field" instead?
</p>
TicketvdelecroixWed, 08 Aug 2012 13:30:35 GMT
https://trac.sagemath.org/ticket/13213#comment:15
https://trac.sagemath.org/ticket/13213#comment:15
<p>
Hi Jeroen,
</p>
<p>
From the last comment of Burcin on <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a>, it seems to me that we will close <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a> as a duplicate. On the other hand, an other patch is coming for comparisons of general number field. Would you prefer to have it on a separate ticket ?
</p>
TicketjdemeyerWed, 08 Aug 2012 13:43:04 GMT
https://trac.sagemath.org/ticket/13213#comment:16
https://trac.sagemath.org/ticket/13213#comment:16
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/13213#comment:15" title="Comment 15">vdelecroix</a>:
</p>
<blockquote class="citation">
<p>
From the last comment of Burcin on <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a>, it seems to me that we will close <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a> as a duplicate. On the other hand, an other patch is coming for comparisons of general number field. Would you prefer to have it on a separate ticket ?
</p>
</blockquote>
<p>
I don't care very much, but I think it should be clear how the various tickets relate to eachother.
</p>
<p>
Also <a class="closed ticket" href="https://trac.sagemath.org/ticket/10064" title="defect: -1 in expression "is_positive". (closed: fixed)">#10064</a> is related, at least it has <a class="closed ticket" href="https://trac.sagemath.org/ticket/7160" title="defect: comparison with quadratic number field elements (closed: fixed)">#7160</a> as dependency.
</p>
TicketvdelecroixWed, 08 Aug 2012 15:31:40 GMTdescription changed
https://trac.sagemath.org/ticket/13213#comment:17
https://trac.sagemath.org/ticket/13213#comment:17
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=17">diff</a>)
</li>
</ul>
TickettkluckThu, 09 Aug 2012 15:19:12 GMT
https://trac.sagemath.org/ticket/13213#comment:18
https://trac.sagemath.org/ticket/13213#comment:18
<p>
Just had a quick look at your patch. How about using <code>@cached_method</code> as a decorator for <code>_gen_approx</code>? Then you don't have to implement caching yourself. It makes the code a little bit easier to read.
</p>
TicketvdelecroixMon, 13 Aug 2012 15:56:31 GMT
https://trac.sagemath.org/ticket/13213#comment:19
https://trac.sagemath.org/ticket/13213#comment:19
<p>
Hello,
</p>
<p>
Actually, a lot of time is lost for asking questions to the parent. For quadratic number field, it is for asking about the attribute _standard_embedding. I build a new patch with a bint attribute added to NumberFieldElement_quadratic and the speed of comparison is divided by 10 (from 4 milliseconds to 400 nanoseconds). It will be updated as soon as possible.
As modifying the structure of NumberFieldElement_quadratic is a major change, I will split the patch into two parts : quadratic number fields and general number fields.
</p>
<p>
Vincent
</p>
TicketvdelecroixFri, 10 May 2013 09:42:07 GMTdescription, summary changed
https://trac.sagemath.org/ticket/13213#comment:20
https://trac.sagemath.org/ticket/13213#comment:20
<ul>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=20">diff</a>)
</li>
<li><strong>summary</strong>
changed from <em>Comparisons in real number field</em> to <em>Comparisons in quadratic number field</em>
</li>
</ul>
TicketvdelecroixFri, 10 May 2013 09:49:56 GMT
https://trac.sagemath.org/ticket/13213#comment:21
https://trac.sagemath.org/ticket/13213#comment:21
<p>
apply trac_13213-quadratic_field_comparison.patch
</p>
TicketjpfloriFri, 10 May 2013 14:27:25 GMTstatus, description changed; work_issues set
https://trac.sagemath.org/ticket/13213#comment:22
https://trac.sagemath.org/ticket/13213#comment:22
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
<li><strong>work_issues</strong>
set to <em>rebase 5.10.beta2</em>
</li>
<li><strong>description</strong>
modified (<a href="/ticket/13213?action=diff&version=22">diff</a>)
</li>
</ul>
<p>
This fails to apply on 5.10.beta2.
Having a look right now.
</p>
TicketvdelecroixFri, 10 May 2013 14:55:30 GMT
https://trac.sagemath.org/ticket/13213#comment:23
https://trac.sagemath.org/ticket/13213#comment:23
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/13213#comment:22" title="Comment 22">jpflori</a>:
</p>
<blockquote class="citation">
<p>
This fails to apply on 5.10.beta2.
</p>
</blockquote>
<p>
Yes, it is a minor rejection on sage/schemes/elliptic_curves/ell_number_field.py and a more serious problem with python_object.pxi that seems to not exist anymore.
</p>
<blockquote class="citation">
<p>
Having a look right now.
</p>
</blockquote>
<p>
Does it mean that I should wait for your modifications ?
</p>
TicketjpfloriFri, 10 May 2013 15:03:06 GMT
https://trac.sagemath.org/ticket/13213#comment:24
https://trac.sagemath.org/ticket/13213#comment:24
<p>
No, if you identified the issues, please go ahead.
I've just untarred 10.beta2 and are currently on something else, so you will definitely get faster.
</p>
TicketvdelecroixFri, 10 May 2013 15:14:49 GMT
https://trac.sagemath.org/ticket/13213#comment:25
https://trac.sagemath.org/ticket/13213#comment:25
<p>
For the second problem I simply removed the import of python_object.pxi which was not needed anymore.
</p>
<p>
apply trac_13213-quadratic_field_comparison.patch
</p>
TicketvdelecroixFri, 10 May 2013 15:15:04 GMTstatus changed
https://trac.sagemath.org/ticket/13213#comment:26
https://trac.sagemath.org/ticket/13213#comment:26
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
TicketvdelecroixFri, 10 May 2013 16:10:20 GMT
https://trac.sagemath.org/ticket/13213#comment:27
https://trac.sagemath.org/ticket/13213#comment:27
<p>
Last minute modification: more tests, more docs.
</p>
<p>
apply trac_13213-quadratic_field_comparison.patch
</p>
TicketkcrismanFri, 10 May 2013 16:21:08 GMT
https://trac.sagemath.org/ticket/13213#comment:28
https://trac.sagemath.org/ticket/13213#comment:28
<p>
<a class="closed ticket" href="https://trac.sagemath.org/ticket/7545" title="enhancement: Gaussian and Eisenstein integers (closed: fixed)">#7545</a> is possibly a related ticket.
</p>
TicketvdelecroixFri, 10 May 2013 18:20:45 GMTstatus changed
https://trac.sagemath.org/ticket/13213#comment:29
https://trac.sagemath.org/ticket/13213#comment:29
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>needs_work</em>
</li>
</ul>
<p>
There is a <strong>strange</strong> problem
</p>
<pre class="wiki">sage: K.<sqrt2> = QuadraticField(2)
sage: 1/2 + sqrt2 > 0
False
</pre>
TicketvdelecroixFri, 10 May 2013 19:10:02 GMT
https://trac.sagemath.org/ticket/13213#comment:30
https://trac.sagemath.org/ticket/13213#comment:30
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/13213#comment:29" title="Comment 29">vdelecroix</a>:
</p>
<blockquote class="citation">
<p>
There is a <strong>strange</strong> problem
</p>
<pre class="wiki">sage: K.<sqrt2> = QuadraticField(2)
sage: 1/2 + sqrt2 > 0
False
</pre></blockquote>
<p>
I got the problem... it was because there is a natural morphism implemented from the rational field to quadratic number field (<code>sage.rings.number_field.number_field_element_quadratic.Q_to_quadratic_field_element</code>) which uses a non properly initialized instance of a quadratic element !
</p>
TicketvdelecroixFri, 10 May 2013 19:10:40 GMTstatus changed
https://trac.sagemath.org/ticket/13213#comment:31
https://trac.sagemath.org/ticket/13213#comment:31
<ul>
<li><strong>status</strong>
changed from <em>needs_work</em> to <em>needs_review</em>
</li>
</ul>
<p>
apply trac_13213-quadratic_field_comparison.patch
</p>
TicketvbraunTue, 14 May 2013 11:11:17 GMT
https://trac.sagemath.org/ticket/13213#comment:32
https://trac.sagemath.org/ticket/13213#comment:32
<p>
I get a doctest failure with sage-5.10.beta2:
</p>
<pre class="wiki">File "devel/sage/doc/de/tutorial/tour_advanced.rst", line 483, in doc.de.tutorial.tour_advanced
Failed example:
M.T(2).charpoly('x').factor()
Expected:
(x - 2*zeta6 - 1) * (x - zeta6 - 2) * (x + zeta6 + 1)^2
Got:
(x - zeta6 - 2) * (x - 2*zeta6 - 1) * (x + zeta6 + 1)^2
**********************************************************************
1 item had failures:
1 of 136 in doc.de.tutorial.tour_advanced
[118 tests, 1 failure, 1.44 s]
</pre>
TicketvdelecroixWed, 15 May 2013 14:31:02 GMTattachment set
https://trac.sagemath.org/ticket/13213
https://trac.sagemath.org/ticket/13213
<ul>
<li><strong>attachment</strong>
set to <em>trac_13213-quadratic_field_comparison.patch</em>
</li>
</ul>
TicketvdelecroixWed, 15 May 2013 14:32:33 GMT
https://trac.sagemath.org/ticket/13213#comment:33
https://trac.sagemath.org/ticket/13213#comment:33
<p>
Replying to <a class="ticket" href="https://trac.sagemath.org/ticket/13213#comment:32" title="Comment 32">vbraun</a>:
</p>
<blockquote class="citation">
<p>
I get a doctest failure with sage-5.10.beta2:
</p>
<pre class="wiki">File "devel/sage/doc/de/tutorial/tour_advanced.rst", line 483, in doc.de.tutorial.tour_advanced
Failed example:
M.T(2).charpoly('x').factor()
Expected:
(x - 2*zeta6 - 1) * (x - zeta6 - 2) * (x + zeta6 + 1)^2
Got:
(x - zeta6 - 2) * (x - 2*zeta6 - 1) * (x + zeta6 + 1)^2
**********************************************************************
1 item had failures:
1 of 136 in doc.de.tutorial.tour_advanced
[118 tests, 1 failure, 1.44 s]
</pre></blockquote>
<p>
Thanks for that. I got the same error on my computer and change the patch accordingly. Why was patchbot happy with the former patch ?
</p>
<p>
apply trac_13213-quadratic_field_comparison.patch
</p>
TicketvbraunWed, 15 May 2013 14:47:53 GMT
https://trac.sagemath.org/ticket/13213#comment:34
https://trac.sagemath.org/ticket/13213#comment:34
<p>
The patchbot apparently doesn't check German docs. EnttÃ¤uschend! ;-)
</p>
TicketvbraunWed, 15 May 2013 16:45:37 GMTstatus, reviewer changed
https://trac.sagemath.org/ticket/13213#comment:35
https://trac.sagemath.org/ticket/13213#comment:35
<ul>
<li><strong>status</strong>
changed from <em>needs_review</em> to <em>positive_review</em>
</li>
<li><strong>reviewer</strong>
changed from <em>Burcin Erocal</em> to <em>Burcin Erocal, Volker Braun</em>
</li>
</ul>
<p>
All tests pass.
</p>
TicketkcrismanWed, 15 May 2013 18:09:10 GMTwork_issues deleted
https://trac.sagemath.org/ticket/13213#comment:36
https://trac.sagemath.org/ticket/13213#comment:36
<ul>
<li><strong>work_issues</strong>
<em>rebase 5.10.beta2</em> deleted
</li>
</ul>
TicketjdemeyerFri, 17 May 2013 06:32:23 GMTstatus changed; resolution, merged set
https://trac.sagemath.org/ticket/13213#comment:37
https://trac.sagemath.org/ticket/13213#comment:37
<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.10.beta4</em>
</li>
</ul>
Ticket