On Sat, Sep 17, 2011 at 10:40 AM, Charles R Harris < charlesr.harris@gmail.com> wrote:
2011/9/14 Stéfan van der Walt <stefan@sun.ac.za>
Hi all,
There were some failures in the polynomial tests earlier today, and while investigating I saw that numpy.ma implements its own root finder. It uses inversion of a Van der Monde matrix, which I believe may suffer from some numerical instability problems. Given that Charles has gone to some length to implement good polynomial root finders, I think it would be best to employ those instead, and simply pre-filter the data that comes from the masked array module, if possible.
The test failure arises because the test compares against np.polyfit where Travis changed the column scaling, which in turn changed the singular values, and it is that comparison that fails.
The Vandermonde matrix needs to be used for the fitting so nothing should be changed there. To fix the test failure, either the test could be modified or the ma.polyfit routine can be changed. Probably the latter is the best option, the new scaling code can be brought over and maybe the weight and covariance options added.Travis' changes needs to be audited in any case to make sure all the corner cases are covered.
Note that the enhanced np.polyfit can be called directly with the weight set to zero for the masked rows, i.e., set w to the compliment of the mask. That should simplify the code a bit. Chuck