ImageRightAction

template<typename Container, typename Mat>
struct ImageRightAction<Mat, Container>

This struct is a specialisation of ImageRightAction for boolean matrices and containers of bitsets.

Template Parameters
  • Container – a container type where IsBitSet<typename Container::value_type> is true. For example, Container might be detail::StaticVector1<BitSet<N>, N> or std::vector<BitSet<N>> for some value of N with \(0\leq N\leq 64\).

  • Mat – a type such that IsBMat is true.

void operator()(Container &res, Container const &pt, Mat const &x) const

Given a row basis pt and a boolean matrix x, this function computes the row basis of the space obtained by right multiplication of the rows in pt by the matrix x, and modifies res to contain the resulting row basis.

Parameters
  • res – container to store the result.

  • pt – the container on which to act.

  • x – the matrix which is acting.

Returns

(None).

Complexity

\(O(r ^ 2 c)\) where \(r\) is the number of rows in pt and \(c\) is the number of columns in x.

template<size_t N, typename Mat>
struct ImageRightAction<Mat, BitSet<N>>

This struct is a specialisation of ImageRightAction for boolean matrices and bitsets.

Template Parameters
  • N – a value that exceeds the number of rows in any instance of Mat passed to the call operator.

  • Mat – a type such that IsBMat is true.

using result_type = BitSet<N>

Alias for the type of the result of the call operator.

void operator()(result_type &res, result_type const &pt, Mat const &x) const

Given a bitset pt (representing a row of a boolean matrix) and a boolean matrix x, this function computes the row obtained by right multiplying pt by the matrix x, and modifies res to contain the resulting bitset.

Parameters
  • res – bitset to contain the result.

  • pt – the bitset on which to act.

  • x – the matrix which is acting.

Returns

(None).

Complexity

\(O(r ^ 2)\) where \(r\) is the number of rows in x.