chore: remove "using namespace " from AZCore Math (#6372)
* chore: remove "using namespace " from AZCore Math REF: https://github.com/o3de/o3de/issues/6281 Signed-off-by: Michael Pollind <mpollind@gmail.com> * chore: fix formatting Signed-off-by: Michael Pollind <mpollind@gmail.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -9,39 +9,38 @@
|
||||
#include <AzCore/Math/Sfmt.h>
|
||||
|
||||
#include <AzCore/Math/Random.h>
|
||||
#include <AzCore/std/parallel/lock.h>
|
||||
#include <AzCore/Module/Environment.h>
|
||||
#include <AzCore/std/parallel/lock.h>
|
||||
|
||||
#include <string.h> // for memset
|
||||
|
||||
namespace AZ::SfmtInternal
|
||||
{
|
||||
static const int N32 = N * 4;
|
||||
static const int N64 = N * 2;
|
||||
static const int POS1 = 122;
|
||||
static const int SL1 = 18;
|
||||
static const int SR1 = 11;
|
||||
static const int SL2 = 1;
|
||||
static const int SR2 = 1;
|
||||
static const unsigned int MSK1 = 0xdfffffefU;
|
||||
static const unsigned int MSK2 = 0xddfecb7fU;
|
||||
static const unsigned int MSK3 = 0xbffaffffU;
|
||||
static const unsigned int MSK4 = 0xbffffff6U;
|
||||
static const unsigned int PARITY1 = 0x00000001U;
|
||||
static const unsigned int PARITY2 = 0x00000000U;
|
||||
static const unsigned int PARITY3 = 0x00000000U;
|
||||
static const unsigned int PARITY4 = 0x13c9e684U;
|
||||
static const int N32 = N * 4;
|
||||
static const int N64 = N * 2;
|
||||
static const int POS1 = 122;
|
||||
static const int SL1 = 18;
|
||||
static const int SR1 = 11;
|
||||
static const int SL2 = 1;
|
||||
static const int SR2 = 1;
|
||||
static const unsigned int MSK1 = 0xdfffffefU;
|
||||
static const unsigned int MSK2 = 0xddfecb7fU;
|
||||
static const unsigned int MSK3 = 0xbffaffffU;
|
||||
static const unsigned int MSK4 = 0xbffffff6U;
|
||||
static const unsigned int PARITY1 = 0x00000001U;
|
||||
static const unsigned int PARITY2 = 0x00000000U;
|
||||
static const unsigned int PARITY3 = 0x00000000U;
|
||||
static const unsigned int PARITY4 = 0x13c9e684U;
|
||||
|
||||
/** a parity check vector which certificate the period of 2^{MEXP} */
|
||||
static unsigned int parity[4] = {PARITY1, PARITY2, PARITY3, PARITY4};
|
||||
static unsigned int parity[4] = { PARITY1, PARITY2, PARITY3, PARITY4 };
|
||||
|
||||
#ifdef ONLY64
|
||||
# define idxof(_i) (_i ^ 1)
|
||||
#define idxof(_i) (_i ^ 1)
|
||||
#else
|
||||
# define idxof(_i) _i
|
||||
#define idxof(_i) _i
|
||||
#endif // ONLY64
|
||||
|
||||
|
||||
#if AZ_TRAIT_USE_PLATFORM_SIMD_SSE
|
||||
/**
|
||||
* This function represents the recursion formula.
|
||||
@@ -52,7 +51,8 @@ namespace AZ::SfmtInternal
|
||||
* @param mask 128-bit mask
|
||||
* @return output
|
||||
*/
|
||||
AZ_FORCE_INLINE static Simd::Vec4::Int32Type simd_recursion(Simd::Vec4::Int32Type* a, Simd::Vec4::Int32Type* b, Simd::Vec4::Int32Type c, Simd::Vec4::Int32Type d, Simd::Vec4::Int32Type mask)
|
||||
AZ_FORCE_INLINE static Simd::Vec4::Int32Type simd_recursion(
|
||||
Simd::Vec4::Int32Type* a, Simd::Vec4::Int32Type* b, Simd::Vec4::Int32Type c, Simd::Vec4::Int32Type d, Simd::Vec4::Int32Type mask)
|
||||
{
|
||||
Simd::Vec4::Int32Type v, x, y, z;
|
||||
x = *a;
|
||||
@@ -151,7 +151,7 @@ namespace AZ::SfmtInternal
|
||||
inline void rshift128(w128_t* out, w128_t const* in, int shift)
|
||||
{
|
||||
AZ::u64 th, tl, oh, ol;
|
||||
#ifdef ONLY64
|
||||
#ifdef ONLY64
|
||||
th = ((AZ::u64)in->u[2] << 32) | ((AZ::u64)in->u[3]);
|
||||
tl = ((AZ::u64)in->u[0] << 32) | ((AZ::u64)in->u[1]);
|
||||
|
||||
@@ -204,7 +204,7 @@ namespace AZ::SfmtInternal
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void do_recursion(w128_t* r, w128_t* a, w128_t* b, w128_t* c, w128_t* d)
|
||||
inline void do_recursion(w128_t* r, w128_t* a, w128_t* b, w128_t* c, w128_t* d)
|
||||
{
|
||||
w128_t x;
|
||||
w128_t y;
|
||||
@@ -229,7 +229,7 @@ namespace AZ::SfmtInternal
|
||||
inline void gen_rand_all(Sfmt& g)
|
||||
{
|
||||
int i;
|
||||
w128_t* r1, * r2;
|
||||
w128_t *r1, *r2;
|
||||
|
||||
r1 = &g.m_sfmt[N - 2];
|
||||
r2 = &g.m_sfmt[N - 1];
|
||||
@@ -257,7 +257,7 @@ namespace AZ::SfmtInternal
|
||||
inline void gen_rand_array(Sfmt& g, w128_t* array, int size)
|
||||
{
|
||||
int i, j;
|
||||
w128_t* r1, * r2;
|
||||
w128_t *r1, *r2;
|
||||
|
||||
r1 = &g.m_sfmt[N - 2];
|
||||
r2 = &g.m_sfmt[N - 1];
|
||||
@@ -295,82 +295,80 @@ namespace AZ::SfmtInternal
|
||||
#endif
|
||||
} // namespace AZ::SfmtInternal
|
||||
|
||||
using namespace AZ;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Statics
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
static EnvironmentVariable<AZ::Sfmt> s_sfmt;
|
||||
static const char* s_globalSfmtName = "GlobalSfmt";
|
||||
|
||||
Sfmt& Sfmt::GetInstance()
|
||||
namespace AZ
|
||||
{
|
||||
if (!s_sfmt)
|
||||
static EnvironmentVariable<AZ::Sfmt> s_sfmt;
|
||||
static const char* s_globalSfmtName = "GlobalSfmt";
|
||||
|
||||
Sfmt& Sfmt::GetInstance()
|
||||
{
|
||||
s_sfmt = AZ::Environment::FindVariable<Sfmt>(s_globalSfmtName);
|
||||
if (!s_sfmt)
|
||||
{
|
||||
Sfmt::Create();
|
||||
s_sfmt = AZ::Environment::FindVariable<Sfmt>(s_globalSfmtName);
|
||||
if (!s_sfmt)
|
||||
{
|
||||
Sfmt::Create();
|
||||
}
|
||||
}
|
||||
|
||||
return s_sfmt.Get();
|
||||
}
|
||||
|
||||
void Sfmt::Create()
|
||||
{
|
||||
if (!s_sfmt)
|
||||
{
|
||||
s_sfmt = AZ::Environment::CreateVariable<AZ::Sfmt>(s_globalSfmtName);
|
||||
}
|
||||
}
|
||||
|
||||
return s_sfmt.Get();
|
||||
}
|
||||
|
||||
void Sfmt::Create()
|
||||
{
|
||||
if (!s_sfmt)
|
||||
void Sfmt::Destroy()
|
||||
{
|
||||
s_sfmt = AZ::Environment::CreateVariable<AZ::Sfmt>(s_globalSfmtName);
|
||||
s_sfmt.Reset();
|
||||
}
|
||||
}
|
||||
|
||||
void Sfmt::Destroy()
|
||||
{
|
||||
s_sfmt.Reset();
|
||||
}
|
||||
//=========================================================================
|
||||
// Sfmt
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
Sfmt::Sfmt()
|
||||
{
|
||||
m_psfmt32 = &m_sfmt[0].u[0];
|
||||
m_psfmt64 = reinterpret_cast<AZ::u64*>(m_psfmt32);
|
||||
|
||||
//=========================================================================
|
||||
// Sfmt
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
Sfmt::Sfmt()
|
||||
{
|
||||
m_psfmt32 = &m_sfmt[0].u[0];
|
||||
m_psfmt64 = reinterpret_cast<AZ::u64*>(m_psfmt32);
|
||||
Seed();
|
||||
}
|
||||
|
||||
Seed();
|
||||
}
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
Sfmt::Sfmt(AZ::u32* keys, int numKeys)
|
||||
{
|
||||
m_psfmt32 = &m_sfmt[0].u[0];
|
||||
m_psfmt64 = reinterpret_cast<AZ::u64*>(m_psfmt32);
|
||||
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
Sfmt::Sfmt(AZ::u32* keys, int numKeys)
|
||||
{
|
||||
m_psfmt32 = &m_sfmt[0].u[0];
|
||||
m_psfmt64 = reinterpret_cast<AZ::u64*>(m_psfmt32);
|
||||
Seed(keys, numKeys);
|
||||
}
|
||||
|
||||
Seed(keys, numKeys);
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void
|
||||
Sfmt::Seed()
|
||||
{
|
||||
// buffer with random values
|
||||
AZ::u32 buffer[32];
|
||||
BetterPseudoRandom rnd;
|
||||
bool result = rnd.GetRandom(buffer, sizeof(buffer));
|
||||
(void)result;
|
||||
AZ_Warning("System", result, "Failed to seed properly the Smft generator!");
|
||||
Seed(buffer, AZ_ARRAY_SIZE(buffer));
|
||||
}
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void Sfmt::Seed()
|
||||
{
|
||||
// buffer with random values
|
||||
AZ::u32 buffer[32];
|
||||
BetterPseudoRandom rnd;
|
||||
bool result = rnd.GetRandom(buffer, sizeof(buffer));
|
||||
(void)result;
|
||||
AZ_Warning("System", result, "Failed to seed properly the Smft generator!");
|
||||
Seed(buffer, AZ_ARRAY_SIZE(buffer));
|
||||
}
|
||||
|
||||
/**
|
||||
* This function represents a function used in the initialization
|
||||
@@ -388,226 +386,222 @@ Sfmt::Seed()
|
||||
*/
|
||||
#define azsfmt_func2(x) ((x ^ (x >> 27)) * (AZ::u32)1566083941UL)
|
||||
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void
|
||||
Sfmt::Seed(AZ::u32* keys, int numKeys)
|
||||
{
|
||||
using SfmtInternal::N;
|
||||
using SfmtInternal::N32;
|
||||
int i, j, count;
|
||||
AZ::u32 r;
|
||||
int lag;
|
||||
int mid;
|
||||
int size = N * 4;
|
||||
//=========================================================================
|
||||
// Seed
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void Sfmt::Seed(AZ::u32* keys, int numKeys)
|
||||
{
|
||||
using SfmtInternal::N;
|
||||
using SfmtInternal::N32;
|
||||
int i, j, count;
|
||||
AZ::u32 r;
|
||||
int lag;
|
||||
int mid;
|
||||
int size = N * 4;
|
||||
|
||||
if (size >= 623)
|
||||
{
|
||||
lag = 11;
|
||||
}
|
||||
else if (size >= 68)
|
||||
{
|
||||
lag = 7;
|
||||
}
|
||||
else if (size >= 39)
|
||||
{
|
||||
lag = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
lag = 3;
|
||||
}
|
||||
mid = (size - lag) / 2;
|
||||
if (size >= 623)
|
||||
{
|
||||
lag = 11;
|
||||
}
|
||||
else if (size >= 68)
|
||||
{
|
||||
lag = 7;
|
||||
}
|
||||
else if (size >= 39)
|
||||
{
|
||||
lag = 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
lag = 3;
|
||||
}
|
||||
mid = (size - lag) / 2;
|
||||
|
||||
memset(m_sfmt, 0x8b, sizeof(m_sfmt));
|
||||
if (numKeys + 1 > SfmtInternal::N32)
|
||||
{
|
||||
count = numKeys + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
count = N32;
|
||||
}
|
||||
r = azsfmt_func1((m_psfmt32[idxof(0)] ^ m_psfmt32[idxof(mid)] ^ m_psfmt32[idxof(N32 - 1)]));
|
||||
m_psfmt32[idxof(mid)] += r;
|
||||
r += numKeys;
|
||||
m_psfmt32[idxof(mid + lag)] += r;
|
||||
m_psfmt32[idxof(0)] = r;
|
||||
memset(m_sfmt, 0x8b, sizeof(m_sfmt));
|
||||
if (numKeys + 1 > SfmtInternal::N32)
|
||||
{
|
||||
count = numKeys + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
count = N32;
|
||||
}
|
||||
r = azsfmt_func1((m_psfmt32[idxof(0)] ^ m_psfmt32[idxof(mid)] ^ m_psfmt32[idxof(N32 - 1)]));
|
||||
m_psfmt32[idxof(mid)] += r;
|
||||
r += numKeys;
|
||||
m_psfmt32[idxof(mid + lag)] += r;
|
||||
m_psfmt32[idxof(0)] = r;
|
||||
|
||||
count--;
|
||||
for (i = 1, j = 0; (j < count) && (j < numKeys); j++)
|
||||
{
|
||||
r = azsfmt_func1((m_psfmt32[idxof(i)] ^ m_psfmt32[idxof((i + mid) % N32)] ^ m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] += r;
|
||||
r += keys[j] + i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] += r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
for (; j < count; j++)
|
||||
{
|
||||
r = azsfmt_func1((m_psfmt32[idxof(i)] ^ m_psfmt32[idxof((i + mid) % N32)] ^ m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] += r;
|
||||
r += i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] += r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
for (j = 0; j < N32; j++)
|
||||
{
|
||||
r = azsfmt_func2((m_psfmt32[idxof(i)] + m_psfmt32[idxof((i + mid) % N32)] + m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] ^= r;
|
||||
r -= i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] ^= r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
count--;
|
||||
for (i = 1, j = 0; (j < count) && (j < numKeys); j++)
|
||||
{
|
||||
r = azsfmt_func1((m_psfmt32[idxof(i)] ^ m_psfmt32[idxof((i + mid) % N32)] ^ m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] += r;
|
||||
r += keys[j] + i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] += r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
for (; j < count; j++)
|
||||
{
|
||||
r = azsfmt_func1((m_psfmt32[idxof(i)] ^ m_psfmt32[idxof((i + mid) % N32)] ^ m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] += r;
|
||||
r += i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] += r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
for (j = 0; j < N32; j++)
|
||||
{
|
||||
r = azsfmt_func2((m_psfmt32[idxof(i)] + m_psfmt32[idxof((i + mid) % N32)] + m_psfmt32[idxof((i + N32 - 1) % N32)]));
|
||||
m_psfmt32[idxof((i + mid) % N32)] ^= r;
|
||||
r -= i;
|
||||
m_psfmt32[idxof((i + mid + lag) % N32)] ^= r;
|
||||
m_psfmt32[idxof(i)] = r;
|
||||
i = (i + 1) % N32;
|
||||
}
|
||||
|
||||
m_index = N32;
|
||||
PeriodCertification();
|
||||
}
|
||||
m_index = N32;
|
||||
PeriodCertification();
|
||||
}
|
||||
|
||||
#undef azsfmt_func1
|
||||
#undef azsfmt_func2
|
||||
|
||||
//=========================================================================
|
||||
// PeriodCertification
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void
|
||||
Sfmt::PeriodCertification()
|
||||
{
|
||||
int inner = 0;
|
||||
int i, j;
|
||||
AZ::u32 work;
|
||||
//=========================================================================
|
||||
// PeriodCertification
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void Sfmt::PeriodCertification()
|
||||
{
|
||||
int inner = 0;
|
||||
int i, j;
|
||||
AZ::u32 work;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
inner ^= m_psfmt32[idxof(i)] & SfmtInternal::parity[i];
|
||||
}
|
||||
for (i = 16; i > 0; i >>= 1)
|
||||
{
|
||||
inner ^= inner >> i;
|
||||
}
|
||||
inner &= 1;
|
||||
/* check OK */
|
||||
if (inner == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* check NG, and modification */
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
work = 1;
|
||||
for (j = 0; j < 32; j++)
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if ((work & SfmtInternal::parity[i]) != 0)
|
||||
inner ^= m_psfmt32[idxof(i)] & SfmtInternal::parity[i];
|
||||
}
|
||||
for (i = 16; i > 0; i >>= 1)
|
||||
{
|
||||
inner ^= inner >> i;
|
||||
}
|
||||
inner &= 1;
|
||||
/* check OK */
|
||||
if (inner == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* check NG, and modification */
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
work = 1;
|
||||
for (j = 0; j < 32; j++)
|
||||
{
|
||||
m_psfmt32[idxof(i)] ^= work;
|
||||
return;
|
||||
if ((work & SfmtInternal::parity[i]) != 0)
|
||||
{
|
||||
m_psfmt32[idxof(i)] ^= work;
|
||||
return;
|
||||
}
|
||||
work = work << 1;
|
||||
}
|
||||
work = work << 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// Rand32
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
AZ::u32 Sfmt::Rand32()
|
||||
{
|
||||
int index = m_index.fetch_add(1);
|
||||
if (index >= SfmtInternal::N32)
|
||||
//=========================================================================
|
||||
// Rand32
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
AZ::u32 Sfmt::Rand32()
|
||||
{
|
||||
AZStd::lock_guard<decltype(m_generationMutex)> lock(m_generationMutex);
|
||||
// if this thread is the one that sets m_index to 0, then this thread
|
||||
// does the generation
|
||||
index += 1; // compare against the result of fetch_add(1) above
|
||||
if (m_index.compare_exchange_strong(index, 0))
|
||||
int index = m_index.fetch_add(1);
|
||||
if (index >= SfmtInternal::N32)
|
||||
{
|
||||
SfmtInternal::gen_rand_all(*this);
|
||||
AZStd::lock_guard<decltype(m_generationMutex)> lock(m_generationMutex);
|
||||
// if this thread is the one that sets m_index to 0, then this thread
|
||||
// does the generation
|
||||
index += 1; // compare against the result of fetch_add(1) above
|
||||
if (m_index.compare_exchange_strong(index, 0))
|
||||
{
|
||||
SfmtInternal::gen_rand_all(*this);
|
||||
}
|
||||
// try again, with the new table
|
||||
return Rand32();
|
||||
}
|
||||
// try again, with the new table
|
||||
return Rand32();
|
||||
return m_psfmt32[index];
|
||||
}
|
||||
return m_psfmt32[index];
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// Rand64
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
AZ::u64 Sfmt::Rand64()
|
||||
{
|
||||
int index = m_index.fetch_add(2);
|
||||
if (index >= (SfmtInternal::N32 - 1))
|
||||
//=========================================================================
|
||||
// Rand64
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
AZ::u64 Sfmt::Rand64()
|
||||
{
|
||||
AZStd::lock_guard<decltype(m_generationMutex)> lock(m_generationMutex);
|
||||
// if this thread is the one that sets m_index to 0, then this thread
|
||||
// does the generation
|
||||
index += 2; // compare against the result of fetch_add(2) above
|
||||
if (m_index.compare_exchange_strong(index, 0))
|
||||
int index = m_index.fetch_add(2);
|
||||
if (index >= (SfmtInternal::N32 - 1))
|
||||
{
|
||||
SfmtInternal::gen_rand_all(*this);
|
||||
AZStd::lock_guard<decltype(m_generationMutex)> lock(m_generationMutex);
|
||||
// if this thread is the one that sets m_index to 0, then this thread
|
||||
// does the generation
|
||||
index += 2; // compare against the result of fetch_add(2) above
|
||||
if (m_index.compare_exchange_strong(index, 0))
|
||||
{
|
||||
SfmtInternal::gen_rand_all(*this);
|
||||
}
|
||||
// try again, with the new table
|
||||
return Rand64();
|
||||
}
|
||||
// try again, with the new table
|
||||
return Rand64();
|
||||
|
||||
AZ::u64 r;
|
||||
r = m_psfmt64[index / 2];
|
||||
return r;
|
||||
}
|
||||
|
||||
AZ::u64 r;
|
||||
r = m_psfmt64[index / 2];
|
||||
return r;
|
||||
}
|
||||
//=========================================================================
|
||||
// FillArray32
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void Sfmt::FillArray32(AZ::u32* array, int size)
|
||||
{
|
||||
AZ_MATH_ASSERT(m_index == SfmtInternal::N32, "Invalid m_index! Reinitialize!");
|
||||
AZ_MATH_ASSERT(size % 4 == 0, "Size must be multiple of 4!");
|
||||
AZ_MATH_ASSERT(size >= SfmtInternal::N32, "Size must be bigger than %d GetMinArray32Size()!", SfmtInternal::N32);
|
||||
|
||||
//=========================================================================
|
||||
// FillArray32
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void
|
||||
Sfmt::FillArray32(AZ::u32* array, int size)
|
||||
{
|
||||
AZ_MATH_ASSERT(m_index == SfmtInternal::N32, "Invalid m_index! Reinitialize!");
|
||||
AZ_MATH_ASSERT(size % 4 == 0, "Size must be multiple of 4!");
|
||||
AZ_MATH_ASSERT(size >= SfmtInternal::N32, "Size must be bigger than %d GetMinArray32Size()!", SfmtInternal::N32);
|
||||
SfmtInternal::gen_rand_array(*this, (SfmtInternal::w128_t*)array, size / 4);
|
||||
m_index = SfmtInternal::N32;
|
||||
}
|
||||
|
||||
SfmtInternal::gen_rand_array(*this, (SfmtInternal::w128_t*)array, size / 4);
|
||||
m_index = SfmtInternal::N32;
|
||||
}
|
||||
//=========================================================================
|
||||
// FillArray64
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void Sfmt::FillArray64(AZ::u64* array, int size)
|
||||
{
|
||||
AZ_MATH_ASSERT(m_index == SfmtInternal::N32, "Invalid m_index! Reinitialize!");
|
||||
AZ_MATH_ASSERT(size % 4 == 0, "Size must be multiple of 4!");
|
||||
AZ_MATH_ASSERT(size >= SfmtInternal::N64, "Size must be bigger than %d GetMinArray64Size()!", SfmtInternal::N64);
|
||||
|
||||
//=========================================================================
|
||||
// FillArray64
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
void
|
||||
Sfmt::FillArray64(AZ::u64* array, int size)
|
||||
{
|
||||
AZ_MATH_ASSERT(m_index == SfmtInternal::N32, "Invalid m_index! Reinitialize!");
|
||||
AZ_MATH_ASSERT(size % 4 == 0, "Size must be multiple of 4!");
|
||||
AZ_MATH_ASSERT(size >= SfmtInternal::N64, "Size must be bigger than %d GetMinArray64Size()!", SfmtInternal::N64);
|
||||
SfmtInternal::gen_rand_array(*this, (SfmtInternal::w128_t*)array, size / 2);
|
||||
m_index = SfmtInternal::N32;
|
||||
}
|
||||
|
||||
SfmtInternal::gen_rand_array(*this, (SfmtInternal::w128_t*)array, size / 2);
|
||||
m_index = SfmtInternal::N32;
|
||||
}
|
||||
//=========================================================================
|
||||
// GetMinArray32Size
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
int Sfmt::GetMinArray32Size() const
|
||||
{
|
||||
return SfmtInternal::N32;
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// GetMinArray32Size
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
int
|
||||
Sfmt::GetMinArray32Size() const
|
||||
{
|
||||
return SfmtInternal::N32;
|
||||
}
|
||||
//=========================================================================
|
||||
// GetMinArray64Size
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
int Sfmt::GetMinArray64Size() const
|
||||
{
|
||||
return SfmtInternal::N64;
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
// GetMinArray64Size
|
||||
// [4/10/2012]
|
||||
//=========================================================================
|
||||
int
|
||||
Sfmt::GetMinArray64Size() const
|
||||
{
|
||||
return SfmtInternal::N64;
|
||||
}
|
||||
} // namespace AZ
|
||||
|
||||
Reference in New Issue
Block a user