HPCombi
High Performance Combinatorics in C++ using vector instructions v1.0.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
HPCombi::PPerm16 Struct Reference

Partial permutation of \(\{0, \dots, 15\}\). More...

#include <perm16.hpp>

Inheritance diagram for HPCombi::PPerm16:
HPCombi::PTransf16 HPCombi::Vect16

Public Member Functions

 PPerm16 ()=default
 
constexpr PPerm16 (const PPerm16 &v)=default
 
constexpr PPerm16 (const vect v)
 
constexpr PPerm16 (const epu8 x)
 
 PPerm16 (std::vector< uint8_t > dom, std::vector< uint8_t > rng, size_t=0)
 
 PPerm16 (std::initializer_list< uint8_t > il)
 
PPerm16operator= (const PPerm16 &)=default
 
bool validate (size_t k=16) const
 Return whether *this is a well constructed object.
 
PPerm16 operator* (const PPerm16 &p) const
 The product of two partial perrmutations.
 
PPerm16 inverse_ref () const
 The inverse of a partial permutation.
 
PPerm16 right_one () const
 
PPerm16 left_one () const
 
- Public Member Functions inherited from HPCombi::PTransf16
 PTransf16 ()=default
 
constexpr PTransf16 (const vect v)
 
constexpr PTransf16 (const epu8 x)
 
 PTransf16 (std::vector< uint8_t > dom, std::vector< uint8_t > rng, size_t=0)
 
 PTransf16 (std::initializer_list< uint8_t > il)
 
bool validate (size_t k=16) const
 Return whether *this is a well constructed object.
 
PTransf16 operator* (const PTransf16 &p) const
 The product of two partial transformations.
 
epu8 image_mask_cmpestrm (bool complement=false) const
 Returns a mask for the image of *this.
 
epu8 image_mask_ref (bool complement=false) const
 Returns a mask for the image of *this.
 
epu8 image_mask (bool complement=false) const
 
uint32_t image_bitset (bool complement=false) const
 Returns a bit mask for the image of *this.
 
epu8 domain_mask (bool complement=false) const
 Returns a mask for the domain of *this.
 
uint32_t domain_bitset (bool complement=false) const
 Returns a bit mask for the domain of *this.
 
PTransf16 right_one () const
 Returns the partial right identity for *this.
 
PTransf16 left_one () const
 Returns the partial left identity for *this.
 
uint32_t rank_ref () const
 Returns the size of the image of *this.
 
uint32_t rank () const
 Returns the size of the image of *this.
 
uint32_t rank_cmpestrm () const
 Returns the size of the image of *this.
 
epu8 fix_points_mask (bool complement=false) const
 Returns a mask for the fix point of *this.
 
uint32_t fix_points_bitset (bool complement=false) const
 Returns a bit mask for the fix point of *this.
 
uint8_t smallest_fix_point () const
 Returns the smallest fix point of *this.
 
uint8_t smallest_moved_point () const
 Returns the smallest non fix point of *this.
 
uint8_t largest_fix_point () const
 Returns the largest fix point of *this.
 
uint8_t largest_moved_point () const
 Returns the largest non fix point of *this.
 
uint8_t nb_fix_points () const
 Returns the number of fix points of *this.
 
- Public Member Functions inherited from HPCombi::Vect16
 Vect16 ()=default
 
constexpr Vect16 (epu8 x)
 
 Vect16 (std::initializer_list< uint8_t > il, uint8_t def=0)
 
constexpr operator epu8 () const
 
arrayas_array ()
 
const arrayas_array () const
 
const uint8_t & operator[] (uint64_t i) const
 
uint8_t & operator[] (uint64_t i)
 
size_t first_diff (const Vect16 &u, size_t bound=size()) const
 
size_t last_diff (const Vect16 &u, size_t bound=size()) const
 
size_t first_zero (size_t bound=size()) const
 
size_t last_zero (size_t bound=size()) const
 
