HPCombi
High Performance Combinatorics in C++ using vector instructions v1.0.0
|
#include <array>
#include <cassert>
#include <cstdint>
#include <functional>
#include <iomanip>
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
#include "simde/x86/sse4.1.h"
#include "hpcombi/perm16.hpp"
Functions | |
template<typename T > | |
std::ostream & | operator<< (std::ostream &out, const std::vector< T > &v) |
PTransf16 | act1 (PTransf16 x, PTransf16 y) |
PTransf16 | mult1 (PTransf16 x, PTransf16 y) |
PTransf16 | act0 (PTransf16 x, PTransf16 y) |
std::vector< int > | reduced_word (PTransf16 x) |
PTransf16 | mult0 (PTransf16 x, PTransf16 y) |
std::vector< int > | sym_renner (PTransf16 v, int n) |
int | main () |
Variables | |
const PTransf16 | id {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} |
const PTransf16 | s0 {0, 1, 2, 3, 4, 5, 6, 8, 7, 9, 10, 11, 12, 13, 14, 15} |
const PTransf16 | s1e {0, 1, 2, 3, 4, 5, 7, 6, 9, 8, 10, 11, 12, 13, 14, 15} |
const PTransf16 | s1f {0, 1, 2, 3, 4, 5, 8, 9, 6, 7, 10, 11, 12, 13, 14, 15} |
const PTransf16 | s2 {0, 1, 2, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 13, 14, 15} |
const PTransf16 | s3 {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 11, 10, 12, 13, 14, 15} |
const PTransf16 | s4 {0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 12, 11, 13, 14, 15} |
const PTransf16 | s5 {0, 1, 3, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 12, 14, 15} |
const PTransf16 | s6 {0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15} |
const PTransf16 | s7 {1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14} |
const uint8_t | FF = 0xff |
const uint8_t | FE = 0xfe |
const PTransf16 | gene |
const PTransf16 | genf |
const vector< PTransf16 > | gens {gene, genf, s1e, s1f, s2, s3, s4, s5} |
const int | nprint = 6 |
unordered_map< PTransf16, std::pair< PTransf16, int > > | elems |
int main | ( | ) |
std::ostream & operator<< | ( | std::ostream & | out, |
const std::vector< T > & | v | ||
) |
std::vector< int > reduced_word | ( | PTransf16 | x | ) |
std::vector< int > sym_renner | ( | PTransf16 | v, |
int | n | ||
) |
const uint8_t FE = 0xfe |
const uint8_t FF = 0xff |
const PTransf16 gene |
const PTransf16 id {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} |
const int nprint = 6 |
const PTransf16 s0 {0, 1, 2, 3, 4, 5, 6, 8, 7, 9, 10, 11, 12, 13, 14, 15} |
const PTransf16 s1e {0, 1, 2, 3, 4, 5, 7, 6, 9, 8, 10, 11, 12, 13, 14, 15} |
const PTransf16 s1f {0, 1, 2, 3, 4, 5, 8, 9, 6, 7, 10, 11, 12, 13, 14, 15} |
const PTransf16 s2 {0, 1, 2, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12, 13, 14, 15} |
const PTransf16 s3 {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 11, 10, 12, 13, 14, 15} |
const PTransf16 s4 {0, 1, 2, 4, 3, 5, 6, 7, 8, 9, 10, 12, 11, 13, 14, 15} |
const PTransf16 s5 {0, 1, 3, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 12, 14, 15} |
const PTransf16 s6 {0, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 13, 15} |
const PTransf16 s7 {1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14} |