#ifndef EXTRAND_H_INCLUDED
#define EXTRAND_H_INCLUDED

#ifndef RANDOM_STRENGTH
#define RANDOM_STRENGTH 0
#endif /*RANDOM_STRENGTH*/

unsigned long __rand_004(void);
unsigned long __random_004(unsigned long);
unsigned long __random_normal_004(unsigned long, unsigned long);
void __randomize_004(void);
void __srand_004(unsigned long);

unsigned long __rand_028(void);
unsigned long __random_028(unsigned long);
unsigned long __random_normal_028(unsigned long, unsigned long);
void __randomize_028(void);
void __srand_028(unsigned long);

unsigned long __rand_060(void);
unsigned long __random_060(unsigned long);
unsigned long __random_normal_060(unsigned long, unsigned long);
void __randomize_060(void);
void __srand_060(unsigned long);

unsigned long __rand_124(void);
unsigned long __random_124(unsigned long);
unsigned long __random_normal_124(unsigned long, unsigned long);
void __randomize_124(void);
void __srand_124(unsigned long);

unsigned long __rand_252(void);
unsigned long __random_252(unsigned long);
unsigned long __random_normal_252(unsigned long, unsigned long);
void __randomize_252(void);
void __srand_252(unsigned long);

#define RAND_MAX_LONG 4294967295

#if RANDOM_STRENGTH == 0

#define rand_long() __rand_004()
#define random_long(x) __random_004(x)
#define random_normal(x, y) __random_normal_004(x, y)
#define randomize_long() __randomize_004()
#define srand_long(x) __srand_004(x)

#elif RANDOM_STRENGTH == 1

#define rand_long() __rand_028()
#define random_long(x) __random_028(x)
#define random_normal(x, y) __random_normal_028(x, y)
#define randomize_long() __randomize_028()
#define srand_long(x) __srand_028(x)

#elif RANDOM_STRENGTH == 2

#define rand_long() __rand_060()
#define random_long(x) __random_060(x)
#define random_normal(x, y) __random_normal_060(x, y)
#define randomize_long() __randomize_060()
#define srand_long(x) __srand_060(x)

#elif RANDOM_STRENGTH == 3

#define rand_long() __rand_124()
#define random_long(x) __random_124(x)
#define random_normal(x, y) __random_normal_124(x, y)
#define randomize_long() __randomize_124()
#define srand_long(x) __srand_124(x)

#else

#define rand_long() __rand_252()
#define random_long(x) __random_252(x)
#define random_normal(x, y) __random_normal_252(x, y)
#define randomize_long() __randomize_252()
#define srand_long(x) __srand_252(x)

#endif /*RANDOM_STRENGTH*/

#endif /*EXTRAND_H_INCLUDED*/
