gonzui


Format: Advanced Search

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

Search this content:

    1: /* @(#)s_logb.c 5.1 93/09/24 */
    2: /*
    3:  * ====================================================
    4:  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
    5:  *
    6:  * Developed at SunPro, a Sun Microsystems, Inc. business.
    7:  * Permission to use, copy, modify, and distribute this
    8:  * software is freely granted, provided that this notice 
    9:  * is preserved.
   10:  * ====================================================
   11:  */
   12: 
   13: /*
   14:  * double logb(x)
   15:  * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
   16:  * Use ilogb instead.
   17:  */
   18: 
   19: #include "math.h"
   20: #include "math_private.h"
   21: 
   22: double
   23: logb(double x)
   24: {
   25:         int32_t lx,ix;
   26:         EXTRACT_WORDS(ix,lx,x);
   27:         ix &= 0x7fffffff;                      /* high |x| */
   28:         if((ix|lx)==0) return -1.0/fabs(x);
   29:         if(ix>=0x7ff00000) return x*x;
   30:         if((ix>>=20)==0)                       /* IEEE 754 logb */
   31:                 return -1022.0; 
   32:         else
   33:                 return (double) (ix-1023); 
   34: }
   35: #include <sys/cdefs.h>
   36: #include <float.h>
   37: #if     LDBL_MANT_DIG == 53
   38: #ifdef  lint
   39: #else   /* lint */
   40: __weak_alias(logbl, logb);
   41: #endif  /* lint */
   42: #endif  /* LDBL_MANT_DIG == 53 */