Skip to content

Commit

Permalink
Use SplitMix64 for seeding test cases
Browse files Browse the repository at this point in the history
Close #581.
  • Loading branch information
Cuda-Chen committed Oct 6, 2023
1 parent 8371b36 commit 4bf7fbe
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions tests/impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,10 +350,21 @@ static inline double bankersRounding(double val)
return ret;
}

static float ranf(void)
// by Sebastiano Vigna, see: <https://xoshiro.di.unimi.it/splitmix64.c>
static uint64_t x;
const double TWOPOWER64 = pow(2, 64);

static double next()
{
uint64_t z = (x += 0x9e3779b97f4a7c15);
z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
return z ^ (z >> 31);
}

static float ranf()
{
uint32_t ir = rand() & 0x7FFF;
return (float) ir * (1.0f / 32768.0f);
return next() / TWOPOWER64;
}

static float ranf(float low, float high)
Expand Down Expand Up @@ -11796,7 +11807,7 @@ SSE2NEONTestImpl::SSE2NEONTestImpl(void)
mTestFloatPointer2 = (float *) platformAlignedAlloc(sizeof(__m128));
mTestIntPointer1 = (int32_t *) platformAlignedAlloc(sizeof(__m128i));
mTestIntPointer2 = (int32_t *) platformAlignedAlloc(sizeof(__m128i));
srand(0);
x = 123456;
for (uint32_t i = 0; i < MAX_TEST_VALUE; i++) {
mTestFloats[i] = ranf(-100000, 100000);
mTestInts[i] = (int32_t) ranf(-100000, 100000);
Expand Down

0 comments on commit 4bf7fbe

Please sign in to comment.