*
*/
+#include <random>
#include <algorithm>
#include <cstring>
#include <chrono>
using std::min;
using std::max;
using std::copy;
+using std::random_device;
+using std::mt19937;
enum Criterion {
CRITERION_THROUGHPUT,
count++;
cout << "." << std::flush;
vector<unsigned> sv(s.begin(), s.end());
- random_shuffle(sv.begin(), sv.end());
+ random_device rng;
+ mt19937 urng(rng());
+ shuffle(sv.begin(), sv.end(), urng);
unsigned groups = factor_max + 1;
for (unsigned current_group = 0; current_group < groups;
current_group++) {
template <>
really_inline typename SuperVector<16>::movemask_type SuperVector<16>::movemask(void) const
{
- SuperVector powers{0x8040201008040201UL};
+ SuperVector powers = SuperVector::dup_u64(0x8040201008040201UL);
// Compute the mask from the input
uint8x16_t mask = (uint8x16_t) vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(u.u8x16[0], powers.u.u8x16[0]))));