ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/random.h
Revision: 2.12
Committed: Fri Jun 6 16:38:47 2003 UTC (20 years, 10 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 2.11: +12 -9 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 schorsch 2.12 /* RCSid $Id: random.h,v 2.11 2003/06/05 19:29:34 schorsch 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    
11 greg 2.8
12 greg 2.9 #include "copyright.h"
13 greg 1.1
14 greg 2.8 #ifdef NORANDOM
15    
16     #undef random
17     #define random() 1073741820
18     #undef srandom
19     #define srandom(s) (s)
20     #define frandom() 0.5
21     #define urand(i) 0.5
22     #define initurand(n) (n)
23    
24     #else
25    
26 schorsch 2.11 #ifdef _WIN32
27 greg 1.3
28 greg 2.10 #if (RAND_MAX <= 65536)
29 greg 2.3 #define random() ((long)rand()<<16^(long)rand()<<6^(long)rand()>>4)
30 greg 2.10 #else
31     #define random() rand()
32     #endif
33 gwlarson 2.7 #define srandom(s) srand((unsigned)(s))
34 greg 2.2
35 greg 2.10 #define frandom() (rand()*(1./RAND_MAX))
36 greg 2.2
37     #else
38     #ifdef BSD
39    
40 greg 1.1 extern long random();
41    
42 greg 2.2 #define frandom() (random()*(1./2147483648.))
43 greg 1.3
44     #else
45    
46     extern long lrand48();
47     extern double drand48();
48    
49 greg 2.2 #define random() lrand48()
50 gwlarson 2.7 #define srandom(s) srand48((long)(s))
51 greg 2.2 #define frandom() drand48()
52 greg 1.3
53     #endif
54 greg 2.2 #endif
55 greg 1.4
56 greg 2.4 #ifdef MC
57 gregl 2.5
58 greg 2.4 #define urand(i) frandom()
59 gregl 2.5 #define initurand(n) (n)
60    
61 greg 2.4 #else
62 gregl 2.5
63 gregl 2.6 extern unsigned short *urperm;
64 greg 2.8 extern int urmask;
65 gregl 2.5
66 greg 2.2 #define urand(i) ((urperm[(i)&urmask]+frandom())/(urmask+1))
67 greg 2.8
68     #endif
69    
70     #endif
71    
72     /* defined in urand.c */
73     extern int initurand(int size);
74     extern int ilhash(int *d, int n);
75     /* defined in urind.c */
76     extern int urind(int s, int i);
77     /* defined in multisamp.c */
78     extern void multisamp(double t[], int n, double r);
79 gregl 2.5
80 schorsch 2.12
81     #ifdef __cplusplus
82     }
83 greg 2.4 #endif
84 schorsch 2.12 #endif /* _RAD_RANDOM_H_ */
85