t2ex/bsd_source/lib/libc/src_bsd/math/s_logb.c | bare source | permlink (0.01 seconds) |
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 */