|
HPCombi
High Performance Combinatorics in C++ using vector instructions v1.0.3
|
Partial permutation of \(\{0\dots 15\}\); see also HPCombi::Perm16; partial means it might not be defined everywhere (but where it's defined, it's injective). More...
#include <perm16.hpp>
Public Member Functions | |
| PPerm16 ()=default | |
| constexpr | PPerm16 (const PPerm16 &vv)=default |
| constexpr | PPerm16 (const vect vv) |
| 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) | |
| PPerm16 & | operator= (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 vv) |
| 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 |
| array & | as_array () |
| const array & | as_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 |
Partial permutation of \(\{0\dots 15\}\); see also HPCombi::Perm16; partial means it might not be defined everywhere (but where it's defined, it's injective).
Undefined images are encoded as 0xFF.
|
default |
|
constexprdefault |
|
inlineconstexpr |
|
inlineconstexpr |
|
inline |
|
inline |
|
inline |
The inverse of a partial permutation.
*this. The inverse of \(p\) is the unique partial permutation \(i\) such that \( p * i * p = p\) and \( i * p * i = i\) {0,0xFF,2,1,3,5,6,0xFF,8,9,0xFF,10,12,0xFF,0xFF,0xFF}
*
|
inline |
|
inlinestaticconstexpr |
The identity partial permutations.
The product of two partial perrmutations.
|
inline |
|
inline |
Return whether *this is a well constructed object.