Bill Allombert on Wed, 10 Apr 2019 18:47:00 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Fast test for integer-rooted polynomial |
On Wed, Apr 10, 2019 at 05:03:40PM +0200, Dirk Laurie wrote: > Op Wo. 10 Apr. 2019 om 03:10 het Gordon Royle <gordon.royle@uwa.edu.au> geskryf: > > > This is a very simple task, but I want to do it billions of times, and so I want it to be as fast as possible. > > > > I have written a suitable Pari/GP routine to do it, but just naively, and I wonder if there is a clever way to do it. > > > > > > INPUT: Billions of symmetric matrices of smallish order (say at most 16 x 16) each of which has small integer entries. > > > > OUTPUT: The input matrices that have only integer eigenvalues. > > > > From the nature of the problem, I know that any integer eigenvalues lie in {0,1,2, …, n} where n is the order of the matrix. > > > > > > What I do currently: > > > > - get Pari to compute the characteristic polynomial (charpoly()) > > - factor the characteristic polynomial > > - check that the factors are all linear > > Why don't you just compute the eigenvalues numerically, round them to > the nearest integer, and abort if the rounding discards too much? > Depending on what "small" means, this process can be made quite > foolproof. This is not useful with mateigen, because mateigen do polroots(charpoly(M)) in this case. nfroots(,charpoly(M)) will be faster. Cheers, Bill.