Skip to content

Implement matrix `norm()`

Ryan Curtin requested to merge rcurtin/bandicoot-code:mat-norm into unstable

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 submatrix min() implementations.
  • I added tests for the new min() and max() 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.

Merge request reports