ImageLeftAction

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

This struct is a specialisation of ImageLeftAction 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 left multiplication of the rows in pt by the matrix x, and modifies res to contain the resulting row basis. This is equivalent to applying ImageRightAction to the transpose of x.

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 ImageLeftAction<Mat, BitSet<N>>

This struct is a specialisation of ImageLeftAction 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 left multiplying pt by the matrix x, and modifies res to contain the resulting bitset. This is equivalent to applying ImageRightAction to the transpose of x.

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 columns in x.