API Changes - wlevine/nmatrix GitHub Wiki

Remove NMatrix#getrf: This one doesn't make sense, because it's not really analogous to #getrf!, which returns the pivot array, and replaces the original matrix with LU. #getrf just returns the LU part and throws away the pivot array.

Remove NMatrix#lu_decomposition!: This is an alias for #getrf!, but the name seems too similar to #factorize_lu which does a different thing. Remove to prevent confusion

Change #getrf!: The clapack_?getrf interface is strange and doesn't match the LAPACK spec. Make #getrf! match LAPACK rather than ATLAS CLAPACK. All the callers were confused about this anyway, so I think it's OK to change. This has the downside that it has to do a transpose before and after calling clapack_getrf, which uses memory, but on the hand, all of the callers were already doing this anyway.

Change #factorize_cholesky: The new version assumes that the matrix is symmetric and so only has to call #potrf! once. The old version called #potrf! twice, but still returned nonsense in the case that the matrix was non-symmetric.

Remove NMatrix::LAPACK.clapack_gesv: This has the same behavior as NMatrix#solve and also the name was deceiving since it didn't actually call gesv.

Remove NMatrix::LAPACK.clapack_posv: Doesn't actually call C functions clapack_?posv. Arguments difficult to interpret. Replaced by NMatrix::LAPACK.posv.

Change NMatrix::LAPACK.geev: The old version did not actually work properly. New behavior is described in the documentation.