1 /* s_logbl.c -- long double version of s_logb.c.
5 * ====================================================
6 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
8 * Developed at SunPro, a Sun Microsystems, Inc. business.
9 * Permission to use, copy, modify, and distribute this
10 * software is freely granted, provided that this notice
12 * ====================================================
16 * long double logbl(x)
17 * IEEE 754 logb. Included to pass IEEE test suite. Not recommend.
22 #include <math_private.h>
25 __logbl (long double x
)
29 GET_LDOUBLE_WORDS (es
, ix
, lx
, x
);
30 es
&= 0x7fff; /* exponent */
31 if ((es
| ix
| lx
) == 0)
32 return -1.0 / fabsl (x
);
35 if (es
== 0) /* IEEE 754 logb */
37 /* POSIX specifies that denormal number is treated as
38 though it were normalized. */
40 es
= -(__builtin_clz (lx
) + 32);
42 es
= -__builtin_clz (ix
);
44 return (long double) (es
- 16383);
47 weak_alias (__logbl
, logbl
)