13 requires LinearOperator<Op>
19 : op_(std::move(op)) {}
22 [[nodiscard]]
idx rows() const noexcept {
return op_.rows(); }
23 [[nodiscard]]
idx cols() const noexcept {
return op_.cols(); }
25 const Op&
base() const noexcept {
return op_; }
39 : op_(std::move(op)) {}
42 [[nodiscard]]
idx rows() const noexcept {
return op_.rows(); }
43 [[nodiscard]]
idx cols() const noexcept {
return op_.cols(); }
45 const Op&
base() const noexcept {
return op_; }
const Op & base() const noexcept
void apply(const Vector &x, Vector &y) const
void symmetric_operator_tag
idx rows() const noexcept
idx cols() const noexcept
idx cols() const noexcept
const Op & base() const noexcept
idx rows() const noexcept
void symmetric_operator_tag
void apply(const Vector &x, Vector &y) const
Compile-time contract for the matrix-free product y = A*x.
Storage and operator concepts for numerical routines.
SymmetricOp< Op > assume_symmetric(Op op)
SPDOp< Op > assume_spd(Op op)