28template <
size_t Size,
typename Expo>
31 std::copy(il.begin(), il.end(), this->v.begin());
32 for (Expo i = il.size(); i < Size; i++)
36template <
size_t Size,
typename Expo>
46template <
size_t Size,
typename Expo>
49 for (uint64_t i = 0; i < Size; i++)
54template <
size_t Size,
typename Expo>
56 static std::random_device rd;
57 static std::mt19937 g(rd());
60 std::shuffle(
res.v.begin(),
res.v.end(), g);
64template <
size_t Size,
typename Expo>
67 for (
size_t i = 0; i < Size; i++)
68 for (
size_t j = i + 1; j < Size; j++)
69 if (this->
v[i] > this->
v[j])
74template <
size_t Size,
typename Expo>
77 for (
size_t i = 0; i < Size; i++)
78 for (
size_t j = i + 1; j < Size; j++)
79 if (this->
v[i] > this->
v[j])
84template <
size_t Size,
typename Expo>
87 for (
size_t i = 0; i < Size - 1; i++)
88 if (this->
v[i] > this->
v[i + 1])
93template <
size_t Size,
typename Expo>
95 std::array<bool, Size> b{};
97 for (
size_t i = 0; i < Size; i++) {
99 for (
size_t j = i; !b[j]; j = this->
v[j])
107template <
size_t Size,
typename Expo>
109 for (
size_t i = 0; i < Size; i++) {
110 for (
size_t j = i + 1; j < Size; j++) {
111 if ((this->
v[i] > this->
v[j]) && (other[i] < other[j]))
124template <
size_t Size,
typename Expo>
125struct hash<
HPCombi::PermGeneric<Size, Expo>> {
127 return hash<HPCombi::VectGeneric<Size, Expo>>()(ar);
#define HPCOMBI_ASSERT(x)
Definition debug.hpp:31
std::array< std::tuple< uint16_t, uint16_t, std::array< uint16_t, gens.size()> >, 65536 > res
Definition image.cpp:66
Definition bmat16_impl.hpp:362
Vanilla (ie NOT optimized) implementation of a permutation, used to check for test correctness and as...
Definition perm_generic.hpp:50
uint64_t length() const
Definition perm_generic_impl.hpp:75
bool left_weak_leq(PermGeneric other) const
Definition perm_generic_impl.hpp:108
VectGeneric< Size, Expo > vect
Definition perm_generic.hpp:51
static PermGeneric elementary_transposition(uint64_t i)
Definition perm_generic_impl.hpp:38
static PermGeneric random()
Definition perm_generic_impl.hpp:55
PermGeneric inverse() const
Definition perm_generic_impl.hpp:47
uint64_t nb_cycles() const
Definition perm_generic_impl.hpp:94
vect lehmer() const
Definition perm_generic_impl.hpp:65
uint64_t nb_descents() const
Definition perm_generic_impl.hpp:85
array v
Definition vect_generic.hpp:59
size_t operator()(const HPCombi::PermGeneric< Size, Expo > &ar) const
Definition perm_generic_impl.hpp:126