glibc/sysdeps/powerpc/fpu/s_isnan.c
Ulrich Drepper f83af095b6 Update.
* include/math.h: Declare __isinf_internal, __isinfl_internal,
	__isnan_internal, and __isnanl_internal.
	* stdio-common/printf_fp.c: Use INTUSE for calls to __isinf, __isinfl,
	__isnan, and __isnanl.
	* stdio-common/printf_size.c: Likewise.
	* sysdeps/generic/printf_fphex.c: Likewise.
	* sysdeps/i386/fpu/s_isinfl.c: Also define _internal alias.
	* sysdeps/i386/fpu/s_isnanl.c: Likewise.
	* sysdeps/ia64/fpu/s_isinf.S: Likewise.
	* sysdeps/ia64/fpu/s_isnan.S: Likewise.
	* sysdeps/ieee754/dbl-64/s_isinf.c: Likewise.
	* sysdeps/ieee754/dbl-64/s_isnan.c: Likewise.
	* sysdeps/ieee754/flt-32/s_isinff.c: Likewise.
	* sysdeps/ieee754/flt-32/s_isnanf.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_isinfl.c: Likewise.
	* sysdeps/ieee754/ldbl-128/s_isnanl.c: Likewise.
	* sysdeps/ieee754/ldbl-96/s_isinfl.c: Likewise.
	* sysdeps/m68k/s_isinfl.c: Likewise.
	* sysdeps/m68k/fpu/s_isinf.c: Likewise.
	* sysdeps/powerpc/fpu/s_isnan.c: Likewise.
2002-04-14 17:55:43 +00:00

55 lines
1.6 KiB
C

/* Return 1 if argument is a NaN, else 0.
Copyright (C) 1997, 2000, 2002 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 Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/* Ugly kludge to avoid declarations. */
#define __isnanf __Xisnanf
#define isnanf Xisnanf
#include "math.h"
#include <fenv_libc.h>
int
__isnan (x)
double x;
{
fenv_t savedstate;
int result;
savedstate = fegetenv_register ();
reset_fpscr_bit (FPSCR_VE);
result = !(x == x);
fesetenv_register (savedstate);
return result;
}
INTDEF(__isnan)
weak_alias (__isnan, isnan)
/* It turns out that the 'double' version will also always work for
single-precision. */
#undef __isnanf
#undef isnanf
strong_alias (__isnan, __isnanf)
INTDEF(__isnanf)
weak_alias (__isnanf, isnanf)
#ifdef NO_LONG_DOUBLE
strong_alias (__isnan, __isnanl)
INTDEF(__isnanl)
weak_alias (__isnan, isnanl)
#endif