21#if defined(OQMC_ARCH_AVX)
25#if defined(OQMC_ARCH_SSE)
29#if defined(OQMC_ARCH_ARM)
61 constexpr std::uint16_t
masks[16] = {
161#if defined(OQMC_ARCH_AVX)
162 constexpr auto stride = 16;
190#if defined(OQMC_ARCH_SSE)
191 constexpr auto stride = 8;
219#if defined(OQMC_ARCH_ARM)
220 constexpr auto stride = 8;
245#if defined(OQMC_ARCH_SCALAR)
247 for(
int i = 0;
i < 16; ++
i)
249 if((index &
masks[
i]) != 0)
294 static_assert(
Depth >= 1,
"Pattern depth is greater or equal to one.");
295 static_assert(
Depth <= 4,
"Pattern depth is less or equal to four.");
#define OQMC_HOST_DEVICE
Definition gpu.h:13
constexpr std::uint32_t reverseAndShuffle(std::uint32_t value, std::uint32_t seed)
Reverse input bits and shuffle order.
Definition permute.h:54
constexpr std::uint32_t rotateBytes(std::uint32_t value, int distance)
Rotate bytes in an integer value.
Definition rotate.h:41
EncodeKey decodeBits16(std::uint16_t value)
Decode a value back into a key.
Definition encode.h:81
constexpr std::uint16_t reverseBits16(std::uint16_t value)
Reverse bits of an unsigned 16 bit integer.
Definition reverse.h:53
constexpr std::uint32_t laineKarrasPermutation(std::uint32_t value, std::uint32_t seed)
Laine and Karras style permutation.
Definition permute.h:34
constexpr std::uint32_t reverseBits32(std::uint32_t value)
Reverse bits of an unsigned 32 bit integer.
Definition reverse.h:25
void shuffledScrambledSobol(std::uint32_t index, std::uint32_t seed, std::uint32_t sample[Depth])
Compute a randomised sobol sequence value.
Definition owen.h:290
constexpr std::uint32_t scrambleAndReverse(std::uint32_t value, std::uint32_t seed)
Permute an input integer and reverse the bits.
Definition owen.h:269
std::uint16_t sobolReversedIndex(std::uint16_t index, int dimension)
Compute sobol sequence value at an index with reversed bits.
Definition owen.h:45