Defined in matrix-class.hpp.
This page describes the functionality for \(n \times n\) matrices over the finite quotient of the usual semiring of natural number by the congruence \(t = t + p\) for arbitrary \(n\), \(t\), and \(p\). The value \(t\) is referred to as the threshold and \(p\) is called the period. The matrices of this type are referred to by the acronym ntp matrices, for "natural threshold period". The NTPSemiring has elements \(\{0, 1, ..., t, t + 1, ..., t + p - 1\}\) where \(t\), and \(p\) are the threshold and period, respectively; addition and multiplication in the NTPSemiring is defined below.
There are three types of such matrices where:
All three of these types can be accessed via the alias template NTPMat<T, P, R, C, Scalar> if T and P have value 0, then the threshold and period can be set at run time, and if R or C is 0, then the dimension can be set at run time. The default values of T, P, and R are 0, and the default value of C is R.
The alias NTPMat is one of StaticMatrix, DynamicMatrix (compile-time arithmetic), or DynamicMatrix (run-time arithmetic); please refer to the documentation of these class templates for more details. The only substantial difference in the interface of static and dynamic matrices is that the former can be default constructed and the latter should be constructed using the dimensions.
Classes | |
| struct | NTPPlus< T, P, Scalar > |
| Function object for addition in ntp semirings. More... | |
| struct | NTPProd< T, P, Scalar > |
| Function object for multiplication in an ntp semirings. More... | |
| class | NTPSemiring< Scalar > |
| Class representing an ntp semiring. More... | |
Typedefs | |
| template<size_t T, size_t P, typename Scalar> | |
| using | DynamicNTPMatWithoutSemiring |
| Alias for ntp matrices with static threshold and period. | |
| template<typename Scalar> | |
| using | DynamicNTPMatWithSemiring = DynamicMatrix<NTPSemiring<Scalar>, Scalar> |
| Alias for ntp matrices with dynamic threshold and period. | |
| template<size_t T = 0, size_t P = 0, size_t R = 0, size_t C = R, typename Scalar = size_t> | |
| using | NTPMat |
| Alias template for ntp matrices. | |
| template<size_t T, size_t P, size_t R, size_t C, typename Scalar> | |
| using | StaticNTPMat |
| Alias for ntp matrices with static threshold and period, and dimensions. | |
Functions | |
| template<typename Mat> | |
| auto | throw_if_bad_entry (Mat const &m) -> std::enable_if_t< IsNTPMat< Mat > > |
| Check that the entries in an ntp matrix are valid. | |
| template<typename Mat> | |
| auto | throw_if_bad_entry (Mat const &m, typename Mat::scalar_type val) -> std::enable_if_t< IsNTPMat< Mat > > |
| Check that an entry in an ntp matrix is valid. | |
Variables | |
| template<typename U> | |
| static constexpr bool | IsNTPMat = detail::IsNTPMatHelper<U>::value |
| Helper to check if a type is NTPMat. | |
| using DynamicNTPMatWithoutSemiring |
Defined in matrix-class.hpp.
Alias for the type of dynamic ntp matrices where the dimension is defined at run time, but the threshold and period are defined at compile-time.
| T | the threshold. |
| P | the period. |
| Scalar | the type of the entries in the matrix. |
| using DynamicNTPMatWithSemiring = DynamicMatrix<NTPSemiring<Scalar>, Scalar> |
Defined in matrix-class.hpp.
Alias for ntp matrices with dimensions, threshold, and period defined at runtime.
| Scalar | the type of the entries in the matrix. |
| using NTPMat |
Defined in matrix-class.hpp.
Alias template for ntp matrices.
| T | the threshold. If both T and P are 0, this indicates that the value will be set at run time (default: 0). |
| P | the period. If both T and P are 0, this indicates that the value will be set at run time (default: 0). |
| R | the number of rows. A value of 0 indicates that the value will be set at run time (default: 0). |
| C | the number of columns. A value of 0 indicates that the value will be set at run time (default: R). |
| Scalar | the type of the entries in the matrix (default: size_t). |
| using StaticNTPMat |
Defined in matrix-class.hpp.
Alias for static ntp matrices where the threshold, period, and dimensions are defined at compile-time.
| T | the threshold. |
| P | the period. |
| R | the number of rows. |
| C | the number of columns. |
| Scalar | the type of the entries in the matrix (default: int). |
| auto throw_if_bad_entry | ( | Mat const & | m | ) | -> std::enable_if_t< IsNTPMat< Mat > > |
Defined in matrix-exceptions.hpp.
This function can be used to check that a matrix contains values in the underlying semiring.
| Mat | the type of the matrix m (must satisfy IsNTPMat<Mat>). |
| m | the matrix to check. |
| LibsemigroupsException | if any entry in the matrix is not in the set \(\{0, 1, \ldots, t + p - 1\}\) where \(t\) is the threshold, and \(p\) the period, of the matrix. |
| LibsemigroupsException | if the underlying semiring is not defined (only applies to matrices with run time arithmetic). |
| auto throw_if_bad_entry | ( | Mat const & | m, |
| typename Mat::scalar_type | val ) -> std::enable_if_t< IsNTPMat< Mat > > |
Defined in matrix-exceptions.hpp.
This function can be used to check that a matrix contains values in the underlying semiring.
| Mat | the type of the 1st argument (must satisfy IsNTPMat<Mat>). |
| m | the matrix. |
| val | the entry to check. |
| LibsemigroupsException | if the entry val is not in the set \(\{0, 1, \ldots, t + p - 1\}\) where \(t\) is the threshold, and \(p\) the period, of the matrix. |
| LibsemigroupsException | if the underlying semiring is not defined (only applies to matrices with run time arithmetic). |
|
staticconstexpr |
Defined in is-matrix.hpp.
This variable has value true if the template parameter U is the same as NTPMat<T, P, R, C, Scalar> for some values of T, P, R, C, and Scalar; and false if it is not.
| U | the type to check. |