int (32-bit on all platforms) will loop around once the number of
elements exceed 2^31-1. While ints are used elsewhere for row index,
this is particularly significant here, since this int is used as an
index into a dense matrix. i.e. as long as #rows * #cols is greater
than 2^31, this will fail. This is probably the root cause of #2393.
* nogil declarations where possible (but no with nogil blocks, since the
performance benefit of those is not clear)
* use BLAS where appropriate
* replaced DOUBLE by double, INTEGER and int32 by int/np.intc, since that's
the type used by scipy.sparse
* explicit checks that dataset dims don't exceed INT_MAX
* replaced an np.all by an explicit loop (npymath library for C99 isfinite)
Replaced all BSD style licenses with "BSD 3 clause"
Not checked yet!
Removed duplicate "3 clause, 3 clause"
Removed trailing period if exists
Fixed some missed licences, still about 50 to do, but those can be automated
Think I got the last of them.
Apparently me and sed have different ideas of regex.
Found a few more
When an array is contiguous in memory but has `shape[dim] == 1`, then
its `strides[dim]` is not really used, so it can be considered arbitrary
even if the array is contiguous. This is generally true for 0-sized arrays.
If there is no chance of 0-sized (or 1-sized and 1-dimensioal) arrays, then
this code is perfectly correct in current numpy. But its a dangerous
design choice and it would be nice to be able to change numpy at some point.