/* @(#)s_ilogb.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
* ====================================================
static char rcsid
[] = "$Id: s_ilogb.c,v 1.4 1994/03/03 17:04:38 jtc Exp $";
* return the binary exponent of non-zero x
* ilogb(inf/NaN) = 0x7fffffff (no signal is raised)
#include <machine/endian.h>
#if BYTE_ORDER == LITTLE_ENDIAN
hx
= (*(n0
+(unsigned*)&x
))&0x7fffffff; /* high word of x */
return 0x80000001; /* ilogb(0) = 0x80000001 */
for (ix
= -1043; lx
>0; lx
<<=1) ix
-=1;
for (ix
= -1022,hx
<<=11; hx
>0; hx
<<=1) ix
-=1;
else if (hx
<0x7ff00000) return (hx
>>20)-1023;