#6296: linbox minpoly over small finite fields is TOTALLY BROKEN
----------------------------+-----------------------------------------------
 Reporter:  was             |       Owner:  was       
     Type:  defect          |      Status:  new       
 Priority:  critical        |   Milestone:  sage-4.0.2
Component:  linear algebra  |    Keywords:            
 Reviewer:                  |      Author:            
   Merged:                  |  
----------------------------+-----------------------------------------------

Comment(by was):

 from a linbox devel:
 {{{
 Well, I think this was corrected in linbox-1.1.6:

 The minpoly algorithm used depends on which method you are using from
 LinBox of course but,
 If you use the solution "minpoly" you will get the blackbox algorithm
 (just like if you specify "minpoly(pol, mat, Method::Blackbox())")
 then (since sept 2008 and 1.1.6) we will end up using an extension field
 to compute the minpoly (on my machine it will be GF(3^10)) and then
 I e.g. got the following result for one try (the algorithm is still
 probabilistic, but has a much larger success rate, roughly around 1/3^10):

  > 99993 minimal Polynomials are x^2 +x, 3 minimal polynomial are x+1, 4
 minimal polynomials are x

 Now for a so small matrix it could be better to use a dense version,
 which can be called by "minpoly(pol,mat,Method::Elimination())".
 If i am correct this dense version is also probabilistic (choice of the
 Krylov non-zero vector) and therefore should also pick vectors from an
 extension.
 This is not the case in 1.1.6.
 Clément can you confirm this ? If so it should be easy to fix, the same
 way we fixed Wiedemann.

 For your example matrix in some of the cases, when vectors [1,1], and
 [2,2] are chosen the Krylov space has rank 1, whereas for other non zero
 vectors  it has rank 2 and
 thus the dense minbpoly will be x^2+x or x+1 ...

 btw, the returned polynomial is always a factor of the true polynomial,
 therefore to get a 1/3^{10k} probability  of success it will be
 sufficient to perform the lcm of k runs.

 Best,

 --
                                        Jean-Guillaume Dumas.
 }}}

 My remarks
 {{{
 Hi Yann (and sage-support),

 This is from a linbox developer (see below).   This will be fixed by:

  (1) upgrading -- actually, we *already* use linbox-1.1.6 in sage, so ...

  (2) making it so minpoly by default just raises a NotImplementedError,
 however
    minpoly(proof=False) will call minpoly a bunch of times and return
 the lcm of the
    results.

 It turns out that maybe linbox doesn't seem to have a proof=True
 minpoly algorithm yet (they are hard to write), so our wrapping of
 linbox is wrong, given that in Sage the default is proof=True
 everywhere.

 Yann -- if you want to work on improving the situation wrt any of the
 above, please do.

 William
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6296#comment:1>
Sage <http://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
-~----------~----~----~----~------~----~------~--~---

Reply via email to