Implement matrix `norm()`
This implements the matrix 1-norm, 2-norm, inf-norm, and Frobenius norm. The implementation is almost exactly the same as Armadillo's, but a few things were necessary to make it work:
- SVD support from !41 (merged).
- I had to add row-wise and col-wise
max()
implementations for the 1-norm and inf-norm. - Since I was in there... I also added row-wise and col-wise submatrix
max()
implementations, as well as row-wise and col-wise full-matrix and submatrixmin()
implementations. - I added tests for the new
min()
andmax()
overloads, and cleaned up the existing tests.
I uncovered a bug with max()
in the CUDA backend; I added the test case max_3
to reproduce the bug. I have not yet fixed it, though.