GREAT/MRAT bug, was: alt_eigen more info
- Subject: GREAT/MRAT bug, was: alt_eigen more info
- From: Barton Willis
- Date: Mon, 10 Dec 2012 12:12:00 +0000
> Apparently RATMX:true causes some function to call GREAT with bad arguments. Which function though?
I haven't looked at the source for specrepcheck, but the ratdisrep doesn't map down a list, for example:
(%i7) ?specrepcheck([rat(x)]);
1> (SPECREPCHECK
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1)))
<1 (SPECREPCHECK
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1)))
(%o7)/R/ [x]
The b-search-expr ('great' based binary search) in nset calls specrepcheck and then uses great, not $orderlessp (there is even a
helpful source code comment about this :). With or without ratmx : true, great can receive CRE arguments while doing set operations
such as adjoin. (The alt_eigen bug happens when nullspace is doing adjoin.)
Question: Should specrepcheck map down lists, or should b-search-expr dispatch $totaldisrep instead of specrepcheck?
(%i3) adjoin(matrix([x]), set(matrix([rat(x)])));
1> (SPECREPCHECK (($MATRIX SIMP) ((MLIST SIMP) $X)))
<1 (SPECREPCHECK (($MATRIX SIMP) ((MLIST SIMP) $X)))
1> (SPECREPCHECK
(($MATRIX SIMP)
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1))))
<1 (SPECREPCHECK
(($MATRIX SIMP)
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1))))
1> (SPECREPCHECK
(($MATRIX SIMP)
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1))))
<1 (SPECREPCHECK
(($MATRIX SIMP)
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1))))
1> (GREAT (($MATRIX SIMP)
((MLIST SIMP)
((MRAT SIMP ($X) (#:X34195)) (#:X34195 1 1) . 1)))
(($MATRIX SIMP) ((MLIST SIMP) $X)))
2> (GREAT (#:X34195 1 1) $X)
3> (GREAT 1 $X)
<3 (GREAT NIL)
<2 (GREAT NIL)
<1 (GREAT NIL)
(%o3)/R/ {matrix([x]),matrix([x])}
--Barton