summary refs log tree commit diff
path: root/sysdeps/i386/isnanl.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-11-16 00:44:18 +0000
committerRoland McGrath <roland@gnu.org>1995-11-16 00:44:18 +0000
commitec967c06ac7474fa58266ea309d6488ee3c53851 (patch)
treedcea408ef904d340938ac85866816b4c024319d8 /sysdeps/i386/isnanl.c
parent2ede96c9362f1950ef309f4fb9662aea60fe9777 (diff)
downloadglibc-ec967c06ac7474fa58266ea309d6488ee3c53851.tar.gz
glibc-ec967c06ac7474fa58266ea309d6488ee3c53851.tar.xz
glibc-ec967c06ac7474fa58266ea309d6488ee3c53851.zip
Wed Nov 15 19:22:07 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
	* sysdeps/mach/hurd/dl-sysdep.c: Include _itoa.h from stdio-common
	instead of stdio.
	(_dl_sysdep_start): If passed user entry is zero and
	EXEC_STACK_ARGS flag set, reset user entry to &_start.

	* elf/rtld.c (dl_main): Only call _dl_setup_hash if there is a
	DT_HASH element.

	* libc-symbols.h [HAVE_ELF] (symbol_set_declare): Gratuitously
	repeat weak decl using weak_symbol macro, in case using broken GCC
	(<2.8).

Wed Nov 15 18:49:55 1995  Ulrich Drepper  <drepper@ipd.info.uni-karlsruhe.de>

	* sysdeps/i386/isnanl.c: New file.
	* sysdeps/i386/isinfl.c: New file.
Diffstat (limited to 'sysdeps/i386/isnanl.c')
-rw-r--r--sysdeps/i386/isnanl.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/sysdeps/i386/isnanl.c b/sysdeps/i386/isnanl.c
new file mode 100644
index 0000000000..de10c07532
--- /dev/null
+++ b/sysdeps/i386/isnanl.c
@@ -0,0 +1,43 @@
+/* Check `long double' for Not A Number.  i386 FPU version.
+Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB.  If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#include <math.h>
+#include "ieee754.h"
+
+#undef __isnanl
+#undef isnanl
+
+
+/* Return nonzero if VALUE is not a number.  */
+int
+__isnanl (long double value)
+{
+  union ieee854_long_double u;
+
+  u.d = value;
+
+  /* Intel's interpretation of the IEEE 854 standard defines NaN to
+     have the maximum possible exponent and the MSB and at least one
+     more bit of the mantissa set.  */
+  return ((u.ieee.exponent & 0x7fff) == 0x7fff
+	  && ((u.ieee.mantissa0 & 0x80000000) != 0)
+	  && ((u.ieee.mantissa0 & 0x7fffffff) != 0 || u.ieee.mantissa1 != 0));
+}
+
+weak_alias (__isnanl, isnanl);