HPCombi
High Performance Combinatorics in C++ using vector instructions v1.0.0
|
Permutations of \(\{0\dots 15\}\). More...
#include <perm16.hpp>
Public Member Functions | |
Perm16 ()=default | |
constexpr | Perm16 (const Perm16 &)=default |
constexpr | Perm16 (const vect v) |
constexpr | Perm16 (const epu8 x) |
Perm16 & | operator= (const Perm16 &)=default |
Perm16 (std::initializer_list< uint8_t > il) | |
bool | validate (size_t k=16) const |
Return whether *this is a well constructed object. | |
Perm16 | operator* (const Perm16 &p) const |
The product of two permutations. | |
Perm16 (uint64_t compressed) | |
Construct a permutations from its 64 bits compressed. | |
Perm16 | inverse_ref () const |
The inverse permutation. | |
Perm16 | inverse_arr () const |
The inverse permutation. | |
Perm16 | inverse_sort () const |
The inverse permutation. | |
Perm16 | inverse_find () const |
The inverse permutation. | |
Perm16 | inverse_pow () const |
The inverse permutation. | |
Perm16 | inverse_cycl () const |
The inverse permutation. | |
Perm16 | inverse () const |
The inverse permutation. | |
epu8 | lehmer_ref () const |
The Lehmer code of a permutation. | |
epu8 | lehmer_arr () const |
The Lehmer code of a permutation. | |
epu8 | lehmer () const |
The Lehmer code of a permutation. | |
uint8_t | length_ref () const |
The Coxeter length (ie: number of inversion) of a permutation. | |
uint8_t | length_arr () const |
The Coxeter length (ie: number of inversion) of a permutation. | |
uint8_t | length () const |
The Coxeter length (ie: number of inversion) of a permutation. | |
uint8_t | nb_descents_ref () const |
The number of descent of a permutation. | |
uint8_t | nb_descents () const |
The number of descent of a permutation. | |
epu8 | cycles_partition () const |
The set partition of the cycles of a permutation. | |
uint8_t | nb_cycles_ref () const |
The number of cycles of a permutation. | |
uint8_t | nb_cycles_unroll () const |
The number of cycles of a permutation. | |
uint8_t | nb_cycles () const |
The number of cycles of a permutation. | |
bool | left_weak_leq_ref (Perm16 other) const |
Compare two permutations for the left weak order. | |
bool | left_weak_leq_length (Perm16 other) const |
Compare two permutations for the left weak order. | |
bool | left_weak_leq (Perm16 other) const |
Compare two permutations for the left weak order. | |
Public Member Functions inherited from HPCombi::Transf16 | |
Transf16 ()=default | |
constexpr | Transf16 (const Transf16 &v)=default |
constexpr | Transf16 (const vect v) |
constexpr | Transf16 (const epu8 x) |
Transf16 (std::initializer_list< uint8_t > il) | |
Transf16 & | operator= (const Transf16 &)=default |
bool | validate (size_t k=16) const |
Return whether *this is a well constructed object. | |
Transf16 | operator* (const Transf16 &p) const |
The product of two transformations. | |
Transf16 (uint64_t compressed) | |
Construct a transformation from its 64 bits compressed. | |
operator uint64_t () const | |
The 64 bit compressed form of a transformation. | |
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 |
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 Perm16 | one () |
The identity partial permutation. | |
static Perm16 | elementary_transposition (uint64_t i) |
The elementary transposition exchanging \(i\) and \(i+1\). | |
static Perm16 | random (uint64_t n=16) |
A random permutation of size \(n\). | |
static Perm16 | unrankSJT (int n, int r) |
The r -th permutation of size n for the Steinhaus–Johnson–Trotter order. | |
Static Public Member Functions inherited from HPCombi::Transf16 | |
static constexpr Transf16 | one () |
The identity transformation. | |
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 |
Permutations of \(\{0\dots 15\}\).
|
default |
|
constexprdefault |
|
inlineconstexpr |
|
inlineconstexpr |
|
inline |
|
inlineexplicit |
Construct a permutations from its 64 bits compressed.
|
inline |
The set partition of the cycles of a permutation.
*this
[ 0, 0, 0, 0, 0, 5, 0, 7, 8, 9,10,11,12,13,14,13]
|
inlinestatic |
The elementary transposition exchanging \(i\) and \(i+1\).
|
inline |
The inverse permutation.
*this
{0,4,2,1,3,5,6,7,8,9,10,11,12,13,14,15}
Frontend method: currently aliased to inverse_cycl
|
inline |
|
inline |
The inverse permutation.
*this
{0,4,2,1,3,5,6,7,8,9,10,11,12,13,14,15}
|
inline |
|
inline |
The inverse permutation.
*this
{0,4,2,1,3,5,6,7,8,9,10,11,12,13,14,15}
Raise *this to power \(\text{LCM}(1, 2, ..., n) - 1\) so complexity is in \(O(log (\text{LCM}(1, 2, ..., n) - 1)) = O(n)\)
|
inline |
|
inline |
The inverse permutation.
*this
{0,4,2,1,3,5,6,7,8,9,10,11,12,13,14,15}
|
inline |
Compare two permutations for the left weak order.
true
|
inline |
Compare two permutations for the left weak order.
true
|
inline |
Compare two permutations for the left weak order.
true
|
inline |
The Lehmer code of a permutation.
*this
{0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0}
|
inline |
|
inline |
|
inline |
The Coxeter length (ie: number of inversion) of a permutation.
*this
4
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
The number of cycles of a permutation.
*this
10
|
inline |
|
inline |
|
inlinestaticconstexpr |
The identity partial permutation.
|
inlinestatic |
A random permutation of size \(n\).
|
inlinestatic |
The r
-th permutation of size n
for the Steinhaus–Johnson–Trotter order.
|
inline |
Return whether *this
is a well constructed object.