ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/frexp.c
Revision: 1.1
Committed: Thu May 11 21:24:16 1989 UTC (35 years ago) by greg
Content type: text/plain
Branch: MAIN
Log Message:
Initial revision

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2     static char SCCSid[] = "$SunId$ LBL";
3     #endif
4    
5     double
6     frexp(x, ip) /* call it paranoia, I've seen the lib version */
7     register double x;
8     int *ip;
9     {
10     int neg;
11     register int i;
12    
13     if (neg = (x < 0.0))
14     x = -x;
15     else if (x == 0.0) {
16     *ip = 0;
17     return(0.0);
18     }
19     if (x < 0.5)
20     for (i = 0; x < 0.5; i--)
21     x *= 2.0;
22     else
23     for (i = 0; x >= 1.0; i++)
24     x /= 2.0;
25     *ip = i;
26     if (neg)
27     return(-x);
28     else
29     return(x);
30     }