Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::linear_algebra::Matrix2x2< T, a, b, c, d > Struct Template Referenceexport

General (possibly-singular) 2×2 matrix with NTTP entries. More...

Public Types

using Domain = T

Public Member Functions

template<T a2, T b2, T c2, T d2>
constexpr auto operator* (Matrix2x2< T, a2, b2, c2, d2 >) const
template<T a2, T b2, T c2, T d2>
constexpr auto operator* (Invertible2x2< T, a2, b2, c2, d2 >) const
constexpr auto operator- () const
template<T a2, T b2, T c2, T d2>
constexpr auto operator+ (Matrix2x2< T, a2, b2, c2, d2 >) const
template<T a2, T b2, T c2, T d2>
constexpr bool operator== (Matrix2x2< T, a2, b2, c2, d2 >) const

Static Public Attributes

static constexpr T m11 = a
static constexpr T m12 = b
static constexpr T m21 = c
static constexpr T m22 = d

Detailed Description

template<typename T, T a, T b, T c, T d>
requires dedekind::algebra::HasRingOperators<T>
struct dedekind::linear_algebra::Matrix2x2< T, a, b, c, d >

General (possibly-singular) 2×2 matrix with NTTP entries.

Companion to Invertible2x2 without the full-rank static_assert. Used for off-diagonal blocks in BlockUpperTriangular where the block matrix's invertibility does not require the off-diagonal blocks to be invertible themselves.

Supports the arithmetic needed for Tier 2 of #366: composition, unary negation, and mixed composition with Invertible2x2. Does not advertise an inverse — singular Matrix2x2s are valid inhabitants of the type.


The documentation for this struct was generated from the following file: