gonzui


Format: Advanced Search

t2ex/bsd_source/lib/libc/src_bsd/math/s_frexpf.cbare sourcepermlink (0.01 seconds)

Search this content:

    1: /* s_frexpf.c -- float version of s_frexp.c.
    2:  * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
    3:  */
    4: 
    5: /*
    6:  * ====================================================
    7:  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
    8:  *
    9:  * Developed at SunPro, a Sun Microsystems, Inc. business.
   10:  * Permission to use, copy, modify, and distribute this
   11:  * software is freely granted, provided that this notice 
   12:  * is preserved.
   13:  * ====================================================
   14:  */
   15: 
   16: #include "math.h"
   17: #include "math_private.h"
   18: 
   19: static const float
   20: two25 =  3.3554432000e+07; /* 0x4c000000 */
   21: 
   22: float
   23: frexpf(float x, int *eptr)
   24: {
   25:         int32_t hx,ix;
   26:         GET_FLOAT_WORD(hx,x);
   27:         ix = 0x7fffffff&hx;
   28:         *eptr = 0;
   29:         if(ix>=0x7f800000||(ix==0)) return x;  /* 0,inf,nan */
   30:         if (ix<0x00800000) {           /* subnormal */
   31:             x *= two25;
   32:             GET_FLOAT_WORD(hx,x);
   33:             ix = hx&0x7fffffff;
   34:             *eptr = -25;
   35:         }
   36:         *eptr += (ix>>23)-126;
   37:         hx = (hx&0x807fffff)|0x3f000000;
   38:         SET_FLOAT_WORD(x,hx);
   39:         return x;
   40: }