Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/semigroups/libsemigroups/docs/source/matrix/bmat/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 18.5.2025 mit Größe 3 kB image not shown  

Quelle  bmat.rst   Sprache: unbekannt

 
.. Copyright (c) 2020, J. D. Mitchell

   Distributed under the terms of the GPL license version 3.

   The full license is in the file LICENSE, distributed with this software.

BMat\<N>
========

This page describes the functionality for :math:`m \times n` boolean matrices
for arbitrary dimensions :math:`m` and :math:`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
:cpp:any:`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 :cpp:any:`BMat\<R, C>` is either :cpp:any:`StaticMatrix` or
:cpp:any:`DynamicMatrix`, please refer to the documentation of these class
templates for more details. The only substantial difference in the interface
of :cpp:any:`StaticMatrix` and :cpp:any:`DynamicMatrix` is that the former can
be default constructed and the latter should be constructed using the
dimensions.

**Example**

.. code-block:: cpp

   BMat<3> m;       // default construct an uninitialized 3 x 3 static matrix
   BMat<>  m(4, 4); // construct an uninitialized 4 x 4 dynamic matrix


.. cpp: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 returns ``x || y``; representing addition in the boolean semiring.

.. cpp: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 returns ``x && y``; representing multiplication in the boolean
    semiring.

.. cpp:struct:: BooleanZero

    This is a stateless struct with a single call operator of signature: ``bool
    operator()() const noexcept`` which returns ``false``; representing the
    additive identity of the boolean semiring.


.. cpp:struct:: BooleanOne

    This is a stateless struct with a single call operator of signature: ``bool
    operator()() const noexcept`` which returns ``true``; representing the
    multiplicative identity of the boolean semiring.


.. cpp:type:: 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.


.. cpp:type::  template <size_t R, size_t C>          \
               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.


.. cpp:type:: template <size_t R = 0, size_t C = R> \
      BMat = std::conditional_t<R == 0 || C == 0, DynamicBMat, StaticBMat<R, C>>

   Alias template for boolean matrices.

   :tparam 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.

   :tparam 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
     is ``R``).


.. cpp:var:: template <typename T> \
             static constexpr bool IsBMat

   This variable has value ``true`` if the template parameter ``T`` is the same
   as :cpp:any:`BMat\<R, C>` for some values of ``R`` and ``C``.

[ Dauer der Verarbeitung: 0.25 Sekunden  (vorverarbeitet)  ]