8#include <Eigen/SparseCore>
17template <
typename Derived>
18auto sparse_inf_norms(
const Eigen::SparseCompressedBase<Derived>& mat)
19 -> Eigen::Vector<typename Derived::Scalar, Eigen::Dynamic> {
20 using Scalar =
typename Derived::Scalar;
21 using DenseVector = Eigen::Vector<Scalar, Eigen::Dynamic>;
23 DenseVector norms = DenseVector::Zero(mat.rows());
24 for (
int k = 0; k < mat.outerSize(); ++k) {
25 for (
typename Derived::InnerIterator it{mat, k}; it; ++it) {
27 norms[it.row()] = std::max(norms[it.row()], abs(it.value()));