BMat<N>¶
This page describes the functionality for \(m \times n\) boolean matrices
for arbitrary dimensions \(m\) and \(n\). There are two types of such
boolean matrices those whose dimension is known at compile-time, and those
where it is not. Both types can be accessed via the alias template
BMat<R, C>
: if R
or C
has value 0
, then the dimensions
can be set at run time, otherwise the dimensions are R
and C
. The default
value of R
is 0
and of C
is R
.
The alias BMat<R, C>
is either StaticMatrix
or
DynamicMatrix
, please refer to the documentation of these class
templates for more details. The only substantial difference in the interface
of StaticMatrix
and DynamicMatrix
is that the former can
be default constructed and the latter should be constructed using the
dimensions.
Example
BMat<3> m; // default construct an uninitialized 3 x 3 static matrix
BMat<> m(4, 4); // construct an uninitialized 4 x 4 dynamic matrix
-
struct BooleanPlus¶
This is a stateless struct with a single call operator of signature:
bool operator()(bool const x, bool const y) const noexcept
which returnsx || y
; representing addition in the boolean semiring.
-
struct BooleanProd¶
This is a stateless struct with a single call operator of signature:
bool operator()(bool const x, bool const y) const noexcept
which returnsx && y
; representing multiplication in the boolean semiring.
-
struct BooleanZero¶
This is a stateless struct with a single call operator of signature:
bool operator()() const noexcept
which returnsfalse
; representing the additive identity of the boolean semiring.
-
struct BooleanOne¶
This is a stateless struct with a single call operator of signature:
bool operator()() const noexcept
which returnstrue
; representing the multiplicative identity of the boolean semiring.
-
using DynamicBMat = DynamicMatrix<BooleanPlus, BooleanProd, BooleanZero, BooleanOne, int>¶
Alias for the type of dynamic boolean matrices where the dimensions of the matrices can be defined at run time.
-
template<size_t R, size_t C>
using StaticBMat = StaticMatrix<BooleanPlus, BooleanProd, BooleanZero, BooleanOne, N, N, int>¶ Alias for the type of static boolean matrices where the dimensions of the matrices are defined at compile time.
-
template<size_t R = 0, size_t C = R>
using BMat = std::conditional_t<R == 0 || C == 0, DynamicBMat, StaticBMat<R, C>>¶ Alias template for boolean matrices.
- Template Parameters
R – the number of rows of the matrices. A value of
0
(the default value) indicates that the dimensions will be set at run time.C – the number of columns of the matrices. A value of
0
indicates that the dimensions will be set at run time (the default value isR
).
-
template<typename T>
static constexpr bool IsBMat¶ This variable has value
true
if the template parameterT
is the same asBMat<R, C>
for some values ofR
andC
.