--- ray/src/common/random.h 1991/05/17 13:51:29 1.4 +++ ray/src/common/random.h 1999/01/09 09:15:48 2.7 @@ -1,6 +1,6 @@ -/* Copyright (c) 1986 Regents of the University of California */ +/* Copyright (c) 1999 Silicon Graphics, Inc. */ -/* SCCSid "$SunId$ LBL" */ +/* SCCSid "$SunId$ SGI" */ /* * random.h - header file for random(3) and urand() function. @@ -8,23 +8,42 @@ * 10/1/85 */ -#ifdef BSD +#ifdef MSDOS +#define random() ((long)rand()<<16^(long)rand()<<6^(long)rand()>>4) +#define srandom(s) srand((unsigned)(s)) + +#define frandom() (rand()*(1./32768.)) + +#else +#ifdef BSD + extern long random(); -#define frandom() (random()*(1./2147483648.)) +#define frandom() (random()*(1./2147483648.)) #else extern long lrand48(); extern double drand48(); -#define random() lrand48() -#define frandom() drand48() +#define random() lrand48() +#define srandom(s) srand48((long)(s)) +#define frandom() drand48() #endif +#endif -#define urand(i) ((urperm[(i)&urmask]+frandom())/(urmask+1)) +#ifdef MC -extern short *urperm; -extern int urmask; +#define urand(i) frandom() +#define initurand(n) (n) + +#else + +extern unsigned short *urperm; +extern int urmask, initurand(); + +#define urand(i) ((urperm[(i)&urmask]+frandom())/(urmask+1)) + +#endif