23#ifndef HPCOMBI_VECT16_HPP_ 
   24#define HPCOMBI_VECT16_HPP_ 
   28#include <initializer_list>   
   40    static constexpr size_t size() { 
return 16; }
 
   46    Vect16(std::initializer_list<uint8_t> il, uint8_t def = 0)
 
 
   48    constexpr operator epu8()
 const { 
return v; }
 
 
  110static_assert(std::is_trivial<Vect16>(), 
"Vect16 is not a trivial class !");
 
  125        return std::hash<HPCombi::epu8>{}(ar.
v);
 
 
 
declaration of HPCombi::epu8.
 
uint64_t first_non_zero(epu8 v, int bnd) noexcept
return the index of the first non zero entry or 16 if there are none Only index smaller than bound ar...
Definition epu8_impl.hpp:127
 
epu8 permuted(epu8 a, epu8 b) noexcept
Same as permuted_ref but with an optimized implementation using intrinsics.
Definition epu8.hpp:103
 
epu8 partial_sums(epu8 v) noexcept
Horizontal partial sum of a HPCombi::epu8.
Definition epu8.hpp:294
 
bool is_permutation(epu8 v, const size_t k=16) noexcept
Definition epu8_impl.hpp:531
 
int8_t less_partial(epu8 a, epu8 b, int k) noexcept
Partial lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:114
 
uint64_t last_zero(epu8 v, int bnd) noexcept
return the index of the last zero entry or 16 if there are none Only index smaller than bound are tak...
Definition epu8_impl.hpp:124
 
bool equal(epu8 a, epu8 b) noexcept
Equality of HPCombi::epu8.
Definition epu8.hpp:91
 
epu8 eval16(epu8 v) noexcept
Evaluation of a HPCombi::epu8: count how many times each int of 0..15 appears in the input.
Definition epu8.hpp:488
 
uint8_t horiz_sum(epu8 v) noexcept
Horizontal sum of a HPCombi::epu8.
Definition epu8.hpp:260
 
bool less(epu8 a, epu8 b) noexcept
Lexicographic comparison between two HPCombi::epu8.
Definition epu8_impl.hpp:110
 
constexpr TPUBuild< epu8 > Epu8
Factory object acting as a class constructor for type HPCombi::epu8.
Definition epu8.hpp:81
 
uint64_t first_zero(epu8 v, int bnd) noexcept
return the index of the first zero entry or 16 if there are none Only index smaller than bound are ta...
Definition epu8_impl.hpp:121
 
uint64_t last_non_zero(epu8 v, int bnd) noexcept
return the index of the last non zero entry or 16 if there are none Only index smaller than bound are...
Definition epu8_impl.hpp:130
 
uint64_t last_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The last difference between two HPCombi::epu8.
Definition epu8.hpp:576
 
uint8_t __attribute__((vector_size(16))) epu8
epu8 stands for Extended Packed Unsigned, grouped by 8 bits; this is the low level type chosen by Int...
Definition epu8.hpp:73
 
uint64_t first_diff(epu8 a, epu8 b, size_t bound=16) noexcept
The first difference between two HPCombi::epu8.
Definition epu8.hpp:531
 
TPUBuild< TPU >::array & as_array(TPU &v) noexcept
Cast a TPU to a c++ std::array.
Definition builder.hpp:145
 
bool not_equal(epu8 a, epu8 b) noexcept
Non equality of HPCombi::epu8.
Definition epu8.hpp:95
 
Definition bmat16_impl.hpp:362
 
std::ostream & operator<<(std::ostream &os, HPCombi::BMat16 const &bm)
Definition bmat16_impl.hpp:365
 
Vector of 16 bytes, with some optimized methods, superclass of HPCombi::Transf16.
Definition vect16.hpp:39
 
bool operator==(const Vect16 &b) const
Definition vect16.hpp:89
 
const_iterator begin() const
Definition vect16.hpp:86
 
iterator end()
Definition vect16.hpp:84
 
Vect16(std::initializer_list< uint8_t > il, uint8_t def=0)
Definition vect16.hpp:46
 
size_t last_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:59
 
size_t first_zero(size_t bound=size()) const
Definition vect16.hpp:63
 
typename array::const_iterator const_iterator
Definition vect16.hpp:78
 
const_iterator end() const
Definition vect16.hpp:87
 
int8_t less_partial(const Vect16 &b, int k) const
Definition vect16.hpp:96
 
size_t last_zero(size_t bound=size()) const
Definition vect16.hpp:66
 
uint8_t & operator[](uint64_t i)
Definition vect16.hpp:54
 
bool is_permutation() const
Definition vect16.hpp:104
 
bool operator<(const Vect16 &b) const
Definition vect16.hpp:95
 
const_iterator cbegin() const
Definition vect16.hpp:80
 
static constexpr size_t size()
Definition vect16.hpp:40
 
size_t first_non_zero(size_t bound=size()) const
Definition vect16.hpp:69
 
typename decltype(Epu8)::array array
Definition vect16.hpp:41
 
array & as_array()
Definition vect16.hpp:50
 
size_t first_diff(const Vect16 &u, size_t bound=size()) const
Definition vect16.hpp:56
 
iterator begin()
Definition vect16.hpp:83
 
bool is_permutation(size_t k) const
Definition vect16.hpp:105
 
epu8 v
Definition vect16.hpp:42
 
uint8_t value_type
Definition vect16.hpp:76
 
const uint8_t & operator[](uint64_t i) const
Definition vect16.hpp:53
 
const array & as_array() const
Definition vect16.hpp:51
 
bool operator!=(const Vect16 &b) const
Definition vect16.hpp:91
 
uint8_t sum() const
Definition vect16.hpp:100
 
size_t last_non_zero(size_t bound=size()) const
Definition vect16.hpp:72
 
Vect16 permuted(const Vect16 &b) const
Definition vect16.hpp:99
 
constexpr Vect16(epu8 x)
Definition vect16.hpp:45
 
Vect16 eval16() const
Definition vect16.hpp:102
 
Vect16 partial_sums() const
Definition vect16.hpp:101
 
const_iterator cend() const
Definition vect16.hpp:81
 
typename array::iterator iterator
Definition vect16.hpp:77
 
size_t operator()(const HPCombi::Vect16 &ar) const
Definition vect16.hpp:124