Merge pull request #373 from apache/avoid_warnings
Avoid warnings
diff --git a/common/include/quantiles_sorted_view_impl.hpp b/common/include/quantiles_sorted_view_impl.hpp
index 326301e..d57cd53 100755
--- a/common/include/quantiles_sorted_view_impl.hpp
+++ b/common/include/quantiles_sorted_view_impl.hpp
@@ -75,7 +75,7 @@
template<typename T, typename C, typename A>
auto quantiles_sorted_view<T, C, A>::get_quantile(double rank, bool inclusive) const -> quantile_return_type {
if (entries_.empty()) throw std::runtime_error("operation is undefined for an empty sketch");
- uint64_t weight = inclusive ? std::ceil(rank * total_weight_) : rank * total_weight_;
+ uint64_t weight = static_cast<uint64_t>(inclusive ? std::ceil(rank * total_weight_) : rank * total_weight_);
auto it = inclusive ?
std::lower_bound(entries_.begin(), entries_.end(), make_dummy_entry<T>(weight), compare_pairs_by_second())
: std::upper_bound(entries_.begin(), entries_.end(), make_dummy_entry<T>(weight), compare_pairs_by_second());
diff --git a/count/include/count_min.hpp b/count/include/count_min.hpp
index 2f487bd..b394b75 100644
--- a/count/include/count_min.hpp
+++ b/count/include/count_min.hpp
@@ -49,7 +49,7 @@
* The items inserted into the sketch can be arbitrary type, so long as they are hashable via murmurhash.
* Only update and estimate methods are added for uint64_t and string types.
*/
- count_min_sketch(uint8_t num_hashes, uint32_t num_buckets, uint64_t seed = DEFAULT_SEED, const Allocator& allocator = Allocator()) ;
+ count_min_sketch(uint8_t num_hashes, uint32_t num_buckets, uint64_t seed = DEFAULT_SEED, const Allocator& allocator = Allocator());
/**
* @return configured _num_hashes of this sketch
@@ -88,7 +88,7 @@
* sketch required in order to obtain the specified relative error.
* [1] - Section 3 ``Data Structure'', page 6.
*/
- static uint32_t suggest_num_buckets(double relative_error) ;
+ static uint32_t suggest_num_buckets(double relative_error);
/*
* @param confidence : double -- the desired confidence with which estimates should be correct.
@@ -98,7 +98,7 @@
* confidence = 1 - delta, with delta denoting the sketch failure probability in the literature.
* [1] - Section 3 ``Data Structure'', page 6.
*/
- static uint8_t suggest_num_hashes(double confidence) ;
+ static uint8_t suggest_num_hashes(double confidence);
/**
* Specific get_estimate function for uint64_t type
@@ -106,7 +106,7 @@
* @param item : uint64_t type.
* @return an estimate of the item's frequency.
*/
- W get_estimate(uint64_t item) const ;
+ W get_estimate(uint64_t item) const;
/**
* Specific get_estimate function for int64_t type
@@ -114,7 +114,7 @@
* @param item : uint64_t type.
* @return an estimate of the item's frequency.
*/
- W get_estimate(int64_t item) const ;
+ W get_estimate(int64_t item) const;
/**
* Specific get_estimate function for std::string type
@@ -132,7 +132,7 @@
* @return the estimated frequency of the item denoted f_est satisfying
* f_true - relative_error*_total_weight <= f_est <= f_true
*/
- W get_estimate(const void* item, size_t size) const ;
+ W get_estimate(const void* item, size_t size) const;
/**
* Query the sketch for the upper bound of a given item.
@@ -141,8 +141,8 @@
* f_true <= f_est + relative_error*_total_weight
*/
W get_upper_bound(const void* item, size_t size) const;
- W get_upper_bound(int64_t) const ;
- W get_upper_bound(uint64_t) const ;
+ W get_upper_bound(int64_t) const;
+ W get_upper_bound(uint64_t) const;
W get_upper_bound(const std::string& item) const;
/**
@@ -151,10 +151,10 @@
* @return the lower bound for the query result, f_est, on the true frequency, f_est of the item
* f_true - relative_error*_total_weight <= f_est
*/
- W get_lower_bound(const void* item, size_t size) const ;
- W get_lower_bound(int64_t) const ;
- W get_lower_bound(uint64_t) const ;
- W get_lower_bound(const std::string& item) const ;
+ W get_lower_bound(const void* item, size_t size) const;
+ W get_lower_bound(int64_t) const;
+ W get_lower_bound(uint64_t) const;
+ W get_lower_bound(const std::string& item) const;
/*
* Update this sketch with given data of any type.
@@ -164,7 +164,7 @@
* @param size of the data in bytes
* @return vector of uint64_t which each represent the index to which `value' must update in the sketch
*/
- void update(const void* item, size_t size, W weight) ;
+ void update(const void* item, size_t size, W weight);
/**
* Update this sketch with a given uint64_t item.
@@ -172,10 +172,10 @@
* @param weight : arithmetic type
* void function which inserts an item of type uint64_t into the sketch
*/
- void update(uint64_t item, W weight) ;
- void update(uint64_t item) ;
- void update(int64_t item, W weight) ;
- void update(int64_t item) ;
+ void update(uint64_t item, W weight);
+ void update(uint64_t item);
+ void update(int64_t item, W weight);
+ void update(int64_t item);
/**
* Update this sketch with a given string.
@@ -183,13 +183,13 @@
* @param weight : arithmetic type
* void function which inserts an item of type std::string into the sketch
*/
- void update(const std::string& item, W weight) ;
- void update(const std::string& item) ;
+ void update(const std::string& item, W weight);
+ void update(const std::string& item);
/*
* merges a separate count_min_sketch into this count_min_sketch.
*/
- void merge(const count_min_sketch &other_sketch) ;
+ void merge(const count_min_sketch &other_sketch);
/**
* Returns true if this sketch is empty.
@@ -197,7 +197,7 @@
* This can only ever happen if all items inserted to the sketch have weights that cancel each other out.
* @return empty flag
*/
- bool is_empty() const ;
+ bool is_empty() const;
/**
* @brief Returns a string describing the sketch
@@ -206,7 +206,7 @@
string<Allocator> to_string() const;
// Iterators
- using const_iterator = typename std::vector<W, Allocator>::const_iterator ;
+ using const_iterator = typename std::vector<W, Allocator>::const_iterator;
const_iterator begin() const;
const_iterator end() const;
@@ -308,12 +308,12 @@
private:
Allocator _allocator;
- uint8_t _num_hashes ;
- uint32_t _num_buckets ;
- std::vector<W, Allocator> _sketch_array ; // the array stored by the sketch
- uint64_t _seed ;
- W _total_weight ;
- std::vector<uint64_t> hash_seeds ;
+ uint8_t _num_hashes;
+ uint32_t _num_buckets;
+ std::vector<W, Allocator> _sketch_array; // the array stored by the sketch
+ uint64_t _seed;
+ W _total_weight;
+ std::vector<uint64_t> hash_seeds;
enum flags {IS_EMPTY};
static const uint8_t PREAMBLE_LONGS_SHORT = 2; // Empty -> need second byte for sketch parameters
diff --git a/count/include/count_min_impl.hpp b/count/include/count_min_impl.hpp
index ec77be6..568debc 100644
--- a/count/include/count_min_impl.hpp
+++ b/count/include/count_min_impl.hpp
@@ -38,78 +38,77 @@
_num_buckets(num_buckets),
_sketch_array((num_hashes*num_buckets < 1<<30) ? num_hashes*num_buckets : 0, 0, _allocator),
_seed(seed),
-_total_weight(0){
- if(num_buckets < 3) throw std::invalid_argument("Using fewer than 3 buckets incurs relative error greater than 1.") ;
+_total_weight(0) {
+ if (num_buckets < 3) throw std::invalid_argument("Using fewer than 3 buckets incurs relative error greater than 1.");
// This check is to ensure later compatibility with a Java implementation whose maximum size can only
// be 2^31-1. We check only against 2^30 for simplicity.
- if(num_buckets*num_hashes >= 1<<30) {
+ if (num_buckets * num_hashes >= 1 << 30) {
throw std::invalid_argument("These parameters generate a sketch that exceeds 2^30 elements."
- "Try reducing either the number of buckets or the number of hash functions.") ;
+ "Try reducing either the number of buckets or the number of hash functions.");
}
std::default_random_engine rng(_seed);
std::uniform_int_distribution<uint64_t> extra_hash_seeds(0, std::numeric_limits<uint64_t>::max());
- hash_seeds.reserve(num_hashes) ;
+ hash_seeds.reserve(num_hashes);
- for(uint64_t i=0 ; i < num_hashes ; ++i){
+ for (uint64_t i=0; i < num_hashes; ++i) {
hash_seeds.push_back(extra_hash_seeds(rng) + _seed); // Adds the global seed to all hash functions.
}
}
template<typename W, typename A>
-uint8_t count_min_sketch<W,A>::get_num_hashes() const{
- return _num_hashes ;
+uint8_t count_min_sketch<W,A>::get_num_hashes() const {
+ return _num_hashes;
}
template<typename W, typename A>
-uint32_t count_min_sketch<W,A>::get_num_buckets() const{
- return _num_buckets ;
+uint32_t count_min_sketch<W,A>::get_num_buckets() const {
+ return _num_buckets;
}
template<typename W, typename A>
uint64_t count_min_sketch<W,A>::get_seed() const {
- return _seed ;
+ return _seed;
}
template<typename W, typename A>
-double count_min_sketch<W,A>::get_relative_error() const{
- return exp(1.0) / double(_num_buckets) ;
+double count_min_sketch<W,A>::get_relative_error() const {
+ return exp(1.0) / double(_num_buckets);
}
template<typename W, typename A>
-W count_min_sketch<W,A>::get_total_weight() const{
- return _total_weight ;
+W count_min_sketch<W,A>::get_total_weight() const {
+ return _total_weight;
}
template<typename W, typename A>
-uint32_t count_min_sketch<W,A>::suggest_num_buckets(double relative_error){
+uint32_t count_min_sketch<W,A>::suggest_num_buckets(double relative_error) {
/*
* Function to help users select a number of buckets for a given error.
* TODO: Change this when we use only power of 2 buckets.
- *
*/
- if(relative_error < 0.){
- throw std::invalid_argument( "Relative error must be at least 0." );
+ if (relative_error < 0.) {
+ throw std::invalid_argument("Relative error must be at least 0.");
}
- return ceil(exp(1.0) / relative_error);
+ return static_cast<uint32_t>(ceil(exp(1.0) / relative_error));
}
template<typename W, typename A>
-uint8_t count_min_sketch<W,A>::suggest_num_hashes(double confidence){
+uint8_t count_min_sketch<W,A>::suggest_num_hashes(double confidence) {
/*
* Function to help users select a number of hashes for a given confidence
* e.g. confidence = 1 - failure probability
* failure probability == delta in the literature.
*/
- if(confidence < 0. || confidence > 1.0){
- throw std::invalid_argument( "Confidence must be between 0 and 1.0 (inclusive)." );
+ if (confidence < 0. || confidence > 1.0) {
+ throw std::invalid_argument("Confidence must be between 0 and 1.0 (inclusive).");
}
- return std::min<uint8_t>( ceil(log(1.0/(1.0 - confidence))), UINT8_MAX) ;
+ return std::min<uint8_t>(ceil(log(1.0 / (1.0 - confidence))), UINT8_MAX);
}
template<typename W, typename A>
-std::vector<uint64_t> count_min_sketch<W,A>::get_hashes(const void* item, size_t size) const{
+std::vector<uint64_t> count_min_sketch<W,A>::get_hashes(const void* item, size_t size) const {
/*
* Returns the hash locations for the input item using the original hashing
* scheme from [1].
@@ -124,20 +123,20 @@
* https://github.com/Claudenw/BloomFilter/wiki/Bloom-Filters----An-overview
* https://www.eecs.harvard.edu/~michaelm/postscripts/tr-02-05.pdf
*/
- uint64_t bucket_index ;
- std::vector<uint64_t> sketch_update_locations; //(_num_hashes) ;
- sketch_update_locations.reserve(_num_hashes) ;
+ uint64_t bucket_index;
+ std::vector<uint64_t> sketch_update_locations;
+ sketch_update_locations.reserve(_num_hashes);
- uint64_t hash_seed_index = 0 ;
- for(const auto &it : hash_seeds){
+ uint64_t hash_seed_index = 0;
+ for (const auto &it: hash_seeds) {
HashState hashes;
MurmurHash3_x64_128(item, size, it, hashes); // ? BEWARE OVERFLOW.
- uint64_t hash = hashes.h1 ;
- bucket_index = hash % _num_buckets ;
- sketch_update_locations.push_back((hash_seed_index * _num_buckets) + bucket_index) ;
- hash_seed_index += 1 ;
+ uint64_t hash = hashes.h1;
+ bucket_index = hash % _num_buckets;
+ sketch_update_locations.push_back((hash_seed_index * _num_buckets) + bucket_index);
+ hash_seed_index += 1;
}
- return sketch_update_locations ;
+ return sketch_update_locations;
}
template<typename W, typename A>
@@ -148,7 +147,7 @@
template<typename W, typename A>
W count_min_sketch<W,A>::get_estimate(const std::string& item) const {
- if (item.empty()) return 0 ; // Empty strings are not inserted into the sketch.
+ if (item.empty()) return 0; // Empty strings are not inserted into the sketch.
return get_estimate(item.c_str(), item.length());
}
@@ -157,13 +156,12 @@
/*
* Returns the estimated frequency of the item
*/
- std::vector<uint64_t> hash_locations = get_hashes(item, size) ;
- std::vector<W> estimates ;
- for (auto h: hash_locations){
- estimates.push_back(_sketch_array[h]) ;
+ std::vector<uint64_t> hash_locations = get_hashes(item, size);
+ std::vector<W> estimates;
+ for (const auto h: hash_locations) {
+ estimates.push_back(_sketch_array[h]);
}
- W result = *std::min_element(estimates.begin(), estimates.end());
- return result ;
+ return *std::min_element(estimates.begin(), estimates.end());
}
template<typename W, typename A>
@@ -204,11 +202,10 @@
* Gets the item's hash locations and then increments the sketch in those
* locations by the weight.
*/
- W magnitude = (weight >= 0) ? weight : -weight ;
- _total_weight += magnitude ;
- std::vector<uint64_t> hash_locations = get_hashes(item, size) ;
- for (auto h: hash_locations){
- _sketch_array[h] += weight ;
+ _total_weight += weight >= 0 ? weight : -weight;
+ std::vector<uint64_t> hash_locations = get_hashes(item, size);
+ for (const auto h: hash_locations) {
+ _sketch_array[h] += weight;
}
}
@@ -220,13 +217,13 @@
template<typename W, typename A>
W count_min_sketch<W,A>::get_upper_bound(const std::string& item) const {
- if (item.empty()) return 0 ; // Empty strings are not inserted into the sketch.
+ if (item.empty()) return 0; // Empty strings are not inserted into the sketch.
return get_upper_bound(item.c_str(), item.length());
}
template<typename W, typename A>
W count_min_sketch<W,A>::get_upper_bound(const void* item, size_t size) const {
- return get_estimate(item, size) + get_relative_error()*get_total_weight() ;
+ return static_cast<W>(get_estimate(item, size) + get_relative_error() * get_total_weight());
}
template<typename W, typename A>
@@ -237,41 +234,41 @@
template<typename W, typename A>
W count_min_sketch<W,A>::get_lower_bound(const std::string& item) const {
- if (item.empty()) return 0 ; // Empty strings are not inserted into the sketch.
+ if (item.empty()) return 0; // Empty strings are not inserted into the sketch.
return get_lower_bound(item.c_str(), item.length());
}
template<typename W, typename A>
W count_min_sketch<W,A>::get_lower_bound(const void* item, size_t size) const {
- return get_estimate(item, size) ;
+ return get_estimate(item, size);
}
template<typename W, typename A>
-void count_min_sketch<W,A>::merge(const count_min_sketch &other_sketch){
+void count_min_sketch<W,A>::merge(const count_min_sketch &other_sketch) {
/*
* Merges this sketch into other_sketch sketch by elementwise summing of buckets
*/
- if(this == &other_sketch){
+ if (this == &other_sketch) {
throw std::invalid_argument( "Cannot merge a sketch with itself." );
}
bool acceptable_config =
(get_num_hashes() == other_sketch.get_num_hashes()) &&
(get_num_buckets() == other_sketch.get_num_buckets()) &&
- (get_seed() == other_sketch.get_seed()) ;
- if(!acceptable_config){
+ (get_seed() == other_sketch.get_seed());
+ if (!acceptable_config) {
throw std::invalid_argument( "Incompatible sketch configuration." );
}
// Merge step - iterate over the other vector and add the weights to this sketch
- auto it = _sketch_array.begin() ; // This is a std::vector iterator.
- auto other_it = other_sketch.begin() ; //This is a const iterator over the other sketch.
- while(it != _sketch_array.end()){
- *it += *other_it ;
- ++it ;
- ++other_it ;
+ auto it = _sketch_array.begin(); // This is a std::vector iterator.
+ auto other_it = other_sketch.begin(); //This is a const iterator over the other sketch.
+ while (it != _sketch_array.end()) {
+ *it += *other_it;
+ ++it;
+ ++other_it;
}
- _total_weight += other_sketch.get_total_weight() ;
+ _total_weight += other_sketch.get_total_weight();
}
// Iterators
@@ -291,35 +288,34 @@
//const uint8_t preamble_longs = is_empty() ? PREAMBLE_LONGS_SHORT : PREAMBLE_LONGS_FULL;
const uint8_t preamble_longs = PREAMBLE_LONGS_SHORT;
const uint8_t ser_ver = SERIAL_VERSION_1;
- const uint8_t family_id = FAMILY_ID ;
+ const uint8_t family_id = FAMILY_ID;
const uint8_t flags_byte = (is_empty() ? 1 << flags::IS_EMPTY : 0);
- const uint32_t unused32 = NULL_32 ;
- write(os, preamble_longs) ;
- write(os, ser_ver) ;
- write(os, family_id) ;
- write(os, flags_byte) ;
- write(os, unused32) ;
+ const uint32_t unused32 = NULL_32;
+ write(os, preamble_longs);
+ write(os, ser_ver);
+ write(os, family_id);
+ write(os, flags_byte);
+ write(os, unused32);
// Long 1
- const uint32_t nbuckets = _num_buckets ;
- const uint8_t nhashes = _num_hashes ;
+ const uint32_t nbuckets = _num_buckets;
+ const uint8_t nhashes = _num_hashes;
const uint16_t seed_hash(compute_seed_hash(_seed));
const uint8_t unused8 = NULL_8;
- write(os, nbuckets) ;
- write(os, nhashes) ;
- write(os, seed_hash) ;
- write(os, unused8) ;
- if (is_empty()) return ; // sketch is empty, no need to write further bytes.
+ write(os, nbuckets);
+ write(os, nhashes);
+ write(os, seed_hash);
+ write(os, unused8);
+ if (is_empty()) return; // sketch is empty, no need to write further bytes.
// Long 2
- const W t_weight = _total_weight ;
- write(os, t_weight) ;
+ write(os, _total_weight);
- // Long 3 onwards: remaining bytes are consumed by writing the weight and the array values.
- auto it = _sketch_array.begin() ;
- while(it != _sketch_array.end()){
- write(os, *it) ;
- ++it ;
+ // Long 3 onwards: remaining bytes are consumed by writing the weight and the array values.
+ auto it = _sketch_array.begin();
+ while (it != _sketch_array.end()) {
+ write(os, *it);
+ ++it;
}
}
@@ -327,40 +323,40 @@
auto count_min_sketch<W,A>::deserialize(std::istream& is, uint64_t seed, const A& allocator) -> count_min_sketch {
// First 8 bytes are 4 bytes of preamble and 4 unused bytes.
- const auto preamble_longs = read<uint8_t>(is) ;
- const auto serial_version = read<uint8_t>(is) ;
- const auto family_id = read<uint8_t>(is) ;
- const auto flags_byte = read<uint8_t>(is) ;
- read<uint32_t>(is) ; // 4 unused bytes
+ const auto preamble_longs = read<uint8_t>(is);
+ const auto serial_version = read<uint8_t>(is);
+ const auto family_id = read<uint8_t>(is);
+ const auto flags_byte = read<uint8_t>(is);
+ read<uint32_t>(is); // 4 unused bytes
check_header_validity(preamble_longs, serial_version, family_id, flags_byte);
// Sketch parameters
- const auto nbuckets = read<uint32_t>(is) ;
+ const auto nbuckets = read<uint32_t>(is);
const auto nhashes = read<uint8_t>(is);
- const auto seed_hash = read<uint16_t>(is) ;
- read<uint8_t>(is) ; // 1 unused byte
+ const auto seed_hash = read<uint16_t>(is);
+ read<uint8_t>(is); // 1 unused byte
if (seed_hash != compute_seed_hash(seed)) {
throw std::invalid_argument("Incompatible seed hashes: " + std::to_string(seed_hash) + ", "
+ std::to_string(compute_seed_hash(seed)));
}
- count_min_sketch c(nhashes, nbuckets, seed, allocator) ;
+ count_min_sketch c(nhashes, nbuckets, seed, allocator);
const bool is_empty = (flags_byte & (1 << flags::IS_EMPTY)) > 0;
- if (is_empty == 1) return c ; // sketch is empty, no need to read further.
+ if (is_empty == 1) return c; // sketch is empty, no need to read further.
// Set the sketch weight and read in the sketch values
- const auto weight = read<W>(is) ;
- c._total_weight += weight ;
+ const auto weight = read<W>(is);
+ c._total_weight += weight;
read(is, c._sketch_array.data(), sizeof(W) * c._sketch_array.size());
- return c ;
+ return c;
}
template<typename W, typename A>
size_t count_min_sketch<W,A>::get_serialized_size_bytes() const {
// The header is always 2 longs, whether empty or full
- size_t preamble_longs = PREAMBLE_LONGS_SHORT;
+ const size_t preamble_longs = PREAMBLE_LONGS_SHORT;
// If the sketch is empty, we're done. Otherwise, we need the total weight
// held by the sketch as well as a data table of size (num_buckets * num_hashes)
@@ -377,33 +373,33 @@
ptr += copy_to_mem(preamble_longs, ptr);
const uint8_t ser_ver = SERIAL_VERSION_1;
ptr += copy_to_mem(ser_ver, ptr);
- const uint8_t family_id = FAMILY_ID ;
+ const uint8_t family_id = FAMILY_ID;
ptr += copy_to_mem(family_id, ptr);
const uint8_t flags_byte = (is_empty() ? 1 << flags::IS_EMPTY : 0);
ptr += copy_to_mem(flags_byte, ptr);
- const uint32_t unused32 = NULL_32 ;
- ptr += copy_to_mem(unused32, ptr) ;
+ const uint32_t unused32 = NULL_32;
+ ptr += copy_to_mem(unused32, ptr);
// Long 1
- const uint32_t nbuckets = _num_buckets ;
- const uint8_t nhashes = _num_hashes ;
+ const uint32_t nbuckets = _num_buckets;
+ const uint8_t nhashes = _num_hashes;
const uint16_t seed_hash(compute_seed_hash(_seed));
const uint8_t null_characters_8 = NULL_8;
- ptr += copy_to_mem(nbuckets, ptr) ;
- ptr += copy_to_mem(nhashes, ptr) ;
- ptr += copy_to_mem(seed_hash, ptr) ;
- ptr += copy_to_mem(null_characters_8, ptr) ;
- if (is_empty()) return bytes ; // sketch is empty, no need to write further bytes.
+ ptr += copy_to_mem(nbuckets, ptr);
+ ptr += copy_to_mem(nhashes, ptr);
+ ptr += copy_to_mem(seed_hash, ptr);
+ ptr += copy_to_mem(null_characters_8, ptr);
+ if (is_empty()) return bytes; // sketch is empty, no need to write further bytes.
// Long 2
- const W t_weight = _total_weight ;
- ptr += copy_to_mem(t_weight, ptr) ;
+ const W t_weight = _total_weight;
+ ptr += copy_to_mem(t_weight, ptr);
// Long 3 onwards: remaining bytes are consumed by writing the weight and the array values.
- auto it = _sketch_array.begin() ;
- while(it != _sketch_array.end()){
- ptr += copy_to_mem(*it, ptr) ;
- ++it ;
+ auto it = _sketch_array.begin();
+ while (it != _sketch_array.end()) {
+ ptr += copy_to_mem(*it, ptr);
+ ++it;
}
return bytes;
@@ -416,45 +412,45 @@
const char* ptr = static_cast<const char*>(bytes);
// First 8 bytes are 4 bytes of preamble and 4 unused bytes.
- uint8_t preamble_longs ;
- ptr += copy_from_mem(ptr, preamble_longs) ;
- uint8_t serial_version ;
- ptr += copy_from_mem(ptr, serial_version) ;
- uint8_t family_id ;
- ptr += copy_from_mem(ptr, family_id) ;
- uint8_t flags_byte ;
- ptr += copy_from_mem(ptr, flags_byte) ;
+ uint8_t preamble_longs;
+ ptr += copy_from_mem(ptr, preamble_longs);
+ uint8_t serial_version;
+ ptr += copy_from_mem(ptr, serial_version);
+ uint8_t family_id;
+ ptr += copy_from_mem(ptr, family_id);
+ uint8_t flags_byte;
+ ptr += copy_from_mem(ptr, flags_byte);
ptr += sizeof(uint32_t);
check_header_validity(preamble_longs, serial_version, family_id, flags_byte);
// Second 8 bytes are the sketch parameters with a final, unused byte.
- uint32_t nbuckets ;
- uint8_t nhashes ;
- uint16_t seed_hash ;
- ptr += copy_from_mem(ptr, nbuckets) ;
- ptr += copy_from_mem(ptr, nhashes) ;
- ptr += copy_from_mem(ptr, seed_hash) ;
+ uint32_t nbuckets;
+ uint8_t nhashes;
+ uint16_t seed_hash;
+ ptr += copy_from_mem(ptr, nbuckets);
+ ptr += copy_from_mem(ptr, nhashes);
+ ptr += copy_from_mem(ptr, seed_hash);
ptr += sizeof(uint8_t);
if (seed_hash != compute_seed_hash(seed)) {
throw std::invalid_argument("Incompatible seed hashes: " + std::to_string(seed_hash) + ", "
+ std::to_string(compute_seed_hash(seed)));
}
- count_min_sketch c(nhashes, nbuckets, seed, allocator) ;
+ count_min_sketch c(nhashes, nbuckets, seed, allocator);
const bool is_empty = (flags_byte & (1 << flags::IS_EMPTY)) > 0;
- if (is_empty) return c ; // sketch is empty, no need to read further.
+ if (is_empty) return c; // sketch is empty, no need to read further.
ensure_minimum_memory(size, sizeof(W) * (1 + nbuckets * nhashes));
// Long 2 is the weight.
W weight;
- ptr += copy_from_mem(ptr, weight) ;
- c._total_weight += weight ;
+ ptr += copy_from_mem(ptr, weight);
+ c._total_weight += weight;
// All remaining bytes are the sketch table entries.
- for (size_t i = 0; i<c._num_buckets*c._num_hashes ; ++i){
- ptr += copy_from_mem(ptr, c._sketch_array[i]) ;
+ for (size_t i = 0; i<c._num_buckets*c._num_hashes; ++i) {
+ ptr += copy_from_mem(ptr, c._sketch_array[i]);
}
return c;
}
@@ -468,7 +464,7 @@
string<A> count_min_sketch<W,A>::to_string() const {
// count the number of used entries in the sketch
uint64_t num_nonzero = 0;
- for (auto entry : _sketch_array) {
+ for (const auto entry: _sketch_array) {
if (entry != static_cast<W>(0.0))
++num_nonzero;
}
@@ -497,7 +493,7 @@
switch (sw) { // exhaustive list and description of all valid cases
case 138 : break; // !empty, ser_ver==1, family==18, preLongs=2;
case 139 : break; // empty, ser_ver==1, family==18, preLongs=2;
- //case 170 : break ; // !empty, ser_ver==1, family==18, preLongs=3 ;
+ //case 170 : break; // !empty, ser_ver==1, family==18, preLongs=3;
default : // all other case values are invalid
valid = false;
}
@@ -507,7 +503,7 @@
os << "Possible sketch corruption. Inconsistent state: "
<< "preamble_longs = " << static_cast<uint32_t>(preamble_longs)
<< ", empty = " << (empty ? "true" : "false")
- << ", serialization_version = " << static_cast<uint32_t>(serial_version) ;
+ << ", serialization_version = " << static_cast<uint32_t>(serial_version);
throw std::invalid_argument(os.str());
}
}
diff --git a/count/test/count_min_allocation_test.cpp b/count/test/count_min_allocation_test.cpp
index 68df534..2177b51 100644
--- a/count/test/count_min_allocation_test.cpp
+++ b/count/test/count_min_allocation_test.cpp
@@ -32,120 +32,120 @@
using count_min_sketch_test_alloc = count_min_sketch<uint64_t, test_allocator<uint64_t>>;
using alloc = test_allocator<uint64_t>;
-TEST_CASE("CountMin sketch test allocator: serialize-deserialize empty", "[cm_sketch_alloc]"){
+TEST_CASE("CountMin sketch test allocator: serialize-deserialize empty", "[cm_sketch_alloc]") {
test_allocator_total_bytes = 0;
test_allocator_net_allocations = 0;
{
- uint8_t n_hashes = 1 ;
- uint32_t n_buckets = 5 ;
+ uint8_t n_hashes = 1;
+ uint32_t n_buckets = 5;
std::stringstream s(std::ios::in | std::ios::out | std::ios::binary);
- count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0)) ;
+ count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0));
c.serialize(s);
count_min_sketch_test_alloc d = count_min_sketch_test_alloc::deserialize(s, DEFAULT_SEED, alloc(0)) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
uint64_t zero = 0;
- REQUIRE(c.get_estimate(zero) == d.get_estimate(zero)) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_estimate(zero) == d.get_estimate(zero));
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal and 0
- for(auto di: d){
- REQUIRE(di == 0) ;
+ for (auto di: d) {
+ REQUIRE(di == 0);
}
}
REQUIRE(test_allocator_total_bytes == 0);
REQUIRE(test_allocator_net_allocations == 0);
}
-TEST_CASE("CountMin sketch test allocator: serialize-deserialize non-empty", "[cm_sketch_alloc]"){
+TEST_CASE("CountMin sketch test allocator: serialize-deserialize non-empty", "[cm_sketch_alloc]") {
test_allocator_total_bytes = 0;
test_allocator_net_allocations = 0;
{
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 1024 ;
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 1024;
std::stringstream s(std::ios::in | std::ios::out | std::ios::binary);
- count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0)) ;
- for(uint64_t i=0 ; i < 10; ++i) c.update(i,10*i*i) ;
+ count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0));
+ for (uint64_t i = 0; i < 10; ++i) c.update(i, 10 * i * i);
c.serialize(s);
- count_min_sketch_test_alloc d = count_min_sketch_test_alloc::deserialize(s, DEFAULT_SEED, alloc(0)) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
- for(uint64_t i=0 ; i < 10; ++i){
- REQUIRE(c.get_estimate(i) == d.get_estimate(i)) ;
+ count_min_sketch_test_alloc d = count_min_sketch_test_alloc::deserialize(s, DEFAULT_SEED, alloc(0));
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
+ for (uint64_t i = 0; i < 10; ++i) {
+ REQUIRE(c.get_estimate(i) == d.get_estimate(i));
}
- auto c_it = c.begin() ;
- auto d_it = d.begin() ;
- while(c_it != c.end()){
- REQUIRE(*c_it == *d_it) ;
- ++c_it ;
- ++d_it ;
+ auto c_it = c.begin();
+ auto d_it = d.begin();
+ while (c_it != c.end()) {
+ REQUIRE(*c_it == *d_it);
+ ++c_it;
+ ++d_it;
}
}
REQUIRE(test_allocator_total_bytes == 0);
REQUIRE(test_allocator_net_allocations == 0);
}
-TEST_CASE("CountMin sketch test allocator: bytes serialize-deserialize empty", "[cm_sketch_alloc]"){
+TEST_CASE("CountMin sketch test allocator: bytes serialize-deserialize empty", "[cm_sketch_alloc]") {
test_allocator_total_bytes = 0;
test_allocator_net_allocations = 0;
{
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 32 ;
- count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0)) ;
- auto bytes = c.serialize() ;
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 32;
+ count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0));
+ auto bytes = c.serialize();
REQUIRE_THROWS_AS(count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED-1, alloc(0)), std::invalid_argument);
- auto d = count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED, alloc(0)) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
+ auto d = count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED, alloc(0));
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
uint64_t zero = 0;
- REQUIRE(c.get_estimate(zero) == d.get_estimate(zero)) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_estimate(zero) == d.get_estimate(zero));
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal and 0
- for(auto di: d){
- REQUIRE(di == 0) ;
+ for (auto di: d) {
+ REQUIRE(di == 0);
}
}
REQUIRE(test_allocator_total_bytes == 0);
REQUIRE(test_allocator_net_allocations == 0);
}
-TEST_CASE("CountMin sketch test allocator: bytes serialize-deserialize non-empty", "[cm_sketch_alloc]"){
+TEST_CASE("CountMin sketch test allocator: bytes serialize-deserialize non-empty", "[cm_sketch_alloc]") {
test_allocator_total_bytes = 0;
test_allocator_net_allocations = 0;
{
- uint8_t n_hashes = 5 ;
- uint32_t n_buckets = 64 ;
- count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0)) ;
- for(uint64_t i=0 ; i < 10; ++i) c.update(i,10*i*i) ;
+ uint8_t n_hashes = 5;
+ uint32_t n_buckets = 64;
+ count_min_sketch_test_alloc c(n_hashes, n_buckets, DEFAULT_SEED, alloc(0));
+ for (uint64_t i = 0; i < 10; ++i) c.update(i, 10 * i * i);
- auto bytes = c.serialize() ;
+ auto bytes = c.serialize();
REQUIRE_THROWS_AS(count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED-1, alloc(0)), std::invalid_argument);
- auto d = count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED, alloc(0)) ;
+ auto d = count_min_sketch_test_alloc::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED, alloc(0));
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal
- auto c_it = c.begin() ;
- auto d_it = d.begin() ;
- while(c_it != c.end()){
- REQUIRE(*c_it == *d_it) ;
- ++c_it ;
- ++d_it ;
+ auto c_it = c.begin();
+ auto d_it = d.begin();
+ while (c_it != c.end()) {
+ REQUIRE(*c_it == *d_it);
+ ++c_it;
+ ++d_it;
}
// Check that the estimates agree
- for(uint64_t i=0 ; i < 10; ++i){
- REQUIRE(c.get_estimate(i) == d.get_estimate(i)) ;
+ for (uint64_t i = 0; i < 10; ++i) {
+ REQUIRE(c.get_estimate(i) == d.get_estimate(i));
}
}
REQUIRE(test_allocator_total_bytes == 0);
diff --git a/count/test/count_min_test.cpp b/count/test/count_min_test.cpp
index 2c2afc1..143be1b 100644
--- a/count/test/count_min_test.cpp
+++ b/count/test/count_min_test.cpp
@@ -26,281 +26,278 @@
#include "count_min.hpp"
#include "common_defs.hpp"
-namespace datasketches{
+namespace datasketches {
TEST_CASE("CM init - throws") {
REQUIRE_THROWS_AS(count_min_sketch<uint64_t>(5, 1), std::invalid_argument);
REQUIRE_THROWS_AS(count_min_sketch<uint64_t>(4, 268435456), std::invalid_argument);
}
-TEST_CASE("CM init"){
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 5 ;
- uint64_t seed = 1234567 ;
- count_min_sketch<uint64_t> c(n_hashes, n_buckets, seed) ;
- REQUIRE(c.get_num_hashes() == n_hashes) ;
- REQUIRE(c.get_num_buckets() == n_buckets) ;
- REQUIRE(c.get_seed() == seed) ;
- REQUIRE(c.is_empty()) ;
+TEST_CASE("CM init") {
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 5;
+ uint64_t seed = 1234567;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets, seed);
+ REQUIRE(c.get_num_hashes() == n_hashes);
+ REQUIRE(c.get_num_buckets() == n_buckets);
+ REQUIRE(c.get_seed() == seed);
+ REQUIRE(c.is_empty());
- for(auto x: c){
- REQUIRE(x == 0) ;
+ for (auto x: c) {
+ REQUIRE(x == 0);
}
// Check the default seed is appropriately set.
- count_min_sketch<uint64_t> c1(n_hashes, n_buckets) ;
- REQUIRE(c1.get_seed() == DEFAULT_SEED) ;
+ count_min_sketch<uint64_t> c1(n_hashes, n_buckets);
+ REQUIRE(c1.get_seed() == DEFAULT_SEED);
}
TEST_CASE("CM parameter suggestions", "[error parameters]") {
// Bucket suggestions
- REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_buckets(-1.0), "Confidence must be between 0 and 1.0 (inclusive)." ) ;
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.2) == 14) ;
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.1) == 28) ;
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.05) == 55) ;
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.01) == 272) ;
+ REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_buckets(-1.0), "Confidence must be between 0 and 1.0 (inclusive)." );
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.2) == 14);
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.1) == 28);
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.05) == 55);
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_buckets(0.01) == 272);
// Check that the sketch get_epsilon acts inversely to suggest_num_buckets
- uint8_t n_hashes = 3 ;
- REQUIRE(count_min_sketch<uint64_t>(n_hashes, 14).get_relative_error() <= 0.2) ;
- REQUIRE(count_min_sketch<uint64_t>(n_hashes, 28).get_relative_error() <= 0.1) ;
- REQUIRE(count_min_sketch<uint64_t>(n_hashes, 55).get_relative_error() <= 0.05) ;
- REQUIRE(count_min_sketch<uint64_t>(n_hashes, 272).get_relative_error() <= 0.01) ;
+ uint8_t n_hashes = 3;
+ REQUIRE(count_min_sketch<uint64_t>(n_hashes, 14).get_relative_error() <= 0.2);
+ REQUIRE(count_min_sketch<uint64_t>(n_hashes, 28).get_relative_error() <= 0.1);
+ REQUIRE(count_min_sketch<uint64_t>(n_hashes, 55).get_relative_error() <= 0.05);
+ REQUIRE(count_min_sketch<uint64_t>(n_hashes, 272).get_relative_error() <= 0.01);
// Hash suggestions
- REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_hashes(10.0), "Confidence must be between 0 and 1.0 (inclusive)." ) ;
- REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_hashes(-1.0), "Confidence must be between 0 and 1.0 (inclusive)." ) ;
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.682689492) == 2) ; // 1 STDDEV
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.954499736) == 4) ; // 2 STDDEV
- REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.997300204) == 6) ; // 3 STDDEV
+ REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_hashes(10.0), "Confidence must be between 0 and 1.0 (inclusive)." );
+ REQUIRE_THROWS(count_min_sketch<uint64_t>::suggest_num_hashes(-1.0), "Confidence must be between 0 and 1.0 (inclusive)." );
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.682689492) == 2); // 1 STDDEV
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.954499736) == 4); // 2 STDDEV
+ REQUIRE(count_min_sketch<uint64_t>::suggest_num_hashes(0.997300204) == 6); // 3 STDDEV
}
-TEST_CASE("CM one update: uint64_t"){
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 5 ;
- uint64_t seed = 9223372036854775807 ; //1234567 ;
- uint64_t inserted_weight = 0 ;
- count_min_sketch<uint64_t> c(n_hashes, n_buckets, seed) ;
- std::string x = "x" ;
+TEST_CASE("CM one update: uint64_t") {
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 5;
+ uint64_t seed = 9223372036854775807; //1234567;
+ uint64_t inserted_weight = 0;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets, seed);
+ std::string x = "x";
- REQUIRE(c.is_empty()) ;
- REQUIRE(c.get_estimate("x") == 0) ; // No items in sketch so estimates should be zero
- c.update(x) ;
- REQUIRE(!c.is_empty()) ;
- REQUIRE(c.get_estimate(x) == 1) ;
- inserted_weight += 1 ;
+ REQUIRE(c.is_empty());
+ REQUIRE(c.get_estimate("x") == 0); // No items in sketch so estimates should be zero
+ c.update(x);
+ REQUIRE(!c.is_empty());
+ REQUIRE(c.get_estimate(x) == 1);
+ inserted_weight += 1;
- uint64_t w = 9 ;
- inserted_weight += w ;
- c.update(x, w) ;
- REQUIRE(c.get_estimate(x) == inserted_weight) ;
+ uint64_t w = 9;
+ inserted_weight += w;
+ c.update(x, w);
+ REQUIRE(c.get_estimate(x) == inserted_weight);
// Doubles are converted to uint64_t
- double w1 = 10.0 ;
- inserted_weight += w1 ;
- c.update(x, w1) ;
- REQUIRE(c.get_estimate(x) == inserted_weight) ;
- REQUIRE(c.get_total_weight() == inserted_weight) ;
- REQUIRE(c.get_estimate(x) <= c.get_upper_bound(x)) ;
- REQUIRE(c.get_estimate(x) >= c.get_lower_bound(x)) ;
+ double w1 = 10.0;
+ inserted_weight += static_cast<uint64_t>(w1);
+ c.update(x, static_cast<uint64_t>(w1));
+ REQUIRE(c.get_estimate(x) == inserted_weight);
+ REQUIRE(c.get_total_weight() == inserted_weight);
+ REQUIRE(c.get_estimate(x) <= c.get_upper_bound(x));
+ REQUIRE(c.get_estimate(x) >= c.get_lower_bound(x));
}
-TEST_CASE("CM frequency cancellation"){
- count_min_sketch<int64_t> c(1, 5) ;
- c.update("x") ;
- c.update("y", -1) ;
- REQUIRE(c.get_total_weight() == 2) ;
- REQUIRE(c.get_estimate("x") == 1) ;
- REQUIRE(c.get_estimate("y") == -1) ;
+TEST_CASE("CM frequency cancellation") {
+ count_min_sketch<int64_t> c(1, 5);
+ c.update("x");
+ c.update("y", -1);
+ REQUIRE(c.get_total_weight() == 2);
+ REQUIRE(c.get_estimate("x") == 1);
+ REQUIRE(c.get_estimate("y") == -1);
}
-
-TEST_CASE("CM frequency estimates"){
- int number_of_items = 10 ;
- std::vector<uint64_t> data(number_of_items) ;
- std::vector<uint64_t> frequencies(number_of_items) ;
+TEST_CASE("CM frequency estimates") {
+ int number_of_items = 10;
+ std::vector<uint64_t> data(number_of_items);
+ std::vector<uint64_t> frequencies(number_of_items);
// Populate data vector
- for(int i=0; i < number_of_items; i++){
+ for (int i = 0; i < number_of_items; ++i) {
data[i] = i;
- frequencies[i] = 1 << (number_of_items - i) ;
+ frequencies[i] = 1ULL << (number_of_items - i);
}
- double relative_error = 0.1 ;
- double confidence = 0.99 ;
- uint8_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error) ;
- uint32_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence) ;
+ double relative_error = 0.1;
+ double confidence = 0.99;
+ uint32_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error);
+ uint8_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence);
- count_min_sketch<uint64_t> c(n_hashes, n_buckets) ;
- for(int i=0 ; i < number_of_items ; i++) {
- uint64_t value = data[i] ;
- uint64_t freq = frequencies[i] ;
- c.update(value, freq) ;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets);
+ for (int i = 0; i < number_of_items; ++i) {
+ uint64_t value = data[i];
+ uint64_t freq = frequencies[i];
+ c.update(value, freq);
}
- for(const auto i: data){
- uint64_t est = c.get_estimate(i) ;
- uint64_t upp = c.get_upper_bound(i) ;
- uint64_t low = c.get_lower_bound(i) ;
- REQUIRE(est <= upp) ;
- REQUIRE(est >= low) ;
+ for (const auto i: data) {
+ uint64_t est = c.get_estimate(i);
+ uint64_t upp = c.get_upper_bound(i);
+ uint64_t low = c.get_lower_bound(i);
+ REQUIRE(est <= upp);
+ REQUIRE(est >= low);
}
}
-TEST_CASE("CM merge - reject", "[reject cases]"){
- double relative_error = 0.25 ;
- double confidence = 0.9 ;
- uint32_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error) ;
- uint8_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence) ;
- count_min_sketch<uint64_t> s(n_hashes, n_buckets, 9082435234709287) ;
-
+TEST_CASE("CM merge - reject", "[reject cases]") {
+ double relative_error = 0.25;
+ double confidence = 0.9;
+ uint32_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error);
+ uint8_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence);
+ count_min_sketch<uint64_t> s(n_hashes, n_buckets, 9082435234709287);
// Generate sketches that we cannot merge into ie they disagree on at least one of the config entries
- count_min_sketch<uint64_t> s1(n_hashes+1, n_buckets) ; // incorrect number of hashes
- count_min_sketch<uint64_t> s2(n_hashes, n_buckets+1) ;// incorrect number of buckets
- count_min_sketch<uint64_t> s3(n_hashes, n_buckets, 1) ;// incorrect seed
+ count_min_sketch<uint64_t> s1(n_hashes+1, n_buckets); // incorrect number of hashes
+ count_min_sketch<uint64_t> s2(n_hashes, n_buckets + 1); // incorrect number of buckets
+ count_min_sketch<uint64_t> s3(n_hashes, n_buckets, 1); // incorrect seed
std::vector<count_min_sketch<uint64_t>> sketches = {s1, s2, s3};
// Fail cases
- REQUIRE_THROWS(s.merge(s), "Cannot merge a sketch with itself." ) ;
- for(count_min_sketch<uint64_t> sk : sketches){
- REQUIRE_THROWS(s.merge(sk), "Incompatible sketch config." ) ;
+ REQUIRE_THROWS(s.merge(s), "Cannot merge a sketch with itself." );
+ for (count_min_sketch<uint64_t> sk : sketches) {
+ REQUIRE_THROWS(s.merge(sk), "Incompatible sketch config." );
}
}
-TEST_CASE("CM merge - pass", "[acceptable cases]"){
- double relative_error = 0.25 ;
- double confidence = 0.9 ;
- uint32_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error) ;
- uint8_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence) ;
- count_min_sketch<uint64_t> s(n_hashes, n_buckets) ;
- uint8_t s_hashes = s.get_num_hashes() ;
- uint32_t s_buckets = s.get_num_buckets() ;
- count_min_sketch<uint64_t> t(s_hashes, s_buckets) ;
+TEST_CASE("CM merge - pass", "[acceptable cases]") {
+ double relative_error = 0.25;
+ double confidence = 0.9;
+ uint32_t n_buckets = count_min_sketch<uint64_t>::suggest_num_buckets(relative_error);
+ uint8_t n_hashes = count_min_sketch<uint64_t>::suggest_num_hashes(confidence);
+ count_min_sketch<uint64_t> s(n_hashes, n_buckets);
+ uint8_t s_hashes = s.get_num_hashes();
+ uint32_t s_buckets = s.get_num_buckets();
+ count_min_sketch<uint64_t> t(s_hashes, s_buckets);
// Merge in an all-zeros sketch t. Should not change the total weight.
- s.merge(t) ;
- REQUIRE(s.get_total_weight() == 0 ) ;
+ s.merge(t);
+ REQUIRE(s.get_total_weight() == 0 );
std::vector<uint64_t> data = {2,3,5,7};
- for(auto d: data){
- s.update(d) ;
- t.update(d) ;
+ for (auto d: data) {
+ s.update(d);
+ t.update(d);
}
s.merge(t);
- REQUIRE(s.get_total_weight() == 2*t.get_total_weight());
+ REQUIRE(s.get_total_weight() == 2 * t.get_total_weight());
// Estimator checks.
- for (auto x : data) {
- REQUIRE(s.get_estimate(x) <= s.get_upper_bound(x)) ;
+ for (auto x: data) {
+ REQUIRE(s.get_estimate(x) <= s.get_upper_bound(x));
REQUIRE(s.get_estimate(x) <= 2); // True frequency x == 2 for all x.
}
}
-TEST_CASE("CountMin sketch: serialize-deserialize empty", "[cm_sketch]"){
- uint8_t n_hashes = 1 ;
- uint32_t n_buckets = 5 ;
+TEST_CASE("CountMin sketch: serialize-deserialize empty", "[cm_sketch]") {
+ uint8_t n_hashes = 1;
+ uint32_t n_buckets = 5;
std::stringstream s(std::ios::in | std::ios::out | std::ios::binary);
- count_min_sketch<uint64_t> c(n_hashes, n_buckets) ;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets);
c.serialize(s);
- count_min_sketch<uint64_t> d = count_min_sketch<uint64_t>::deserialize(s, DEFAULT_SEED) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
+ count_min_sketch<uint64_t> d = count_min_sketch<uint64_t>::deserialize(s, DEFAULT_SEED);
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
uint64_t zero = 0;
- REQUIRE(c.get_estimate(zero) == d.get_estimate(zero)) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_estimate(zero) == d.get_estimate(zero));
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal and 0
- for(auto di: d){
- REQUIRE(di == 0) ;
+ for (auto di: d) {
+ REQUIRE(di == 0);
}
std::ofstream os("count_min-empty.bin");
c.serialize(os);
}
-TEST_CASE("CountMin sketch: serialize-deserialize non-empty", "[cm_sketch]"){
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 1024 ;
+TEST_CASE("CountMin sketch: serialize-deserialize non-empty", "[cm_sketch]") {
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 1024;
std::stringstream s(std::ios::in | std::ios::out | std::ios::binary);
- count_min_sketch<uint64_t> c(n_hashes, n_buckets) ;
- for(uint64_t i=0 ; i < 10; ++i) c.update(i,10*i*i) ;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets);
+ for (uint64_t i = 0; i < 10; ++i) c.update(i, 10 * i * i);
c.serialize(s);
- count_min_sketch<uint64_t> d = count_min_sketch<uint64_t>::deserialize(s, DEFAULT_SEED) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
- for(uint64_t i=0 ; i < 10; ++i){
- REQUIRE(c.get_estimate(i) == d.get_estimate(i)) ;
+ count_min_sketch<uint64_t> d = count_min_sketch<uint64_t>::deserialize(s, DEFAULT_SEED);
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
+ for (uint64_t i = 0; i < 10; ++i) {
+ REQUIRE(c.get_estimate(i) == d.get_estimate(i));
}
- auto c_it = c.begin() ;
- auto d_it = d.begin() ;
- while(c_it != c.end()){
- REQUIRE(*c_it == *d_it) ;
- ++c_it ;
- ++d_it ;
+ auto c_it = c.begin();
+ auto d_it = d.begin();
+ while (c_it != c.end()) {
+ REQUIRE(*c_it == *d_it);
+ ++c_it;
+ ++d_it;
}
std::ofstream os("count_min-non-empty.bin");
c.serialize(os);
}
-TEST_CASE("CountMin sketch: bytes serialize-deserialize empty", "[cm_sketch]"){
- uint8_t n_hashes = 3 ;
- uint32_t n_buckets = 32 ;
- count_min_sketch<uint64_t> c(n_hashes, n_buckets) ;
- auto bytes = c.serialize() ;
+TEST_CASE("CountMin sketch: bytes serialize-deserialize empty", "[cm_sketch]") {
+ uint8_t n_hashes = 3;
+ uint32_t n_buckets = 32;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets);
+ auto bytes = c.serialize();
REQUIRE_THROWS_AS(count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED-1), std::invalid_argument);
- auto d = count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED) ;
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
+ auto d = count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED);
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
uint64_t zero = 0;
- REQUIRE(c.get_estimate(zero) == d.get_estimate(zero)) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_estimate(zero) == d.get_estimate(zero));
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal and 0
- for(auto di: d){
- REQUIRE(di == 0) ;
+ for (auto di: d) {
+ REQUIRE(di == 0);
}
}
-TEST_CASE("CountMin sketch: bytes serialize-deserialize non-empty", "[cm_sketch]"){
- uint8_t n_hashes = 5 ;
- uint32_t n_buckets = 64 ;
- count_min_sketch<uint64_t> c(n_hashes, n_buckets) ;
- for(uint64_t i=0 ; i < 10; ++i) c.update(i,10*i*i) ;
+TEST_CASE("CountMin sketch: bytes serialize-deserialize non-empty", "[cm_sketch]") {
+ uint8_t n_hashes = 5;
+ uint32_t n_buckets = 64;
+ count_min_sketch<uint64_t> c(n_hashes, n_buckets);
+ for(uint64_t i=0; i < 10; ++i) c.update(i,10*i*i);
- auto bytes = c.serialize() ;
+ auto bytes = c.serialize();
REQUIRE_THROWS_AS(count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED-1), std::invalid_argument);
- auto d = count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED) ;
+ auto d = count_min_sketch<uint64_t>::deserialize(bytes.data(), bytes.size(), DEFAULT_SEED);
- REQUIRE(c.get_num_hashes() == d.get_num_hashes()) ;
- REQUIRE(c.get_num_buckets() == d.get_num_buckets()) ;
- REQUIRE(c.get_seed() == d.get_seed()) ;
- REQUIRE(c.get_total_weight() == d.get_total_weight()) ;
+ REQUIRE(c.get_num_hashes() == d.get_num_hashes());
+ REQUIRE(c.get_num_buckets() == d.get_num_buckets());
+ REQUIRE(c.get_seed() == d.get_seed());
+ REQUIRE(c.get_total_weight() == d.get_total_weight());
// Check that all entries are equal
- auto c_it = c.begin() ;
- auto d_it = d.begin() ;
- while(c_it != c.end()){
- REQUIRE(*c_it == *d_it) ;
- ++c_it ;
- ++d_it ;
+ auto c_it = c.begin();
+ auto d_it = d.begin();
+ while (c_it != c.end()) {
+ REQUIRE(*c_it == *d_it);
+ ++c_it;
+ ++d_it;
}
// Check that the estimates agree
- for(uint64_t i=0 ; i < 10; ++i){
- REQUIRE(c.get_estimate(i) == d.get_estimate(i)) ;
+ for (uint64_t i = 0; i < 10; ++i) {
+ REQUIRE(c.get_estimate(i) == d.get_estimate(i));
}
}
} /* namespace datasketches */
-
diff --git a/kll/include/kll_sketch_impl.hpp b/kll/include/kll_sketch_impl.hpp
index cced0ca..156058d 100644
--- a/kll/include/kll_sketch_impl.hpp
+++ b/kll/include/kll_sketch_impl.hpp
@@ -192,7 +192,7 @@
template<typename FwdT>
void kll_sketch<T, C, A>::update(FwdT&& item) {
if (!check_update_item(item)) { return; }
- update_min_max(item);
+ update_min_max(static_cast<const T&>(item)); // min and max are always copies
const uint32_t index = internal_update();
new (&items_[index]) T(std::forward<FwdT>(item));
reset_sorted_view();
@@ -820,7 +820,7 @@
for (uint8_t level = 0; level < num_levels_; ++level) {
const auto from = items_ + levels_[level];
const auto to = items_ + levels_[level + 1]; // exclusive
- view.add(from, to, 1 << level);
+ view.add(from, to, 1ULL << level);
}
view.convert_to_cummulative();
return view;
diff --git a/quantiles/include/quantiles_sketch_impl.hpp b/quantiles/include/quantiles_sketch_impl.hpp
index 7bd7d87..2c09f84 100644
--- a/quantiles/include/quantiles_sketch_impl.hpp
+++ b/quantiles/include/quantiles_sketch_impl.hpp
@@ -140,9 +140,9 @@
max_item_(max_item.release()),
sorted_view_(nullptr)
{
- uint32_t item_count = base_buffer_.size();
+ uint32_t item_count = static_cast<uint32_t>(base_buffer_.size());
for (Level& lvl : levels_) {
- item_count += lvl.size();
+ item_count += static_cast<uint32_t>(lvl.size());
}
if (item_count != compute_retained_items(k_, n_))
throw std::logic_error("Item count does not match value computed from k, n");
diff --git a/req/include/req_sketch_impl.hpp b/req/include/req_sketch_impl.hpp
index 0096671..fb11676 100755
--- a/req/include/req_sketch_impl.hpp
+++ b/req/include/req_sketch_impl.hpp
@@ -310,7 +310,7 @@
quantiles_sorted_view<T, C, A> view(get_num_retained(), comparator_, allocator_);
for (auto& compactor: compactors_) {
- view.add(compactor.begin(), compactor.end(), 1 << compactor.get_lg_weight());
+ view.add(compactor.begin(), compactor.end(), 1ULL << compactor.get_lg_weight());
}
view.convert_to_cummulative();
diff --git a/req/test/req_sketch_test.cpp b/req/test/req_sketch_test.cpp
index 9a8daa1..9af96be 100755
--- a/req/test/req_sketch_test.cpp
+++ b/req/test/req_sketch_test.cpp
@@ -555,11 +555,11 @@
TEST_CASE("get_rank equivalence") {
req_sketch<int> sketch(12);
- const size_t n = 1000;
- for (size_t i = 0; i < n; ++i) sketch.update(i);
+ const int n = 1000;
+ for (int i = 0; i < n; ++i) sketch.update(i);
REQUIRE(sketch.get_n() == n);
auto view = sketch.get_sorted_view();
- for (size_t i = 0; i < n; ++i) {
+ for (int i = 0; i < n; ++i) {
REQUIRE(sketch.get_rank(i) == view.get_rank(i));
}
}
diff --git a/theta/include/bit_packing.hpp b/theta/include/bit_packing.hpp
index d9ad42c..8515788 100644
--- a/theta/include/bit_packing.hpp
+++ b/theta/include/bit_packing.hpp
@@ -36,11 +36,11 @@
bits -= chunk_bits;
}
while (bits >= 8) {
- *ptr++ = value >> (bits - 8);
+ *ptr++ = static_cast<uint8_t>(value >> (bits - 8));
bits -= 8;
}
if (bits > 0) {
- *ptr = value << (8 - bits);
+ *ptr = static_cast<uint8_t>(value << (8 - bits));
return bits;
}
return 0;
@@ -73,3146 +73,3146 @@
// this assumption allows to avoid masking operations
static inline void pack_bits_1(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 7;
- *ptr |= values[1] << 6;
- *ptr |= values[2] << 5;
- *ptr |= values[3] << 4;
- *ptr |= values[4] << 3;
- *ptr |= values[5] << 2;
- *ptr |= values[6] << 1;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr |= static_cast<uint8_t>(values[1] << 6);
+ *ptr |= static_cast<uint8_t>(values[2] << 5);
+ *ptr |= static_cast<uint8_t>(values[3] << 4);
+ *ptr |= static_cast<uint8_t>(values[4] << 3);
+ *ptr |= static_cast<uint8_t>(values[5] << 2);
+ *ptr |= static_cast<uint8_t>(values[6] << 1);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_2(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 6;
- *ptr |= values[1] << 4;
- *ptr |= values[2] << 2;
- *ptr++ |= values[3];
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr |= static_cast<uint8_t>(values[1] << 4);
+ *ptr |= static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3]);
- *ptr = values[4] << 6;
- *ptr |= values[5] << 4;
- *ptr |= values[6] << 2;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr |= static_cast<uint8_t>(values[5] << 4);
+ *ptr |= static_cast<uint8_t>(values[6] << 2);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_3(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 5;
- *ptr |= values[1] << 2;
- *ptr++ |= values[2] >> 1;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr |= static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr |= values[3] << 4;
- *ptr |= values[4] << 1;
- *ptr++ |= values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr |= static_cast<uint8_t>(values[3] << 4);
+ *ptr |= static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr |= values[6] << 3;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr |= static_cast<uint8_t>(values[6] << 3);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_4(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 4;
- *ptr++ |= values[1];
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1]);
- *ptr = values[2] << 4;
- *ptr++ |= values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3]);
- *ptr = values[4] << 4;
- *ptr++ |= values[5];
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5]);
- *ptr = values[6] << 4;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_5(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr |= values[2] << 1;
- *ptr++ |= values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr |= static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 1;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr |= values[5] << 2;
- *ptr++ |= values[6] >> 3;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr |= static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_6(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3]);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_7(const uint64_t* values, uint8_t* ptr) {
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr |= values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr |= static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_8(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0];
- *ptr++ = values[1];
- *ptr++ = values[2];
- *ptr++ = values[3];
- *ptr++ = values[4];
- *ptr++ = values[5];
- *ptr++ = values[6];
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[0]);
+ *ptr++ = static_cast<uint8_t>(values[1]);
+ *ptr++ = static_cast<uint8_t>(values[2]);
+ *ptr++ = static_cast<uint8_t>(values[3]);
+ *ptr++ = static_cast<uint8_t>(values[4]);
+ *ptr++ = static_cast<uint8_t>(values[5]);
+ *ptr++ = static_cast<uint8_t>(values[6]);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_9(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 3;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 5;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 7;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_10(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 6;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 8;
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 6;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_11(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 9;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 9);
- *ptr++ = values[2] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 7;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 10;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 10);
- *ptr++ = values[5] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 5;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_12(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 8;
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 8);
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 8;
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 8;
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 8);
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_13(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 10;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 10);
- *ptr++ = values[1] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 7;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 12;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] >> 4;
- *ptr++ |= values[4] >> 9;
+ *ptr = static_cast<uint8_t>(values[3] >> 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 9);
- *ptr++ = values[4] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 11;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 11);
- *ptr++ = values[6] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_14(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 12;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 12);
- *ptr++ = values[1] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 10;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 10);
- *ptr++ = values[2] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 8;
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 12;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 12);
- *ptr++ = values[5] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 10;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 10);
- *ptr++ = values[6] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_15(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 14;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 14);
- *ptr++ = values[1] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 13;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 13);
- *ptr++ = values[2] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 12;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 11;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 11);
- *ptr++ = values[4] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 10;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 10);
- *ptr++ = values[5] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 9;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 9);
- *ptr++ = values[6] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 8;
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_16(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_17(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 10;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 10);
- *ptr++ = values[1] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 11;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 11);
- *ptr++ = values[2] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 12;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 13;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 13);
- *ptr++ = values[4] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 14;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 14);
- *ptr++ = values[5] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 15;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 15);
- *ptr++ = values[6] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_18(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 12;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 12);
- *ptr++ = values[1] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 14;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 14);
- *ptr++ = values[2] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 16;
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 16);
- *ptr++ = values[3] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 12;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 12);
- *ptr++ = values[5] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 14;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 14);
- *ptr++ = values[6] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_19(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 14;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 14);
- *ptr++ = values[1] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 17;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 17);
- *ptr++ = values[2] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
- *ptr++ = values[2] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 12;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 15;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 15);
- *ptr++ |= values[4] >> 7;
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 18;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 18);
- *ptr++ = values[5] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
- *ptr++ = values[5] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 13;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 13);
- *ptr++ = values[6] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_20(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 16;
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 16);
- *ptr++ = values[1] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 16;
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 16);
- *ptr++ = values[3] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 16;
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 16);
- *ptr++ = values[5] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_21(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 13;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 18;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 18);
- *ptr++ = values[1] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
- *ptr++ = values[1] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 15;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 15);
- *ptr++ = values[2] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 20;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 20);
- *ptr++ = values[3] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 17;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 17);
- *ptr++ = values[4] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
- *ptr++ = values[4] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 14;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 14);
- *ptr++ = values[5] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 19;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 19);
- *ptr++ = values[6] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
- *ptr++ = values[6] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_22(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 20;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 20);
- *ptr++ = values[1] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
- *ptr++ = values[1] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 18;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 18);
- *ptr++ = values[2] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
- *ptr++ = values[2] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 16;
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 16);
- *ptr++ = values[3] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 20;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 20);
- *ptr++ = values[5] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
- *ptr++ = values[5] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 18;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 18);
- *ptr++ = values[6] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
- *ptr++ = values[6] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_23(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 15;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 22;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 22);
- *ptr++ = values[1] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
- *ptr++ = values[1] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 21;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 21);
- *ptr++ = values[2] >> 13;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
- *ptr++ = values[2] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 20;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 20);
- *ptr++ = values[3] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 19;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 19);
- *ptr++ = values[4] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
- *ptr++ = values[4] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 18;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 18);
- *ptr++ = values[5] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
- *ptr++ = values[5] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 17;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 17);
- *ptr++ = values[6] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
- *ptr++ = values[6] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 16;
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_24(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 16;
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 16;
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 16;
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 16;
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_25(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 17;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 17);
- *ptr++ = values[0] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 18;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 18);
- *ptr++ = values[1] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
- *ptr++ = values[1] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 19;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 19);
- *ptr++ = values[2] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 11);
- *ptr++ = values[2] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 20;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 20);
- *ptr++ = values[3] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 21;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 21);
- *ptr++ = values[4] >> 13;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 13);
- *ptr++ = values[4] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 22;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 22);
- *ptr++ = values[5] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
- *ptr++ = values[5] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 23;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 23);
- *ptr++ = values[6] >> 15;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 15);
- *ptr++ = values[6] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 24;
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
- *ptr++ = values[7] >> 16;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_26(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 18;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 18);
- *ptr++ = values[0] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 20;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 20);
- *ptr++ = values[1] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
- *ptr++ = values[1] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 22;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 22);
- *ptr++ = values[2] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 14);
- *ptr++ = values[2] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 24;
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 24);
- *ptr++ = values[3] >> 16;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
- *ptr++ = values[3] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 18;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 18);
- *ptr++ = values[4] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 20;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 20);
- *ptr++ = values[5] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
- *ptr++ = values[5] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 22;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 22);
- *ptr++ = values[6] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 14);
- *ptr++ = values[6] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 24;
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
- *ptr++ = values[7] >> 16;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_27(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 19;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 19);
- *ptr++ = values[0] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 22;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 22);
- *ptr++ = values[1] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
- *ptr++ = values[1] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 25;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 25);
- *ptr++ = values[2] >> 17;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 17);
- *ptr++ = values[2] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
- *ptr++ = values[2] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 20;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 20);
- *ptr++ = values[3] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 23;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 23);
- *ptr++ = values[4] >> 15;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 15);
- *ptr++ = values[4] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 26;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 26);
- *ptr++ = values[5] >> 18;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
- *ptr++ = values[5] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
- *ptr++ = values[5] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 21;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 21);
- *ptr++ = values[6] >> 13;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 13);
- *ptr++ = values[6] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 24;
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
- *ptr++ = values[7] >> 16;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_28(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 20;
- *ptr++ = values[0] >> 12;
- *ptr++ = values[0] >> 4;
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
- *ptr++ = values[2] >> 20;
- *ptr++ = values[2] >> 12;
- *ptr++ = values[2] >> 4;
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
- *ptr++ = values[4] >> 20;
- *ptr++ = values[4] >> 12;
- *ptr++ = values[4] >> 4;
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
- *ptr++ = values[6] >> 20;
- *ptr++ = values[6] >> 12;
- *ptr++ = values[6] >> 4;
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_29(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 21;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 21);
- *ptr++ = values[0] >> 13;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 26;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 26);
- *ptr++ = values[1] >> 18;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
- *ptr++ = values[1] >> 10;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
- *ptr++ = values[1] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 23;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 23);
- *ptr++ = values[2] >> 15;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 15);
- *ptr++ = values[2] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 28;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 28);
- *ptr++ = values[3] >> 20;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
- *ptr++ = values[3] >> 12;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
- *ptr++ = values[3] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 25;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 25);
- *ptr++ = values[4] >> 17;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 17);
- *ptr++ = values[4] >> 9;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
- *ptr++ = values[4] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 22;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 22);
- *ptr++ = values[5] >> 14;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
- *ptr++ = values[5] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 27;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 27);
- *ptr++ = values[6] >> 19;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 19);
- *ptr++ = values[6] >> 11;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
- *ptr++ = values[6] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 24;
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
- *ptr++ = values[7] >> 16;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
- *ptr++ = values[7] >> 8;
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_30(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 22;
- *ptr++ = values[0] >> 14;
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 26;
- *ptr++ = values[2] >> 18;
- *ptr++ = values[2] >> 10;
- *ptr++ = values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 22;
- *ptr++ = values[4] >> 14;
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 26;
- *ptr++ = values[6] >> 18;
- *ptr++ = values[6] >> 10;
- *ptr++ = values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_31(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 23;
- *ptr++ = values[0] >> 15;
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 29;
- *ptr++ = values[2] >> 21;
- *ptr++ = values[2] >> 13;
- *ptr++ = values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 27;
- *ptr++ = values[4] >> 19;
- *ptr++ = values[4] >> 11;
- *ptr++ = values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 25;
- *ptr++ = values[6] >> 17;
- *ptr++ = values[6] >> 9;
- *ptr++ = values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_32(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 24;
- *ptr++ = values[0] >> 16;
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 24;
- *ptr++ = values[2] >> 16;
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 24;
- *ptr++ = values[4] >> 16;
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 24;
- *ptr++ = values[6] >> 16;
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_33(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 25;
- *ptr++ = values[0] >> 17;
- *ptr++ = values[0] >> 9;
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 27;
- *ptr++ = values[2] >> 19;
- *ptr++ = values[2] >> 11;
- *ptr++ = values[2] >> 3;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 29;
- *ptr++ = values[4] >> 21;
- *ptr++ = values[4] >> 13;
- *ptr++ = values[4] >> 5;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 31;
- *ptr++ = values[6] >> 23;
- *ptr++ = values[6] >> 15;
- *ptr++ = values[6] >> 7;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_34(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 26;
- *ptr++ = values[0] >> 18;
- *ptr++ = values[0] >> 10;
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 30;
- *ptr++ = values[2] >> 22;
- *ptr++ = values[2] >> 14;
- *ptr++ = values[2] >> 6;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 26;
- *ptr++ = values[4] >> 18;
- *ptr++ = values[4] >> 10;
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 30;
- *ptr++ = values[6] >> 22;
- *ptr++ = values[6] >> 14;
- *ptr++ = values[6] >> 6;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_35(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 27;
- *ptr++ = values[0] >> 19;
- *ptr++ = values[0] >> 11;
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 33;
- *ptr++ = values[2] >> 25;
- *ptr++ = values[2] >> 17;
- *ptr++ = values[2] >> 9;
- *ptr++ = values[2] >> 1;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 31;
- *ptr++ = values[4] >> 23;
- *ptr++ = values[4] >> 15;
- *ptr++ = values[4] >> 7;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 29;
- *ptr++ = values[6] >> 21;
- *ptr++ = values[6] >> 13;
- *ptr++ = values[6] >> 5;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_36(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 28;
- *ptr++ = values[0] >> 20;
- *ptr++ = values[0] >> 12;
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 28;
- *ptr++ = values[2] >> 20;
- *ptr++ = values[2] >> 12;
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 28;
- *ptr++ = values[4] >> 20;
- *ptr++ = values[4] >> 12;
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 28;
- *ptr++ = values[6] >> 20;
- *ptr++ = values[6] >> 12;
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_37(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 29;
- *ptr++ = values[0] >> 21;
- *ptr++ = values[0] >> 13;
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 31;
- *ptr++ = values[2] >> 23;
- *ptr++ = values[2] >> 15;
- *ptr++ = values[2] >> 7;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 33;
- *ptr++ = values[4] >> 25;
- *ptr++ = values[4] >> 17;
- *ptr++ = values[4] >> 9;
- *ptr++ = values[4] >> 1;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 35;
- *ptr++ = values[6] >> 27;
- *ptr++ = values[6] >> 19;
- *ptr++ = values[6] >> 11;
- *ptr++ = values[6] >> 3;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_38(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 30;
- *ptr++ = values[0] >> 22;
- *ptr++ = values[0] >> 14;
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 34;
- *ptr++ = values[2] >> 26;
- *ptr++ = values[2] >> 18;
- *ptr++ = values[2] >> 10;
- *ptr++ = values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 30;
- *ptr++ = values[4] >> 22;
- *ptr++ = values[4] >> 14;
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 34;
- *ptr++ = values[6] >> 26;
- *ptr++ = values[6] >> 18;
- *ptr++ = values[6] >> 10;
- *ptr++ = values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_39(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 31;
- *ptr++ = values[0] >> 23;
- *ptr++ = values[0] >> 15;
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 37;
- *ptr++ = values[2] >> 29;
- *ptr++ = values[2] >> 21;
- *ptr++ = values[2] >> 13;
- *ptr++ = values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 35;
- *ptr++ = values[4] >> 27;
- *ptr++ = values[4] >> 19;
- *ptr++ = values[4] >> 11;
- *ptr++ = values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 33;
- *ptr++ = values[6] >> 25;
- *ptr++ = values[6] >> 17;
- *ptr++ = values[6] >> 9;
- *ptr++ = values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_40(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 32;
- *ptr++ = values[0] >> 24;
- *ptr++ = values[0] >> 16;
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 32;
- *ptr++ = values[2] >> 24;
- *ptr++ = values[2] >> 16;
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 32;
- *ptr++ = values[4] >> 24;
- *ptr++ = values[4] >> 16;
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 32;
- *ptr++ = values[6] >> 24;
- *ptr++ = values[6] >> 16;
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_41(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 33;
- *ptr++ = values[0] >> 25;
- *ptr++ = values[0] >> 17;
- *ptr++ = values[0] >> 9;
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 35;
- *ptr++ = values[2] >> 27;
- *ptr++ = values[2] >> 19;
- *ptr++ = values[2] >> 11;
- *ptr++ = values[2] >> 3;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 37;
- *ptr++ = values[4] >> 29;
- *ptr++ = values[4] >> 21;
- *ptr++ = values[4] >> 13;
- *ptr++ = values[4] >> 5;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 39;
- *ptr++ = values[6] >> 31;
- *ptr++ = values[6] >> 23;
- *ptr++ = values[6] >> 15;
- *ptr++ = values[6] >> 7;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_42(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 34;
- *ptr++ = values[0] >> 26;
- *ptr++ = values[0] >> 18;
- *ptr++ = values[0] >> 10;
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 38;
- *ptr++ = values[2] >> 30;
- *ptr++ = values[2] >> 22;
- *ptr++ = values[2] >> 14;
- *ptr++ = values[2] >> 6;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 34;
- *ptr++ = values[4] >> 26;
- *ptr++ = values[4] >> 18;
- *ptr++ = values[4] >> 10;
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 38;
- *ptr++ = values[6] >> 30;
- *ptr++ = values[6] >> 22;
- *ptr++ = values[6] >> 14;
- *ptr++ = values[6] >> 6;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_43(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 35;
- *ptr++ = values[0] >> 27;
- *ptr++ = values[0] >> 19;
- *ptr++ = values[0] >> 11;
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 41;
- *ptr++ = values[2] >> 33;
- *ptr++ = values[2] >> 25;
- *ptr++ = values[2] >> 17;
- *ptr++ = values[2] >> 9;
- *ptr++ = values[2] >> 1;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 39;
- *ptr++ = values[4] >> 31;
- *ptr++ = values[4] >> 23;
- *ptr++ = values[4] >> 15;
- *ptr++ = values[4] >> 7;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 37;
- *ptr++ = values[6] >> 29;
- *ptr++ = values[6] >> 21;
- *ptr++ = values[6] >> 13;
- *ptr++ = values[6] >> 5;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_44(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 36;
- *ptr++ = values[0] >> 28;
- *ptr++ = values[0] >> 20;
- *ptr++ = values[0] >> 12;
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 40;
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 36;
- *ptr++ = values[2] >> 28;
- *ptr++ = values[2] >> 20;
- *ptr++ = values[2] >> 12;
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 36;
- *ptr++ = values[4] >> 28;
- *ptr++ = values[4] >> 20;
- *ptr++ = values[4] >> 12;
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 40;
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 36;
- *ptr++ = values[6] >> 28;
- *ptr++ = values[6] >> 20;
- *ptr++ = values[6] >> 12;
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_45(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 37;
- *ptr++ = values[0] >> 29;
- *ptr++ = values[0] >> 21;
- *ptr++ = values[0] >> 13;
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 42;
- *ptr++ = values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 39;
- *ptr++ = values[2] >> 31;
- *ptr++ = values[2] >> 23;
- *ptr++ = values[2] >> 15;
- *ptr++ = values[2] >> 7;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 41;
- *ptr++ = values[4] >> 33;
- *ptr++ = values[4] >> 25;
- *ptr++ = values[4] >> 17;
- *ptr++ = values[4] >> 9;
- *ptr++ = values[4] >> 1;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 43;
- *ptr++ = values[6] >> 35;
- *ptr++ = values[6] >> 27;
- *ptr++ = values[6] >> 19;
- *ptr++ = values[6] >> 11;
- *ptr++ = values[6] >> 3;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_46(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 38;
- *ptr++ = values[0] >> 30;
- *ptr++ = values[0] >> 22;
- *ptr++ = values[0] >> 14;
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 44;
- *ptr++ = values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 42;
- *ptr++ = values[2] >> 34;
- *ptr++ = values[2] >> 26;
- *ptr++ = values[2] >> 18;
- *ptr++ = values[2] >> 10;
- *ptr++ = values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 38;
- *ptr++ = values[4] >> 30;
- *ptr++ = values[4] >> 22;
- *ptr++ = values[4] >> 14;
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 44;
- *ptr++ = values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 42;
- *ptr++ = values[6] >> 34;
- *ptr++ = values[6] >> 26;
- *ptr++ = values[6] >> 18;
- *ptr++ = values[6] >> 10;
- *ptr++ = values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_47(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 39;
- *ptr++ = values[0] >> 31;
- *ptr++ = values[0] >> 23;
- *ptr++ = values[0] >> 15;
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 46;
- *ptr++ = values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 45;
- *ptr++ = values[2] >> 37;
- *ptr++ = values[2] >> 29;
- *ptr++ = values[2] >> 21;
- *ptr++ = values[2] >> 13;
- *ptr++ = values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 43;
- *ptr++ = values[4] >> 35;
- *ptr++ = values[4] >> 27;
- *ptr++ = values[4] >> 19;
- *ptr++ = values[4] >> 11;
- *ptr++ = values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 41;
- *ptr++ = values[6] >> 33;
- *ptr++ = values[6] >> 25;
- *ptr++ = values[6] >> 17;
- *ptr++ = values[6] >> 9;
- *ptr++ = values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_48(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 40;
- *ptr++ = values[0] >> 32;
- *ptr++ = values[0] >> 24;
- *ptr++ = values[0] >> 16;
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 40;
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 40;
- *ptr++ = values[2] >> 32;
- *ptr++ = values[2] >> 24;
- *ptr++ = values[2] >> 16;
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 40;
- *ptr++ = values[4] >> 32;
- *ptr++ = values[4] >> 24;
- *ptr++ = values[4] >> 16;
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 40;
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 40;
- *ptr++ = values[6] >> 32;
- *ptr++ = values[6] >> 24;
- *ptr++ = values[6] >> 16;
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_49(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 41;
- *ptr++ = values[0] >> 33;
- *ptr++ = values[0] >> 25;
- *ptr++ = values[0] >> 17;
- *ptr++ = values[0] >> 9;
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 42;
- *ptr++ = values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 43;
- *ptr++ = values[2] >> 35;
- *ptr++ = values[2] >> 27;
- *ptr++ = values[2] >> 19;
- *ptr++ = values[2] >> 11;
- *ptr++ = values[2] >> 3;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 45;
- *ptr++ = values[4] >> 37;
- *ptr++ = values[4] >> 29;
- *ptr++ = values[4] >> 21;
- *ptr++ = values[4] >> 13;
- *ptr++ = values[4] >> 5;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 46;
- *ptr++ = values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 47;
- *ptr++ = values[6] >> 39;
- *ptr++ = values[6] >> 31;
- *ptr++ = values[6] >> 23;
- *ptr++ = values[6] >> 15;
- *ptr++ = values[6] >> 7;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_50(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 42;
- *ptr++ = values[0] >> 34;
- *ptr++ = values[0] >> 26;
- *ptr++ = values[0] >> 18;
- *ptr++ = values[0] >> 10;
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 44;
- *ptr++ = values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 46;
- *ptr++ = values[2] >> 38;
- *ptr++ = values[2] >> 30;
- *ptr++ = values[2] >> 22;
- *ptr++ = values[2] >> 14;
- *ptr++ = values[2] >> 6;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 42;
- *ptr++ = values[4] >> 34;
- *ptr++ = values[4] >> 26;
- *ptr++ = values[4] >> 18;
- *ptr++ = values[4] >> 10;
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 44;
- *ptr++ = values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 46;
- *ptr++ = values[6] >> 38;
- *ptr++ = values[6] >> 30;
- *ptr++ = values[6] >> 22;
- *ptr++ = values[6] >> 14;
- *ptr++ = values[6] >> 6;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_51(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 43;
- *ptr++ = values[0] >> 35;
- *ptr++ = values[0] >> 27;
- *ptr++ = values[0] >> 19;
- *ptr++ = values[0] >> 11;
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 46;
- *ptr++ = values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 49;
- *ptr++ = values[2] >> 41;
- *ptr++ = values[2] >> 33;
- *ptr++ = values[2] >> 25;
- *ptr++ = values[2] >> 17;
- *ptr++ = values[2] >> 9;
- *ptr++ = values[2] >> 1;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 47;
- *ptr++ = values[4] >> 39;
- *ptr++ = values[4] >> 31;
- *ptr++ = values[4] >> 23;
- *ptr++ = values[4] >> 15;
- *ptr++ = values[4] >> 7;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 50;
- *ptr++ = values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 45;
- *ptr++ = values[6] >> 37;
- *ptr++ = values[6] >> 29;
- *ptr++ = values[6] >> 21;
- *ptr++ = values[6] >> 13;
- *ptr++ = values[6] >> 5;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_52(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 44;
- *ptr++ = values[0] >> 36;
- *ptr++ = values[0] >> 28;
- *ptr++ = values[0] >> 20;
- *ptr++ = values[0] >> 12;
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 48;
- *ptr++ = values[1] >> 40;
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 44;
- *ptr++ = values[2] >> 36;
- *ptr++ = values[2] >> 28;
- *ptr++ = values[2] >> 20;
- *ptr++ = values[2] >> 12;
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 44;
- *ptr++ = values[4] >> 36;
- *ptr++ = values[4] >> 28;
- *ptr++ = values[4] >> 20;
- *ptr++ = values[4] >> 12;
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 48;
- *ptr++ = values[5] >> 40;
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 44;
- *ptr++ = values[6] >> 36;
- *ptr++ = values[6] >> 28;
- *ptr++ = values[6] >> 20;
- *ptr++ = values[6] >> 12;
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_53(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 45;
- *ptr++ = values[0] >> 37;
- *ptr++ = values[0] >> 29;
- *ptr++ = values[0] >> 21;
- *ptr++ = values[0] >> 13;
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 50;
- *ptr++ = values[1] >> 42;
- *ptr++ = values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 47;
- *ptr++ = values[2] >> 39;
- *ptr++ = values[2] >> 31;
- *ptr++ = values[2] >> 23;
- *ptr++ = values[2] >> 15;
- *ptr++ = values[2] >> 7;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 49;
- *ptr++ = values[4] >> 41;
- *ptr++ = values[4] >> 33;
- *ptr++ = values[4] >> 25;
- *ptr++ = values[4] >> 17;
- *ptr++ = values[4] >> 9;
- *ptr++ = values[4] >> 1;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 46;
- *ptr++ = values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 51;
- *ptr++ = values[6] >> 43;
- *ptr++ = values[6] >> 35;
- *ptr++ = values[6] >> 27;
- *ptr++ = values[6] >> 19;
- *ptr++ = values[6] >> 11;
- *ptr++ = values[6] >> 3;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_54(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 46;
- *ptr++ = values[0] >> 38;
- *ptr++ = values[0] >> 30;
- *ptr++ = values[0] >> 22;
- *ptr++ = values[0] >> 14;
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 52;
- *ptr++ = values[1] >> 44;
- *ptr++ = values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 50;
- *ptr++ = values[2] >> 42;
- *ptr++ = values[2] >> 34;
- *ptr++ = values[2] >> 26;
- *ptr++ = values[2] >> 18;
- *ptr++ = values[2] >> 10;
- *ptr++ = values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 46;
- *ptr++ = values[4] >> 38;
- *ptr++ = values[4] >> 30;
- *ptr++ = values[4] >> 22;
- *ptr++ = values[4] >> 14;
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 52;
- *ptr++ = values[5] >> 44;
- *ptr++ = values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 50;
- *ptr++ = values[6] >> 42;
- *ptr++ = values[6] >> 34;
- *ptr++ = values[6] >> 26;
- *ptr++ = values[6] >> 18;
- *ptr++ = values[6] >> 10;
- *ptr++ = values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_55(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 47;
- *ptr++ = values[0] >> 39;
- *ptr++ = values[0] >> 31;
- *ptr++ = values[0] >> 23;
- *ptr++ = values[0] >> 15;
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 54;
- *ptr++ = values[1] >> 46;
- *ptr++ = values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 53;
- *ptr++ = values[2] >> 45;
- *ptr++ = values[2] >> 37;
- *ptr++ = values[2] >> 29;
- *ptr++ = values[2] >> 21;
- *ptr++ = values[2] >> 13;
- *ptr++ = values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 53);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 51;
- *ptr++ = values[4] >> 43;
- *ptr++ = values[4] >> 35;
- *ptr++ = values[4] >> 27;
- *ptr++ = values[4] >> 19;
- *ptr++ = values[4] >> 11;
- *ptr++ = values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 50;
- *ptr++ = values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 49;
- *ptr++ = values[6] >> 41;
- *ptr++ = values[6] >> 33;
- *ptr++ = values[6] >> 25;
- *ptr++ = values[6] >> 17;
- *ptr++ = values[6] >> 9;
- *ptr++ = values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_56(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 48;
- *ptr++ = values[0] >> 40;
- *ptr++ = values[0] >> 32;
- *ptr++ = values[0] >> 24;
- *ptr++ = values[0] >> 16;
- *ptr++ = values[0] >> 8;
- *ptr++ = values[0];
+ *ptr++ = static_cast<uint8_t>(values[0] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[0]);
- *ptr++ = values[1] >> 48;
- *ptr++ = values[1] >> 40;
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr++ = static_cast<uint8_t>(values[1] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 48;
- *ptr++ = values[2] >> 40;
- *ptr++ = values[2] >> 32;
- *ptr++ = values[2] >> 24;
- *ptr++ = values[2] >> 16;
- *ptr++ = values[2] >> 8;
- *ptr++ = values[2];
+ *ptr++ = static_cast<uint8_t>(values[2] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[2]);
- *ptr++ = values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr++ = static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 48;
- *ptr++ = values[4] >> 40;
- *ptr++ = values[4] >> 32;
- *ptr++ = values[4] >> 24;
- *ptr++ = values[4] >> 16;
- *ptr++ = values[4] >> 8;
- *ptr++ = values[4];
+ *ptr++ = static_cast<uint8_t>(values[4] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[4]);
- *ptr++ = values[5] >> 48;
- *ptr++ = values[5] >> 40;
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr++ = static_cast<uint8_t>(values[5] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 48;
- *ptr++ = values[6] >> 40;
- *ptr++ = values[6] >> 32;
- *ptr++ = values[6] >> 24;
- *ptr++ = values[6] >> 16;
- *ptr++ = values[6] >> 8;
- *ptr++ = values[6];
+ *ptr++ = static_cast<uint8_t>(values[6] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[6]);
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_57(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 49;
- *ptr++ = values[0] >> 41;
- *ptr++ = values[0] >> 33;
- *ptr++ = values[0] >> 25;
- *ptr++ = values[0] >> 17;
- *ptr++ = values[0] >> 9;
- *ptr++ = values[0] >> 1;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 1);
- *ptr = values[0] << 7;
- *ptr++ |= values[1] >> 50;
- *ptr++ = values[1] >> 42;
- *ptr++ = values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 51;
- *ptr++ = values[2] >> 43;
- *ptr++ = values[2] >> 35;
- *ptr++ = values[2] >> 27;
- *ptr++ = values[2] >> 19;
- *ptr++ = values[2] >> 11;
- *ptr++ = values[2] >> 3;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 3);
- *ptr = values[2] << 5;
- *ptr++ |= values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 53;
- *ptr++ = values[4] >> 45;
- *ptr++ = values[4] >> 37;
- *ptr++ = values[4] >> 29;
- *ptr++ = values[4] >> 21;
- *ptr++ = values[4] >> 13;
- *ptr++ = values[4] >> 5;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 53);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 5);
- *ptr = values[4] << 3;
- *ptr++ |= values[5] >> 54;
- *ptr++ = values[5] >> 46;
- *ptr++ = values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 55;
- *ptr++ = values[6] >> 47;
- *ptr++ = values[6] >> 39;
- *ptr++ = values[6] >> 31;
- *ptr++ = values[6] >> 23;
- *ptr++ = values[6] >> 15;
- *ptr++ = values[6] >> 7;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 55);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 7);
- *ptr = values[6] << 1;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_58(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 50;
- *ptr++ = values[0] >> 42;
- *ptr++ = values[0] >> 34;
- *ptr++ = values[0] >> 26;
- *ptr++ = values[0] >> 18;
- *ptr++ = values[0] >> 10;
- *ptr++ = values[0] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 2);
- *ptr = values[0] << 6;
- *ptr++ |= values[1] >> 52;
- *ptr++ = values[1] >> 44;
- *ptr++ = values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 54;
- *ptr++ = values[2] >> 46;
- *ptr++ = values[2] >> 38;
- *ptr++ = values[2] >> 30;
- *ptr++ = values[2] >> 22;
- *ptr++ = values[2] >> 14;
- *ptr++ = values[2] >> 6;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 6);
- *ptr = values[2] << 2;
- *ptr++ |= values[3] >> 56;
- *ptr++ = values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 50;
- *ptr++ = values[4] >> 42;
- *ptr++ = values[4] >> 34;
- *ptr++ = values[4] >> 26;
- *ptr++ = values[4] >> 18;
- *ptr++ = values[4] >> 10;
- *ptr++ = values[4] >> 2;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 2);
- *ptr = values[4] << 6;
- *ptr++ |= values[5] >> 52;
- *ptr++ = values[5] >> 44;
- *ptr++ = values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 54;
- *ptr++ = values[6] >> 46;
- *ptr++ = values[6] >> 38;
- *ptr++ = values[6] >> 30;
- *ptr++ = values[6] >> 22;
- *ptr++ = values[6] >> 14;
- *ptr++ = values[6] >> 6;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 6);
- *ptr = values[6] << 2;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_59(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 51;
- *ptr++ = values[0] >> 43;
- *ptr++ = values[0] >> 35;
- *ptr++ = values[0] >> 27;
- *ptr++ = values[0] >> 19;
- *ptr++ = values[0] >> 11;
- *ptr++ = values[0] >> 3;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 3);
- *ptr = values[0] << 5;
- *ptr++ |= values[1] >> 54;
- *ptr++ = values[1] >> 46;
- *ptr++ = values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 57;
- *ptr++ = values[2] >> 49;
- *ptr++ = values[2] >> 41;
- *ptr++ = values[2] >> 33;
- *ptr++ = values[2] >> 25;
- *ptr++ = values[2] >> 17;
- *ptr++ = values[2] >> 9;
- *ptr++ = values[2] >> 1;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 57);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 1);
- *ptr = values[2] << 7;
- *ptr++ |= values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 55;
- *ptr++ = values[4] >> 47;
- *ptr++ = values[4] >> 39;
- *ptr++ = values[4] >> 31;
- *ptr++ = values[4] >> 23;
- *ptr++ = values[4] >> 15;
- *ptr++ = values[4] >> 7;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 55);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 7);
- *ptr = values[4] << 1;
- *ptr++ |= values[5] >> 58;
- *ptr++ = values[5] >> 50;
- *ptr++ = values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 58);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 53;
- *ptr++ = values[6] >> 45;
- *ptr++ = values[6] >> 37;
- *ptr++ = values[6] >> 29;
- *ptr++ = values[6] >> 21;
- *ptr++ = values[6] >> 13;
- *ptr++ = values[6] >> 5;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 53);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 5);
- *ptr = values[6] << 3;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_60(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 52;
- *ptr++ = values[0] >> 44;
- *ptr++ = values[0] >> 36;
- *ptr++ = values[0] >> 28;
- *ptr++ = values[0] >> 20;
- *ptr++ = values[0] >> 12;
- *ptr++ = values[0] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 4);
- *ptr = values[0] << 4;
- *ptr++ |= values[1] >> 56;
- *ptr++ = values[1] >> 48;
- *ptr++ = values[1] >> 40;
- *ptr++ = values[1] >> 32;
- *ptr++ = values[1] >> 24;
- *ptr++ = values[1] >> 16;
- *ptr++ = values[1] >> 8;
- *ptr++ = values[1];
+ *ptr = static_cast<uint8_t>(values[0] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[1]);
- *ptr++ = values[2] >> 52;
- *ptr++ = values[2] >> 44;
- *ptr++ = values[2] >> 36;
- *ptr++ = values[2] >> 28;
- *ptr++ = values[2] >> 20;
- *ptr++ = values[2] >> 12;
- *ptr++ = values[2] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[2] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 4);
- *ptr = values[2] << 4;
- *ptr++ |= values[3] >> 56;
- *ptr++ = values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 52;
- *ptr++ = values[4] >> 44;
- *ptr++ = values[4] >> 36;
- *ptr++ = values[4] >> 28;
- *ptr++ = values[4] >> 20;
- *ptr++ = values[4] >> 12;
- *ptr++ = values[4] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 4);
- *ptr = values[4] << 4;
- *ptr++ |= values[5] >> 56;
- *ptr++ = values[5] >> 48;
- *ptr++ = values[5] >> 40;
- *ptr++ = values[5] >> 32;
- *ptr++ = values[5] >> 24;
- *ptr++ = values[5] >> 16;
- *ptr++ = values[5] >> 8;
- *ptr++ = values[5];
+ *ptr = static_cast<uint8_t>(values[4] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[5]);
- *ptr++ = values[6] >> 52;
- *ptr++ = values[6] >> 44;
- *ptr++ = values[6] >> 36;
- *ptr++ = values[6] >> 28;
- *ptr++ = values[6] >> 20;
- *ptr++ = values[6] >> 12;
- *ptr++ = values[6] >> 4;
+ *ptr++ = static_cast<uint8_t>(values[6] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 4);
- *ptr = values[6] << 4;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_61(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 53;
- *ptr++ = values[0] >> 45;
- *ptr++ = values[0] >> 37;
- *ptr++ = values[0] >> 29;
- *ptr++ = values[0] >> 21;
- *ptr++ = values[0] >> 13;
- *ptr++ = values[0] >> 5;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 53);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 5);
- *ptr = values[0] << 3;
- *ptr++ |= values[1] >> 58;
- *ptr++ = values[1] >> 50;
- *ptr++ = values[1] >> 42;
- *ptr++ = values[1] >> 34;
- *ptr++ = values[1] >> 26;
- *ptr++ = values[1] >> 18;
- *ptr++ = values[1] >> 10;
- *ptr++ = values[1] >> 2;
+ *ptr = static_cast<uint8_t>(values[0] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 58);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 2);
- *ptr = values[1] << 6;
- *ptr++ |= values[2] >> 55;
- *ptr++ = values[2] >> 47;
- *ptr++ = values[2] >> 39;
- *ptr++ = values[2] >> 31;
- *ptr++ = values[2] >> 23;
- *ptr++ = values[2] >> 15;
- *ptr++ = values[2] >> 7;
+ *ptr = static_cast<uint8_t>(values[1] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 55);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 7);
- *ptr = values[2] << 1;
- *ptr++ |= values[3] >> 60;
- *ptr++ = values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 60);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 57;
- *ptr++ = values[4] >> 49;
- *ptr++ = values[4] >> 41;
- *ptr++ = values[4] >> 33;
- *ptr++ = values[4] >> 25;
- *ptr++ = values[4] >> 17;
- *ptr++ = values[4] >> 9;
- *ptr++ = values[4] >> 1;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 57);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 1);
- *ptr = values[4] << 7;
- *ptr++ |= values[5] >> 54;
- *ptr++ = values[5] >> 46;
- *ptr++ = values[5] >> 38;
- *ptr++ = values[5] >> 30;
- *ptr++ = values[5] >> 22;
- *ptr++ = values[5] >> 14;
- *ptr++ = values[5] >> 6;
+ *ptr = static_cast<uint8_t>(values[4] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 6);
- *ptr = values[5] << 2;
- *ptr++ |= values[6] >> 59;
- *ptr++ = values[6] >> 51;
- *ptr++ = values[6] >> 43;
- *ptr++ = values[6] >> 35;
- *ptr++ = values[6] >> 27;
- *ptr++ = values[6] >> 19;
- *ptr++ = values[6] >> 11;
- *ptr++ = values[6] >> 3;
+ *ptr = static_cast<uint8_t>(values[5] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 59);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 3);
- *ptr = values[6] << 5;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_62(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 54;
- *ptr++ = values[0] >> 46;
- *ptr++ = values[0] >> 38;
- *ptr++ = values[0] >> 30;
- *ptr++ = values[0] >> 22;
- *ptr++ = values[0] >> 14;
- *ptr++ = values[0] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 6);
- *ptr = values[0] << 2;
- *ptr++ |= values[1] >> 60;
- *ptr++ = values[1] >> 52;
- *ptr++ = values[1] >> 44;
- *ptr++ = values[1] >> 36;
- *ptr++ = values[1] >> 28;
- *ptr++ = values[1] >> 20;
- *ptr++ = values[1] >> 12;
- *ptr++ = values[1] >> 4;
+ *ptr = static_cast<uint8_t>(values[0] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 60);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 4);
- *ptr = values[1] << 4;
- *ptr++ |= values[2] >> 58;
- *ptr++ = values[2] >> 50;
- *ptr++ = values[2] >> 42;
- *ptr++ = values[2] >> 34;
- *ptr++ = values[2] >> 26;
- *ptr++ = values[2] >> 18;
- *ptr++ = values[2] >> 10;
- *ptr++ = values[2] >> 2;
+ *ptr = static_cast<uint8_t>(values[1] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 58);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 2);
- *ptr = values[2] << 6;
- *ptr++ |= values[3] >> 56;
- *ptr++ = values[3] >> 48;
- *ptr++ = values[3] >> 40;
- *ptr++ = values[3] >> 32;
- *ptr++ = values[3] >> 24;
- *ptr++ = values[3] >> 16;
- *ptr++ = values[3] >> 8;
- *ptr++ = values[3];
+ *ptr = static_cast<uint8_t>(values[2] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 8);
+ *ptr++ = static_cast<uint8_t>(values[3]);
- *ptr++ = values[4] >> 54;
- *ptr++ = values[4] >> 46;
- *ptr++ = values[4] >> 38;
- *ptr++ = values[4] >> 30;
- *ptr++ = values[4] >> 22;
- *ptr++ = values[4] >> 14;
- *ptr++ = values[4] >> 6;
+ *ptr++ = static_cast<uint8_t>(values[4] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 6);
- *ptr = values[4] << 2;
- *ptr++ |= values[5] >> 60;
- *ptr++ = values[5] >> 52;
- *ptr++ = values[5] >> 44;
- *ptr++ = values[5] >> 36;
- *ptr++ = values[5] >> 28;
- *ptr++ = values[5] >> 20;
- *ptr++ = values[5] >> 12;
- *ptr++ = values[5] >> 4;
+ *ptr = static_cast<uint8_t>(values[4] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 60);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 4);
- *ptr = values[5] << 4;
- *ptr++ |= values[6] >> 58;
- *ptr++ = values[6] >> 50;
- *ptr++ = values[6] >> 42;
- *ptr++ = values[6] >> 34;
- *ptr++ = values[6] >> 26;
- *ptr++ = values[6] >> 18;
- *ptr++ = values[6] >> 10;
- *ptr++ = values[6] >> 2;
+ *ptr = static_cast<uint8_t>(values[5] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 58);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 2);
- *ptr = values[6] << 6;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void pack_bits_63(const uint64_t* values, uint8_t* ptr) {
- *ptr++ = values[0] >> 55;
- *ptr++ = values[0] >> 47;
- *ptr++ = values[0] >> 39;
- *ptr++ = values[0] >> 31;
- *ptr++ = values[0] >> 23;
- *ptr++ = values[0] >> 15;
- *ptr++ = values[0] >> 7;
+ *ptr++ = static_cast<uint8_t>(values[0] >> 55);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 47);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 39);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 31);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 23);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 15);
+ *ptr++ = static_cast<uint8_t>(values[0] >> 7);
- *ptr = values[0] << 1;
- *ptr++ |= values[1] >> 62;
- *ptr++ = values[1] >> 54;
- *ptr++ = values[1] >> 46;
- *ptr++ = values[1] >> 38;
- *ptr++ = values[1] >> 30;
- *ptr++ = values[1] >> 22;
- *ptr++ = values[1] >> 14;
- *ptr++ = values[1] >> 6;
+ *ptr = static_cast<uint8_t>(values[0] << 1);
+ *ptr++ |= static_cast<uint8_t>(values[1] >> 62);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 54);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 46);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 38);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 30);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 22);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 14);
+ *ptr++ = static_cast<uint8_t>(values[1] >> 6);
- *ptr = values[1] << 2;
- *ptr++ |= values[2] >> 61;
- *ptr++ = values[2] >> 53;
- *ptr++ = values[2] >> 45;
- *ptr++ = values[2] >> 37;
- *ptr++ = values[2] >> 29;
- *ptr++ = values[2] >> 21;
- *ptr++ = values[2] >> 13;
- *ptr++ = values[2] >> 5;
+ *ptr = static_cast<uint8_t>(values[1] << 2);
+ *ptr++ |= static_cast<uint8_t>(values[2] >> 61);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 53);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 45);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 37);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 29);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 21);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 13);
+ *ptr++ = static_cast<uint8_t>(values[2] >> 5);
- *ptr = values[2] << 3;
- *ptr++ |= values[3] >> 60;
- *ptr++ = values[3] >> 52;
- *ptr++ = values[3] >> 44;
- *ptr++ = values[3] >> 36;
- *ptr++ = values[3] >> 28;
- *ptr++ = values[3] >> 20;
- *ptr++ = values[3] >> 12;
- *ptr++ = values[3] >> 4;
+ *ptr = static_cast<uint8_t>(values[2] << 3);
+ *ptr++ |= static_cast<uint8_t>(values[3] >> 60);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 52);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 44);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 36);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 28);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 20);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 12);
+ *ptr++ = static_cast<uint8_t>(values[3] >> 4);
- *ptr = values[3] << 4;
- *ptr++ |= values[4] >> 59;
- *ptr++ = values[4] >> 51;
- *ptr++ = values[4] >> 43;
- *ptr++ = values[4] >> 35;
- *ptr++ = values[4] >> 27;
- *ptr++ = values[4] >> 19;
- *ptr++ = values[4] >> 11;
- *ptr++ = values[4] >> 3;
+ *ptr = static_cast<uint8_t>(values[3] << 4);
+ *ptr++ |= static_cast<uint8_t>(values[4] >> 59);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 51);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 43);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 35);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 27);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 19);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 11);
+ *ptr++ = static_cast<uint8_t>(values[4] >> 3);
- *ptr = values[4] << 5;
- *ptr++ |= values[5] >> 58;
- *ptr++ = values[5] >> 50;
- *ptr++ = values[5] >> 42;
- *ptr++ = values[5] >> 34;
- *ptr++ = values[5] >> 26;
- *ptr++ = values[5] >> 18;
- *ptr++ = values[5] >> 10;
- *ptr++ = values[5] >> 2;
+ *ptr = static_cast<uint8_t>(values[4] << 5);
+ *ptr++ |= static_cast<uint8_t>(values[5] >> 58);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 50);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 42);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 34);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 26);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 18);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 10);
+ *ptr++ = static_cast<uint8_t>(values[5] >> 2);
- *ptr = values[5] << 6;
- *ptr++ |= values[6] >> 57;
- *ptr++ = values[6] >> 49;
- *ptr++ = values[6] >> 41;
- *ptr++ = values[6] >> 33;
- *ptr++ = values[6] >> 25;
- *ptr++ = values[6] >> 17;
- *ptr++ = values[6] >> 9;
- *ptr++ = values[6] >> 1;
+ *ptr = static_cast<uint8_t>(values[5] << 6);
+ *ptr++ |= static_cast<uint8_t>(values[6] >> 57);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 49);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 41);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 33);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 25);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 17);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 9);
+ *ptr++ = static_cast<uint8_t>(values[6] >> 1);
- *ptr = values[6] << 7;
- *ptr++ |= values[7] >> 56;
- *ptr++ = values[7] >> 48;
- *ptr++ = values[7] >> 40;
- *ptr++ = values[7] >> 32;
- *ptr++ = values[7] >> 24;
- *ptr++ = values[7] >> 16;
- *ptr++ = values[7] >> 8;
- *ptr = values[7];
+ *ptr = static_cast<uint8_t>(values[6] << 7);
+ *ptr++ |= static_cast<uint8_t>(values[7] >> 56);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 48);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 40);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 32);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 24);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 16);
+ *ptr++ = static_cast<uint8_t>(values[7] >> 8);
+ *ptr = static_cast<uint8_t>(values[7]);
}
static inline void unpack_bits_1(uint64_t* values, const uint8_t* ptr) {
diff --git a/theta/include/theta_helpers.hpp b/theta/include/theta_helpers.hpp
index 0b98cab..cbdebb4 100644
--- a/theta/include/theta_helpers.hpp
+++ b/theta/include/theta_helpers.hpp
@@ -57,7 +57,7 @@
// consistent way of initializing theta from p
// avoids multiplication if p == 1 since it might not yield MAX_THETA exactly
static uint64_t starting_theta_from_p(float p) {
- if (p < 1) return static_cast<float>(theta_constants::MAX_THETA) * p;
+ if (p < 1) return static_cast<uint64_t>(theta_constants::MAX_THETA * p);
return theta_constants::MAX_THETA;
}
diff --git a/theta/include/theta_sketch_impl.hpp b/theta/include/theta_sketch_impl.hpp
index 06b3139..e5e5050 100644
--- a/theta/include/theta_sketch_impl.hpp
+++ b/theta/include/theta_sketch_impl.hpp
@@ -357,7 +357,7 @@
write(os, flags_byte);
write(os, get_seed_hash());
if (preamble_longs > 1) {
- write<uint32_t>(os, entries_.size());
+ write(os, static_cast<uint32_t>(entries_.size()));
write<uint32_t>(os, 0); // unused
}
if (this->is_estimation_mode()) write(os, this->theta_);
@@ -385,7 +385,7 @@
*ptr++ = flags_byte;
ptr += copy_to_mem(get_seed_hash(), ptr);
if (preamble_longs > 1) {
- ptr += copy_to_mem<uint32_t>(entries_.size(), ptr);
+ ptr += copy_to_mem(static_cast<uint32_t>(entries_.size()), ptr);
ptr += sizeof(uint32_t); // unused
}
if (this->is_estimation_mode()) ptr += copy_to_mem(theta_, ptr);
@@ -432,7 +432,7 @@
const uint8_t entry_bits = 64 - compute_min_leading_zeros();
// store num_entries as whole bytes since whole-byte blocks will follow (most probably)
- const uint8_t num_entries_bytes = whole_bytes_to_hold_bits<uint8_t>(32 - count_leading_zeros_in_u32(entries_.size()));
+ const uint8_t num_entries_bytes = whole_bytes_to_hold_bits<uint8_t>(32 - count_leading_zeros_in_u32(static_cast<uint32_t>(entries_.size())));
write(os, preamble_longs);
write(os, COMPRESSED_SERIAL_VERSION);
@@ -447,7 +447,7 @@
write(os, flags_byte);
write(os, get_seed_hash());
if (this->is_estimation_mode()) write(os, this->theta_);
- uint32_t num_entries = entries_.size();
+ uint32_t num_entries = static_cast<uint32_t>(entries_.size());
for (unsigned i = 0; i < num_entries_bytes; ++i) {
write<uint8_t>(os, num_entries & 0xff);
num_entries >>= 8;
@@ -488,7 +488,7 @@
const size_t compressed_bits = entry_bits * entries_.size();
// store num_entries as whole bytes since whole-byte blocks will follow (most probably)
- const uint8_t num_entries_bytes = whole_bytes_to_hold_bits<uint8_t>(32 - count_leading_zeros_in_u32(entries_.size()));
+ const uint8_t num_entries_bytes = whole_bytes_to_hold_bits<uint8_t>(32 - count_leading_zeros_in_u32(static_cast<uint32_t>(entries_.size())));
const size_t size = header_size_bytes + sizeof(uint64_t) * preamble_longs + num_entries_bytes
+ whole_bytes_to_hold_bits(compressed_bits);
@@ -510,7 +510,7 @@
if (this->is_estimation_mode()) {
ptr += copy_to_mem(theta_, ptr);
}
- uint32_t num_entries = entries_.size();
+ uint32_t num_entries = static_cast<uint32_t>(entries_.size());
for (unsigned i = 0; i < num_entries_bytes; ++i) {
*ptr++ = num_entries & 0xff;
num_entries >>= 8;
diff --git a/tuple/test/engagement_test.cpp b/tuple/test/engagement_test.cpp
index 05d5cfc..e91fef5 100644
--- a/tuple/test/engagement_test.cpp
+++ b/tuple/test/engagement_test.cpp
@@ -42,11 +42,11 @@
public:
always_one_policy(): initial_value(1) {}
T create() const { return 1; }
- void update(T&, const T&) const { }
+ void update(T&, const T&) const {}
private:
T initial_value;
};
-using always_one_tuple_sketch = datasketches::update_tuple_sketch<int, int, always_one_policy<int>> ;
+using always_one_tuple_sketch = datasketches::update_tuple_sketch<int, int, always_one_policy<int>>;
template<typename T>
class update_sum_value_policy {
@@ -66,20 +66,20 @@
}
};
-using sum_union_tuple_sketch = datasketches::tuple_union<int, union_sum_value_policy<int>> ;
+using sum_union_tuple_sketch = datasketches::tuple_union<int, union_sum_value_policy<int>>;
-class EngagementTest{
+class EngagementTest {
public:
- int num_std_dev = 2 ;
- void test_always_one_update(){
+ uint8_t num_std_dev = 2;
+ void test_always_one_update() {
/*
* Tests that updates into an update_tuple_sketch sketch only keeps a 1 in the column for stored values.
*/
- int lgK = 8 ;
- std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketch_array ;
+ uint8_t lgK = 8;
+ std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketch_array;
- auto always_one_sketch = always_one_tuple_sketch::builder(always_one_policy<int>()).set_lg_k(lgK).build() ;
+ auto always_one_sketch = always_one_tuple_sketch::builder(always_one_policy<int>()).set_lg_k(lgK).build();
always_one_sketch.update(1, 1);
always_one_sketch.update(1, 2);
@@ -97,12 +97,12 @@
REQUIRE(sum == 3); // we only keep 1 for every stored key.
}
- void test_sum_update_policy(){
+ void test_sum_update_policy() {
/*
* Tests that updates into an sum_update_tuple_sketch sum the stored values on updates.
*/
- int lgK = 8 ;
- auto sum_sketch = sum_update_tuple_sketch::builder().set_lg_k(lgK).build() ;
+ uint8_t lgK = 8;
+ auto sum_sketch = sum_update_tuple_sketch::builder().set_lg_k(lgK).build();
sum_sketch.update(1, 1);
sum_sketch.update(1, 2);
@@ -124,8 +124,8 @@
* Tests that updates into two sketches of sum_update_tuple_sketch flavour, which have been unioned,
* cause the stored values of two of the same keys to be summed.
*/
- auto sketch1 = sum_update_tuple_sketch::builder().build() ;
- auto sketch2 = sum_update_tuple_sketch::builder().build() ;
+ auto sketch1 = sum_update_tuple_sketch::builder().build();
+ auto sketch2 = sum_update_tuple_sketch::builder().build();
sketch1.update(1, 1);
sketch1.update(2, 1);
@@ -135,10 +135,10 @@
sketch2.update(2, 1);
sketch2.update(3, 7);
- auto union_sketch = sum_union_tuple_sketch::builder().build() ;
- union_sketch.update(sketch1) ;
- union_sketch.update(sketch2) ;
- auto union_result = union_sketch.get_result() ;
+ auto union_sketch = sum_union_tuple_sketch::builder().build();
+ union_sketch.update(sketch1);
+ union_sketch.update(sketch2);
+ auto union_result = union_sketch.get_result();
int num_retained = 0;
int sum = 0;
@@ -150,95 +150,95 @@
REQUIRE(sum == 15); // 1:(1+2) + 2:(1+1) + 3:(3+7) = 15
}
- void compute_engagement_histogram(){
+ void compute_engagement_histogram() {
/*
* Returns the estimated histogram from the synthetic data.
* On inspection one can verify this agrees with the
* https://github.com/apache/datasketches-java/blob/master/src/test/java/org/apache/datasketches/tuple/aninteger/EngagementTest.java
*/
- int lgK = 8 ;
- const int days = 30 ;
- int v = 0 ;
+ uint8_t lgK = 8;
+ const int days = 30;
+ int v = 0;
std::set<int> set_array[days];
- std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketch_array ;
+ std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketch_array;
- for(int i=0; i<days ; i++){
- auto builder = always_one_tuple_sketch::builder(always_one_policy<int>()) ;
- builder.set_lg_k(lgK) ;
- auto sketch = builder.build() ;
+ for (int i = 0; i < days; ++i) {
+ auto builder = always_one_tuple_sketch::builder(always_one_policy<int>());
+ builder.set_lg_k(lgK);
+ auto sketch = builder.build();
sketch_array.push_back(sketch);
}
- REQUIRE(sketch_array.size() == days) ;
+ REQUIRE(sketch_array.size() == days);
- for(int i=0; i<=days; i++){
- int32_t num_ids = get_num_ids(days, i) ;
- int32_t num_days = get_num_days(days, i) ;
+ for (int i = 0; i <= days; ++i) {
+ int32_t num_ids = get_num_ids(days, i);
+ int32_t num_days = get_num_days(days, i);
- int my_v = v++ ;
- for(int d=0 ; d<num_days; d++){
- for(int id = 0; id < num_ids; id++){
- set_array[d].insert(my_v + id) ;
- sketch_array[d].update(my_v + id, 1) ;
+ int my_v = v++;
+ for (int d = 0; d < num_days; ++d) {
+ for (int id = 0; id < num_ids; ++id) {
+ set_array[d].insert(my_v + id);
+ sketch_array[d].update(my_v + id, 1);
}
}
- v += num_ids ;
+ v += num_ids;
}
- union_ops(lgK, sketch_array) ;
+ union_ops(lgK, sketch_array);
}
private:
- int32_t get_num_ids(int total_days, int index){
+ int32_t get_num_ids(int total_days, int index) {
/*
* Generates power law distributed synthetic data
*/
- double d = total_days ;
- double i = index ;
- return int(round(exp(i * log(d) / d))) ;
+ double d = total_days;
+ double i = index;
+ return int(round(exp(i * log(d) / d)));
}
- int32_t get_num_days(int total_days, int index){
- double d = total_days ;
- double i = index ;
- return int(round(exp( (d-i) * log(d) / d ))) ;
+ int32_t get_num_days(int total_days, int index) {
+ double d = total_days;
+ double i = index;
+ return int(round(exp((d-i) * log(d) / d )));
}
- int32_t round_double_to_int(double x){
- return int(std::round(x)) ;
+ int32_t round_double_to_int(double x) {
+ return int(std::round(x));
}
- void union_ops(int lgk, std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketches){
- int num_sketches = sketches.size() ;
- auto u = sum_union_tuple_sketch::builder().set_lg_k(lgk).build() ;
+ void union_ops(uint8_t lgk, std::vector<datasketches::update_tuple_sketch<int, int, always_one_policy<int>>> sketches) {
+ auto num_sketches = sketches.size();
+ auto u = sum_union_tuple_sketch::builder().set_lg_k(lgk).build();
- for(auto sk:sketches){
- u.update(sk) ;
+ for (auto sk: sketches) {
+ u.update(sk);
}
- auto union_result = u.get_result() ;
- std::vector<uint64_t> num_days_arr(num_sketches+1) ;
+ auto union_result = u.get_result();
+ std::vector<uint64_t> num_days_arr(num_sketches+1);
for (const auto& entry: union_result) {
- int num_days_visited = entry.second ;
- num_days_arr[num_days_visited]++;
+ int num_days_visited = entry.second;
+ ++num_days_arr[num_days_visited];
}
- int sum_visits = 0;
+ uint64_t sum_visits = 0;
double theta = union_result.get_theta();
- std::cout <<"\t\tEngagement Histogram.\t\t\t\n" ;
- std::cout << "Number of Unique Visitors by Number of Days Visited" << std::endl ;
- std::cout << "---------------------------------------------------" << std::endl ;
+ std::cout <<"\t\tEngagement Histogram.\t\t\t\n";
+ std::cout << "Number of Unique Visitors by Number of Days Visited" << std::endl;
+ std::cout << "---------------------------------------------------" << std::endl;
std::cout << std::setw(12) << "Days Visited"
<< std::setw(12) << "Estimate"
<< std::setw(12) << "LB"
<< std::setw(12) << "UB"
- << std:: endl ;
+ << std:: endl;
- for (uint64_t i = 0; i < num_days_arr.size(); i++) {
- int visitors_at_days_visited = num_days_arr[i] ;
- if(visitors_at_days_visited == 0){ continue; }
- sum_visits += visitors_at_days_visited * i ;
+ for (size_t i = 0; i < num_days_arr.size(); ++i) {
+ auto visitors_at_days_visited = num_days_arr[i];
+ if (visitors_at_days_visited == 0) continue;
+ sum_visits += visitors_at_days_visited * i;
- double est_visitors_at_days_visited = visitors_at_days_visited / theta ;
+ double est_visitors_at_days_visited = visitors_at_days_visited / theta;
double lower_bound_at_days_visited = union_result.get_lower_bound(num_std_dev, visitors_at_days_visited);
double upper_bound_at_days_visited = union_result.get_upper_bound(num_std_dev, visitors_at_days_visited);
@@ -246,27 +246,25 @@
<< std::setw(12) << est_visitors_at_days_visited
<< std::setw(12) << lower_bound_at_days_visited
<< std::setw(12) << upper_bound_at_days_visited
- << std:: endl ;
-
- }
- std::cout << std::endl << std::endl ;
+ << std:: endl;
+ }
+ std::cout << std::endl << std::endl;
std::cout << std::setw(12) << "Totals"
<< std::setw(12) << "Estimate"
<< std::setw(12) << "LB"
<< std::setw(12) << "UB"
- << std:: endl ;
- std::cout << "---------------------------------------------------" << std::endl ;
+ << std:: endl;
+ std::cout << "---------------------------------------------------" << std::endl;
- const double total_visitors = union_result.get_estimate() ;
- const double lb_visitors = union_result.get_lower_bound(num_std_dev) ;
- const double ub_visitors = union_result.get_upper_bound(num_std_dev) ;
-
+ const double total_visitors = union_result.get_estimate();
+ const double lb_visitors = union_result.get_lower_bound(num_std_dev);
+ const double ub_visitors = union_result.get_upper_bound(num_std_dev);
std::cout << std::setw(12) << "Visitors"
<< std::setw(12) << total_visitors
<< std::setw(12) << lb_visitors
<< std::setw(12) << ub_visitors
- << std:: endl ;
+ << std:: endl;
// The total number of visits, however, is a scaled metric and takes advantage of the fact that
// the retained entries in the sketch is a uniform random sample of all unique visitors, and
@@ -275,25 +273,23 @@
const double lb_visits = est_visits * lb_visitors / total_visitors;
const double ub_visits = est_visits * ub_visitors / total_visitors;
-
std::cout << std::setw(12) << "Visits"
<< std::setw(12) << est_visits
<< std::setw(12) << lb_visits
<< std::setw(12) << ub_visits
- << std:: endl ;
+ << std:: endl;
}
};
namespace datasketches {
- TEST_CASE("engagement", "[engagement]") {
- EngagementTest E ;
- E.test_always_one_update() ;
- E.test_sum_update_policy() ;
- E.test_sum_union_policy() ;
- E.compute_engagement_histogram() ;
-}
+ TEST_CASE("engagement", "[engagement]") {
+ EngagementTest E;
+ E.test_always_one_update();
+ E.test_sum_update_policy();
+ E.test_sum_union_policy();
+ E.compute_engagement_histogram();
+ }
-
-} /* namespace datasketches */
\ No newline at end of file
+} /* namespace datasketches */