ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/random.h
Revision: 2.9
Committed: Tue Feb 25 02:47:21 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R5
Changes since 2.8: +2 -57 lines
Log Message:
Replaced inline copyright notice with #include "copyright.h"

File Contents

# User Rev Content
1 greg 2.9 /* RCSid $Id$ */
2 greg 1.1 /*
3 greg 1.4 * random.h - header file for random(3) and urand() function.
4 greg 2.8 */
5    
6 greg 2.9 #include "copyright.h"
7 greg 1.1
8 greg 2.8 #ifdef NORANDOM
9    
10     #undef random
11     #define random() 1073741820
12     #undef srandom
13     #define srandom(s) (s)
14     #define frandom() 0.5
15     #define urand(i) 0.5
16     #define initurand(n) (n)
17    
18     #else
19    
20 greg 2.2 #ifdef MSDOS
21 greg 1.3
22 greg 2.3 #define random() ((long)rand()<<16^(long)rand()<<6^(long)rand()>>4)
23 gwlarson 2.7 #define srandom(s) srand((unsigned)(s))
24 greg 2.2
25     #define frandom() (rand()*(1./32768.))
26    
27     #else
28     #ifdef BSD
29    
30 greg 1.1 extern long random();
31    
32 greg 2.2 #define frandom() (random()*(1./2147483648.))
33 greg 1.3
34     #else
35    
36     extern long lrand48();
37     extern double drand48();
38    
39 greg 2.2 #define random() lrand48()
40 gwlarson 2.7 #define srandom(s) srand48((long)(s))
41 greg 2.2 #define frandom() drand48()
42 greg 1.3
43     #endif
44 greg 2.2 #endif
45 greg 1.4
46 greg 2.4 #ifdef MC
47 gregl 2.5
48 greg 2.4 #define urand(i) frandom()
49 gregl 2.5 #define initurand(n) (n)
50    
51 greg 2.4 #else
52 gregl 2.5
53 gregl 2.6 extern unsigned short *urperm;
54 greg 2.8 extern int urmask;
55 gregl 2.5
56 greg 2.2 #define urand(i) ((urperm[(i)&urmask]+frandom())/(urmask+1))
57 greg 2.8
58     #endif
59    
60     #endif
61    
62     #ifdef NOPROTO
63    
64     extern int initurand();
65     extern int ilhash();
66     extern int urind();
67     extern void multisamp();
68    
69     #else
70     /* defined in urand.c */
71     extern int initurand(int size);
72     extern int ilhash(int *d, int n);
73     /* defined in urind.c */
74     extern int urind(int s, int i);
75     /* defined in multisamp.c */
76     extern void multisamp(double t[], int n, double r);
77 gregl 2.5
78 greg 2.4 #endif