7#ifndef VL_H_RANDOM_SPLIT
18#define VL_H_RANDOM_SPLIT(randPtr, resultPtr) (*((vl_ularge_t*)(resultPtr)) = vlRandNext(randPtr))
73#define vlRandUInt8(randPtr) (vl_uint8_t) (vlRandNext(randPtr))
83#define vlRandUInt8x8(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
92#define vlRandUInt8x8(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr); \
93 VL_H_RANDOM_SPLIT(randPtr, ((VL_U8_T*)(resultPtr)) + 4)
107#define vlRandUInt16(randPtr) (vl_uint16_t) (vlRandNext(randPtr))
119#define vlRandUInt16x4(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
120#elif defined VL_U32_T
130#define vlRandUInt16x4(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr); \
131 VL_H_RANDOM_SPLIT(randPtr, ((VL_U16_T*)(resultPtr)) + 2)
145#define vlRandUInt32(randPtr) (vl_uint32_t) (vlRandNext(randPtr))
157#define vlRandUInt32x2(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
168#define vlRandUInt32x2(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr); \
169 VL_H_RANDOM_SPLIT(randPtr, ((VL_U32_T*)(resultPtr) + 1))
184#define vlRandUInt64(randPtr) (vl_uint64_t) (vlRandNext(randPtr))
197vl_int8_t vlRandInt8 (
vl_rand* rand);
209#define vlRandInt8x8(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
210#elif defined VL_U32_T
220#define vlRandInt8x8(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr); \
221 VL_H_RANDOM_SPLIT(randPtr, ((VL_I8_T*)(resultPtr) + 4)
234vl_int16_t vlRandInt16 (
vl_rand* rand);
246#define vlRandInt16x4(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
247#elif defined VL_U32_T
258#define vlRandInt16x4(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr);\
259 VL_H_RANDOM_SPLIT(randPtr, (VL_I16_T)(resultPtr) + 2)
272vl_int32_t vlRandInt32 (
vl_rand* rand);
284#define vlRandInt32x2(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr)
285#elif defined VL_I32_T
295#define vlRandInt32x2(randPtr, resultPtr) VL_H_RANDOM_SPLIT(randPtr, resultPtr);\
296 VL_H_RANDOM_SPLIT(randPtr, ((VL_I32_T*)(resultPtr)) + 1)
310vl_int64_t vlRandInt64 (
vl_rand* rand);
345#define vlRandFx4(randPtr, resultPtr) vlRandFx2(randPtr, (vl_float32_t*)(resultPtr));\
346 vlRandFx2(randPtr, ((vl_float32_t*)(resultPtr)) + 2)
VL_F32_T vl_float32_t
32-bit floating point number type.
Definition vl_numtypes.h:111
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:74
vl_float32_t vlRandF(vl_rand *randPtr)
Generate a random float.
Definition vl_rand.c:120
vl_float64_t vlRandD(vl_rand *randPtr)
Generate a random double.
vl_rand vlRandNext(vl_rand *rand)
Returns the "next" 64-bit integer.
Definition vl_rand.c:50
vl_rand vlRandInit()
Initializes a random state (aka, seed) based on the current time.
Definition vl_rand.c:44
vl_ularge_t vl_rand
Random state type.
Definition vl_rand.h:28
void vlRandFill(vl_rand *rand, void *mem, vl_ularge_t len)
Fills the specified region of memory with random bytes.
void vlRandFx2(vl_rand *randPtr, vl_float32_t *resultPtr)
Generates two random floats.
Definition vl_rand.c:126