ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/random.h
Revision: 2.16
Committed: Wed Apr 5 06:22:56 2006 UTC (18 years, 1 month ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.15: +3 -2 lines
Log Message:
Made -u+ option truly random

File Contents

# User Rev Content
1 greg 2.16 /* RCSid $Id: random.h,v 2.15 2005/06/13 20:07:56 greg Exp $ */
2 greg 1.1 /*
3 greg 1.4 * random.h - header file for random(3) and urand() function.
4 greg 2.8 */
5 schorsch 2.12 #ifndef _RAD_RANDOM_H_
6     #define _RAD_RANDOM_H_
7     #ifdef __cplusplus
8     extern "C" {
9     #endif
10 greg 1.1
11 schorsch 2.11 #ifdef _WIN32
12 greg 1.3
13 greg 2.10 #if (RAND_MAX <= 65536)
14 greg 2.3 #define random() ((long)rand()<<16^(long)rand()<<6^(long)rand()>>4)
15 greg 2.10 #else
16     #define random() rand()
17     #endif
18 gwlarson 2.7 #define srandom(s) srand((unsigned)(s))
19 greg 2.2
20 greg 2.10 #define frandom() (rand()*(1./RAND_MAX))
21 greg 2.2
22     #else
23     #ifdef BSD
24    
25 greg 1.1 extern long random();
26    
27 greg 2.2 #define frandom() (random()*(1./2147483648.))
28 greg 1.3
29     #else
30    
31     extern long lrand48();
32     extern double drand48();
33    
34 greg 2.2 #define random() lrand48()
35 gwlarson 2.7 #define srandom(s) srand48((long)(s))
36 greg 2.2 #define frandom() drand48()
37 greg 1.3
38     #endif
39 greg 2.2 #endif
40 greg 1.4
41 gregl 2.6 extern unsigned short *urperm;
42 greg 2.8 extern int urmask;
43 gregl 2.5
44 greg 2.16 #define urand(i) (urmask ? ((urperm[(i)&urmask]+frandom())/(urmask+1)) \
45     : frandom())
46 greg 2.8
47 greg 2.14 extern int initurand(int size);
48    
49 greg 2.8 /* defined in urand.c */
50     extern int ilhash(int *d, int n);
51     /* defined in urind.c */
52     extern int urind(int s, int i);
53     /* defined in multisamp.c */
54     extern void multisamp(double t[], int n, double r);
55 gregl 2.5
56 schorsch 2.12
57     #ifdef __cplusplus
58     }
59 greg 2.4 #endif
60 schorsch 2.12 #endif /* _RAD_RANDOM_H_ */
61