aboutsummaryrefslogtreecommitdiff
path: root/libquadmath/math/isnanq.c
diff options
context:
space:
mode:
Diffstat (limited to 'libquadmath/math/isnanq.c')
-rw-r--r--libquadmath/math/isnanq.c26
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);
}