gonzui


Format: Advanced Search

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

Search this content:

    1: /* s_ilogbf.c -- float version of s_ilogb.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: int
   20: ilogbf(float x)
   21: {
   22:         int32_t hx,ix;
   23: 
   24:         GET_FLOAT_WORD(hx,x);
   25:         hx &= 0x7fffffff;
   26:         if(hx<0x00800000) {
   27:             if(hx==0) 
   28:                 return 0x80000001;    /* ilogb(0) = 0x80000001 */
   29:             else                       /* subnormal x */
   30:                 for (ix = -126,hx<<=8; hx>0; hx<<=1) ix -=1;
   31:             return ix;
   32:         }
   33:         else if (hx<0x7f800000) return (hx>>23)-127;
   34:         else return 0x7fffffff;
   35: }