Le mercredi 28 septembre 2016 03:13:11 UTC+2, Jonathan Bober a écrit :
>
>
> Ah, yes, I'm wrong again, as the multimodular in Flint is pretty new. I 
> didn't look at what Sage has until now (flint 2.5.2, which looks likes it 
> uses a fairly simple O(n^4) algorithm). I had previously looked at the 
> source code of the version of flint that I've actually been using myself, 
> which is from June. As I now recall (after reading an email I sent in June) 
> I'm using a "non-released" version precisely for the nmod_mat_charpoly() 
> function, which doesn't exist in the most recent release (which I guess 
> might be 2.5.2, but flintlib.org seems to be having problems at the 
> moment).
>
> I've actually done some fairly extensive real world semi-testing of 
> nmod_mat_charpoly() in the last few months (for almost the same reasons 
> that have lead me to investigate Sage/Linbox) but not fmpz_mat_charpoly(). 
> "semi" means that I haven't actually checked that the answers are correct. 
> I'm actually computing characteristic polynomials of integer matrices, but 
> writing down the integer matrices is too expensive, so I'm computing the 
> polynomials more efficiently mod p and then CRTing. Also, I'm doing exactly 
> what I think Linbox does, in that I am just waiting for the polynomials to 
> stabilize. Step 2, when it eventually happens, will separately compute the 
> roots of these polynomials numerically, which will (heuristically) verify 
> that they are correct. (Step 3 might involve actually proving somehow that 
> everything is correct, but I strongly fear that it might involve confessing 
> that everything is actually only "obviously" correct.) Once step 2 happens, 
> I'll either report some problems or let you know that everything went well.
>  
>
I don't think computing roots numerically is a good idea, because the 
charpoly is ill-conditionned. It would be interesting to compare outputs 
and timings with other packages, for example giac has its own multi-modular 
charpoly implementation (multi-modular, with probabilistic answer if 
proba_epsilon>0 or certified answer if proba_epsilon=0).
 

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to