Update mail for the aforementioned PR. After using the hint from Eric Moore, it got slightly faster but probably there is more room for improvement. Evgeni raised the issue of approximate checks instead of identical checks for zero, mostly the use case of an array contaminated with numerical noise. I am not sure about the business case for it but I'd like to fish for some feedback here too. The main issues I can see is that int types have no room for noise and also the tolerance adjustment would be quite difficult to pull off since it would depend on the magnitudes of the nonzero entries to decide what constitutes as noise.
Finally, though I started this in SciPy, I still have some doubts whether this should go into NumPy or not. But we can do that anytime later.
If it looks OK then I'd like to put these in well before the 1.8 deadline since I want to attempt to get the generic linalg functions solve, eig, and svd context aware, that is to say using these functions eig will dispatch to eigh or triangular solvers, linalg.solve will dispatch to different solvers depending on the structure etc.
Hence any feedback is welcome.
Best,
ilhan