Implement __isinf_nsl for IBM long double
authorAndreas Schwab <schwab@linux-m68k.org>
Mon, 10 Oct 2011 18:43:38 +0000 (20:43 +0200)
committerAndreas Schwab <schwab@linux-m68k.org>
Mon, 10 Oct 2011 19:39:59 +0000 (21:39 +0200)
ChangeLog
sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c [new file with mode: 0644]

index de8e8aa..484c139 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-10  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c: New file.
+
 2011-10-09  Ulrich Drepper  <drepper@gmail.com>
 
        * po/ja.po: Update from translation team.
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c b/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c
new file mode 100644 (file)
index 0000000..edeaba5
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * __isinf_nsl(x) returns != 0 if x is ±inf, else 0;
+ * no branching!
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+int
+__isinf_nsl (long double x)
+{
+       int64_t hx,lx;
+       GET_LDOUBLE_WORDS64(hx,lx,x);
+       return !((lx & 0x7fffffffffffffffLL)
+                | ((hx & 0x7fffffffffffffffLL) ^ 0x7ff0000000000000LL));
+}