182 static const size_t NPICKS = 1000000;
183 std::vector<uint64_t> offsets;
188 std::vector<int> chain_picks(offsets.size(), 0);
189 std::vector<int> output_picks(n_outs, 0);
190 for (
int i = 0; i < NPICKS; )
195 auto it = std::lower_bound(offsets.begin(), offsets.end(), o);
196 auto idx = std::distance(offsets.begin(), it);
204 std::vector<int> chain_norm(100, 0), output_norm(100, 0);
205 for (
size_t i = 0; i < output_picks.size(); ++i)
206 output_norm[i * 100 / output_picks.size()] += output_picks[i];
207 for (
size_t i = 0; i < chain_picks.size(); ++i)
208 chain_norm[i * 100 / chain_picks.size()] += chain_picks[i];
210 double max_dev = 0.0, avg_dev = 0.0;
211 for (
size_t i = 0; i < 100; ++i)
213 const double diff = (double)output_norm[i] - (
double)chain_norm[i];
214 double dev = fabs(2.0 * diff / (output_norm[i] + chain_norm[i]));
219 MDEBUG(
"avg_dev: " << avg_dev);
void rand(size_t N, uint8_t *bytes)
unsigned __int64 uint64_t
#define ASSERT_LT(val1, val2)