home *** CD-ROM | disk | FTP | other *** search
- /* @(#)frexp.c 4.1 (Berkeley) 12/21/80 */
- /*
- the call
- x = frexp(arg,&exp);
- must return a double fp quantity x which is <1.0
- and the corresponding binary exponent "exp".
- such that
- arg = x*2^exp
- */
-
- double
- frexp(x,i)
- double x;
- int *i;
- {
- int neg;
- int j;
- j = 0;
- neg = 0;
- if(x<0){
- x = -x;
- neg = 1;
- }
- if(x>1.0)
- while(x>1){
- j = j+1;
- x = x/2;
- }
- else if(x<0.5)
- while(x<0.5){
- j = j-1;
- x = 2*x;
- }
- *i = j;
- if(neg) x = -x;
- return(x);
- }