Skip to content

Commit 5e2704a

Browse files
committed
Fix CIF sorting by forcing key=repr.
It turns out sorting in `ComplexIntervalField` is broken. In this case, there are two elements that do not compare. ``` sage: x = PolynomialRing(CBF, 'x').gen() sage: _, a, b, _ = sorted((x^4 - 3).roots(ComplexIntervalField(100), multiplicities=False)) sage: a == b False sage: a < b False sage: a > b False sage: sorted([a,b]) [0.?e-37 + 1.31607401295249246081921890180?*I, 0.?e-37 - 1.31607401295249246081921890180?*I] sage: sorted([b,a]) [0.?e-37 - 1.31607401295249246081921890180?*I, 0.?e-37 + 1.31607401295249246081921890180?*I] ```
1 parent 33ec04b commit 5e2704a

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/sage/rings/complex_arb.pyx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -801,11 +801,12 @@ class ComplexBallField(UniqueRepresentation, sage.rings.abc.ComplexBallField):
801801
{[-1.316074012952492460819218901797 +/- 9.7e-34],
802802
[1.316074012952492460819218901797 +/- 9.7e-34]}
803803
804-
sage: set((x^4 - 3).roots(ComplexIntervalField(100), multiplicities=False))
805-
{-1.31607401295249246081921890180? + 0.?e-37*I,
804+
sage: sorted((x^4 - 3).roots(ComplexIntervalField(100),
805+
....: multiplicities=False), key=repr)
806+
[-1.31607401295249246081921890180? + 0.?e-37*I,
806807
0.?e-37 + 1.31607401295249246081921890180?*I,
807808
0.?e-37 - 1.31607401295249246081921890180?*I,
808-
1.31607401295249246081921890180? + 0.?e-37*I}
809+
1.31607401295249246081921890180? + 0.?e-37*I]
809810
810811
sage: set((x^2 - i/3).roots(ComplexBallField(2), multiplicities=False))
811812
{[+/- 0.409] + [+/- 0.409]*I, [+/- 0.409] + [+/- 0.409]*I}

0 commit comments

Comments
 (0)