Skip to content

num::matrix_space

Defined in header <algebra/concepts.hpp>

template <class A, class T = entry_t<A>>
concept matrix_space = field<T> && requires(const A &a) {
  { a.rows() } -> std::convertible_to<idx>;
  { a.cols() } -> std::convertible_to<idx>;
  { a(idx{0}, idx{0}) } -> std::convertible_to<T>;
};

Linear map presented as an entrywise-indexable 2D array.

A matrix-free operator is a linear_operator but not a matrix_space. Routines that read entries, such as pivoting or banded factorization, require this.