diff --git a/chicken.h b/chicken.h index 73de3b5..bbeab72 100644 --- a/chicken.h +++ b/chicken.h @@ -1109,8 +1109,15 @@ extern double trunc(double); C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED) #define C_words(n) C_fix(C_bytestowords(C_unfix(n))) #define C_bytes(n) C_fix(C_wordstobytes(C_unfix(n))) + +#if defined(__linux__) || defined(C_XXXBSD) +#define C_random_fixnum(n) C_fix(random() % C_unfix(n)) +#define C_randomize(n) (srandom(C_unfix(n)), C_SCHEME_UNDEFINED) +#else #define C_random_fixnum(n) C_fix((int)(((double)rand())/(RAND_MAX + 1.0) * C_unfix(n))) #define C_randomize(n) (srand(C_unfix(n)), C_SCHEME_UNDEFINED) +#endif + #define C_block_size(x) C_fix(C_header_size(x)) #define C_pointer_address(x) ((C_byte *)C_block_item((x), 0)) #define C_block_address(ptr, n, x) C_a_unsigned_int_to_num(ptr, n, x)