Cayley
Pseudo-Random Bits from Finite Groups
Permutation.h
Go to the documentation of this file.
1 
4 #ifndef __permutation__
5 #define __permutation__
6 
7 #include <cinttypes>
8 
9 #include "uintx_t.h"
10 
19 
20 class CPerm{
21  private:
22  uint8_t* m_nMap;
23  uint8_t m_nSize;
24 
25  public:
26  std::vector<uint8_t> m_vecCycle;
27 
28  CPerm(uint8_t n);
29  CPerm(uint8_t n, uintx_t m);
30  CPerm(uint8_t n, uint8_t init[]);
31  CPerm(const CPerm& p);
32 
33  ~CPerm();
34 
35  void Randomize(uint64_t (*rng)(void));
36  void RandomizeOdd(uint64_t (*rng)(void));
37 
38  void Randomize(uint32_t s[]);
39 
40  uint8_t GetSize() const;
41  bool IsIdentity() const;
42 
43  void printmap() const;
44  void printnum() const;
45 
46  template<class uint> uint GetNum() const;
47 
48  uint8_t operator[](uint8_t n) const;
49  CPerm& operator=(const CPerm& p);
50  const CPerm& operator*=(const CPerm& p);
51 
52  friend bool operator==(const CPerm& p0, const CPerm& p1);
53 }; //CPerm
54 
55 //binary operators
56 
57 bool operator==(const CPerm& p0, const CPerm& p1);
58 bool operator!=(const CPerm& p0, const CPerm& p1);
59 
60 #endif
bool IsIdentity() const
Identity permutation test.
uint8_t operator[](uint8_t n) const
Get nth element of map.
uint8_t m_nSize
Number of things being permuted.
Definition: Permutation.h:23
friend bool operator==(const CPerm &p0, const CPerm &p1)
Equality test.
uint GetNum() const
Get reverse lexicographic number.
void printnum() const
Print reverse lexicographic number.
void printmap() const
Print as a map.
CPerm(uint8_t n)
Constructor.
Definition: Permutation.cpp:17
uint8_t GetSize() const
Get size.
Declaration of the extensible unsigned integer class.
const CPerm & operator *=(const CPerm &p)
Permutation composition.
bool operator==(const CPerm &p0, const CPerm &p1)
Is equal to.
Permutation.
Definition: Permutation.h:20
The extensible unsigned integer class.
Definition: uintx_t.h:14
~CPerm()
Destructor.
Definition: Permutation.cpp:91
std::vector< uint8_t > m_vecCycle
Cycle notation.
Definition: Permutation.h:26
uint8_t * m_nMap
Permutation sends i to m_nMap[i].
Definition: Permutation.h:22
bool operator!=(const CPerm &p0, const CPerm &p1)
Is not equal to.
void RandomizeOdd(uint64_t(*rng)(void))
Set to random odd permutation.
void Randomize(uint64_t(*rng)(void))
Set to random permutation.
CPerm & operator=(const CPerm &p)
Assignment operator.