diff options
| author | Eric Andersen <andersen@codepoet.org> | 2001-11-22 14:04:29 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2001-11-22 14:04:29 +0000 | 
| commit | 7ce331c01ce6eb7b3f5c715a38a24359da9c6ee2 (patch) | |
| tree | 3a7e8476e868ae15f4da1b7ce26b2db6f434468c /libm/s_logb.c | |
| parent | c117dd5fb183afb1a4790a6f6110d88704be6bf8 (diff) | |
| download | uClibc-alpine-7ce331c01ce6eb7b3f5c715a38a24359da9c6ee2.tar.bz2 uClibc-alpine-7ce331c01ce6eb7b3f5c715a38a24359da9c6ee2.tar.xz  | |
Totally rework the math library, this time based on the MacOs X
math library (which is itself based on the math lib from FreeBSD).
 -Erik
Diffstat (limited to 'libm/s_logb.c')
| -rw-r--r-- | libm/s_logb.c | 44 | 
1 files changed, 44 insertions, 0 deletions
diff --git a/libm/s_logb.c b/libm/s_logb.c new file mode 100644 index 000000000..7ec1c3696 --- /dev/null +++ b/libm/s_logb.c @@ -0,0 +1,44 @@ +#if !defined(__ppc__) +/* @(#)s_logb.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice  + * is preserved. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_logb.c,v 1.8 1995/05/10 20:47:50 jtc Exp $"; +#endif + +/* + * double logb(x) + * IEEE 754 logb. Included to pass IEEE test suite. Not recommend. + * Use ilogb instead. + */ + +#include "math.h" +#include "math_private.h" + +#ifdef __STDC__ +	double logb(double x) +#else +	double logb(x) +	double x; +#endif +{ +	int32_t lx,ix; +	EXTRACT_WORDS(ix,lx,x); +	ix &= 0x7fffffff;			/* high |x| */ +	if((ix|lx)==0) return -1.0/fabs(x); +	if(ix>=0x7ff00000) return x*x; +	if((ix>>=20)==0) 			/* IEEE 754 logb */ +		return -1022.0;  +	else +		return (double) (ix-1023);  +} +#endif /* !__ppc__ */  | 
