Skip to content

num::math::linear_operator

Defined in header <core/math/concepts.hpp>

template <class Op, class X = domain_t<Op>, class Y = codomain_t<Op>>
concept linear_operator =
    vector_space<X> && vector_space<Y> && requires(const Op &A, const X &x, Y &y) {
      apply(A, x, y);
      { A.rows() } -> std::integral;
      { A.cols() } -> std::integral;
    };

Linear map \(A: X \to Y\) that can be applied and knows its shape.

Linearity is a precondition the caller meets, like the semantic requirements of the standard concepts; it has no law, since no algorithm is chosen by it.