ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/random.h
Revision: 2.6
Committed: Mon Jan 5 16:42:49 1998 UTC (26 years, 3 months ago) by gregl
Content type: text/plain
Branch: MAIN
Changes since 2.5: +2 -2 lines
Log Message:
added check for too many urand values

File Contents

# User Rev Content
1 gregl 2.6 /* Copyright (c) 1998 Silicon Graphics, Inc. */
2 greg 1.1
3 gregl 2.5 /* SCCSid "$SunId$ SGI" */
4 greg 1.1
5     /*
6 greg 1.4 * random.h - header file for random(3) and urand() function.
7 greg 1.1 *
8     * 10/1/85
9     */
10    
11 greg 2.2 #ifdef MSDOS
12 greg 1.3
13 greg 2.3 #define random() ((long)rand()<<16^(long)rand()<<6^(long)rand()>>4)
14 greg 2.2
15     #define frandom() (rand()*(1./32768.))
16    
17     #else
18     #ifdef BSD
19    
20 greg 1.1 extern long random();
21    
22 greg 2.2 #define frandom() (random()*(1./2147483648.))
23 greg 1.3
24     #else
25    
26     extern long lrand48();
27     extern double drand48();
28    
29 greg 2.2 #define random() lrand48()
30     #define frandom() drand48()
31 greg 1.3
32     #endif
33 greg 2.2 #endif
34 greg 1.4
35 greg 2.4 #ifdef MC
36 gregl 2.5
37 greg 2.4 #define urand(i) frandom()
38 gregl 2.5 #define initurand(n) (n)
39    
40 greg 2.4 #else
41 gregl 2.5
42 gregl 2.6 extern unsigned short *urperm;
43 gregl 2.5 extern int urmask, initurand();
44    
45 greg 2.2 #define urand(i) ((urperm[(i)&urmask]+frandom())/(urmask+1))
46 gregl 2.5
47 greg 2.4 #endif