size_t first_non_zero (size_t bound=size()) const
 
size_t last_non_zero (size_t bound=size()) const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
bool operator== (const Vect16 &b) const
 
bool operator!= (const Vect16 &b) const
 
bool operator< (const Vect16 &b) const
 
int8_t less_partial (const Vect16 &b, int k) const
 
Vect16 permuted (const Vect16 &b) const
 
uint8_t sum () const
 
Vect16 partial_sums () const
 
Vect16 eval16 () const
 
bool is_permutation () const
 
bool is_permutation (size_t k) const
 

Static Public Member Functions

static constexpr PPerm16 one ()
 The identity partial permutations.
 
- Static Public Member Functions inherited from HPCombi::PTransf16
static constexpr size_t size ()
 
static constexpr PTransf16 one ()
 The identity partial transformation.
 
- Static Public Member Functions inherited from HPCombi::Vect16
static constexpr size_t size ()
 

Additional Inherited Members

- Public Types inherited from HPCombi::PTransf16
using vect = HPCombi::Vect16
 
using array = typename decltype(Epu8)::array
 
- Public Types inherited from HPCombi::Vect16
using array = typename decltype(Epu8)::array
 
using value_type = uint8_t
 
using iterator = typename array::iterator
 
using const_iterator = typename array::const_iterator
 
- Public Attributes inherited from HPCombi::Vect16
epu8 v
 

Detailed Description

Partial permutation of \(\{0, \dots, 15\}\).

Constructor & Destructor Documentation

◆ PPerm16() [1/6]

HPCombi::PPerm16::PPerm16 ( )
default

◆ PPerm16() [2/6]

constexpr HPCombi::PPerm16::PPerm16 ( const PPerm16 v)
constexprdefault

◆ PPerm16() [3/6]

constexpr HPCombi::PPerm16::PPerm16 ( const vect  v)
inlineconstexpr

◆ PPerm16() [4/6]

constexpr HPCombi::PPerm16::PPerm16 ( const epu8  x)
inlineconstexpr

◆ PPerm16() [5/6]

HPCombi::PPerm16::PPerm16 ( std::vector< uint8_t >  dom,
std::vector< uint8_t >  rng,
size_t  = 0 
)
inline

◆ PPerm16() [6/6]

HPCombi::PPerm16::PPerm16 ( std::initializer_list< uint8_t >  il)
inline

Member Function Documentation

◆ inverse_ref()

PPerm16 HPCombi::PPerm16::inverse_ref ( ) const
inline

The inverse of a partial permutation.

Returns
the inverse of *this. The inverse of \(p\) is the unique partial permutation \(i\) such that \( p * i * p = p\) and \( i * p * i = i\)
Example:
Perm16 x = {0,3,2,4,0xFF,5,6,0xFF,8,9,11,0xFF,12,0xFF,0xFF,0xFF};
Permutations of .
Definition perm16.hpp:208
Perm16 inverse() const
The inverse permutation.
Definition perm16.hpp:283
Returns
{0,0xFF,2,1,3,5,6,0xFF,8,9,0xFF,10,12,0xFF,0xFF,0xFF}
* 
Algorithm:
\(O(n)\) algorithm using reference cast to arrays

◆ left_one()

PPerm16 HPCombi::PPerm16::left_one ( ) const
inline

◆ one()

static constexpr PPerm16 HPCombi::PPerm16::one ( )
inlinestaticconstexpr

The identity partial permutations.

◆ operator*()

PPerm16 HPCombi::PPerm16::operator* ( const PPerm16 p) const
inline

The product of two partial perrmutations.

◆ operator=()

PPerm16 & HPCombi::PPerm16::operator= ( const PPerm16 )
default

◆ right_one()

PPerm16 HPCombi::PPerm16::right_one ( ) const
inline

◆ validate()

bool HPCombi::PPerm16::validate ( size_t  k = 16) const
inline

Return whether *this is a well constructed object.


The documentation for this struct was generated from the following files: