Transf

template<size_t N = 0, typename Scalar = std::conditional_t<N == 0, uint32_t, typename SmallestInteger<N>::type>>
class Transf : public PTransf<0, std::conditional_t<0 == 0, uint32_t, typename SmallestInteger<0>::type>>

Defined in transf.hpp.

A transformation \(f\) is just a function defined on the whole of \(\{0, 1, \ldots, n - 1\}\) for some integer \(n\) called the degree of \(f\). A transformation is stored as a vector of the images of \(\{0, 1, \ldots, n - 1\}\), i.e. \(\{(0)f, (1)f, \ldots, (n - 1)f\}\).

If N is 0 (the default), then the degree of a Transf instance can be defined at runtime, and if N is not 0, then the degree is fixed at compile time.

If N is 0, then the default value of Scalar is uint32_t. If N is not 0, then the default value of Scalar is the smallest integer type able to hold N. See also SmallestInteger.

Note

Transf has the same member functions as StaticPTransf and DynamicPTransf, this isn’t currently reflected by the contents of this page.

Template Parameters:
  • N – the degree (default: 0)

  • Scalar – an unsigned integer type (the type of the image values)

Subclassed by libsemigroups::Perm< N >, libsemigroups::Perm< N, Scalar >

Member types

container_type

value_type

Static member functions

identity() const

identity(size_t)

make(T&&)

make(std::initializer_list<value_type>&&)

Member functions

product_inplace(Transf const&, Transf const&)