diff options
Diffstat (limited to 'libquadmath/math/isnanq.c')
-rw-r--r-- | libquadmath/math/isnanq.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/libquadmath/math/isnanq.c b/libquadmath/math/isnanq.c index 4462d01..6334098 100644 --- a/libquadmath/math/isnanq.c +++ b/libquadmath/math/isnanq.c @@ -1,4 +1,4 @@ -/* isnanq.c -- __float128 version of s_isnan.c. +/* s_isnanl.c -- long double version of s_isnan.c. * Conversion to long double by Jakub Jelinek, jj@ultra.linux.cz. */ @@ -13,15 +13,23 @@ * ==================================================== */ +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: $"; +#endif + +/* + * isnanq(x) returns 1 is x is nan, else 0; + * no branching! + */ + #include "quadmath-imp.h" -int -isnanq (const __float128 x) +int isnanq(__float128 x) { - int64_t hx,lx; - GET_FLT128_WORDS64(hx,lx,x); - hx &= 0x7fffffffffffffffLL; - hx |= (uint64_t)(lx|(-lx))>>63; - hx = 0x7fff000000000000LL - hx; - return (int)((uint64_t)hx>>63); + int64_t hx,lx; + GET_FLT128_WORDS64(hx,lx,x); + hx &= 0x7fffffffffffffffLL; + hx |= (uint64_t)(lx|(-lx))>>63; + hx = 0x7fff000000000000LL - hx; + return (int)((uint64_t)hx>>63); } |