File: [cvs.NetBSD.org] / src / lib / libm / src / s_isnan.c (download)
Revision 1.7, Thu Sep 22 16:44:46 1994 UTC (29 years, 6 months ago) by jtc
Branch: MAIN
Changes since 1.6: +2 -2
lines
LIBM_SCCS must be defined for the RCS ID to be defined.
This library will soon be used by DJGPP. And since memory is often tight
on DOS machines, there is little benifit to be had from including RCS IDs.
|
/* @(#)s_isnan.c 5.1 93/09/24 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
#if defined(LIBM_SCCS) && !defined(lint)
static char rcsid[] = "$Id: s_isnan.c,v 1.7 1994/09/22 16:44:46 jtc Exp $";
#endif
/*
* isnan(x) returns 1 is x is nan, else 0;
* no branching!
*/
#include "math.h"
#include "math_private.h"
#ifdef __STDC__
int isnan(double x)
#else
int isnan(x)
double x;
#endif
{
int32_t hx,lx;
EXTRACT_WORDS(hx,lx,x);
hx &= 0x7fffffff;
hx |= (u_int32_t)(lx|(-lx))>>31;
hx = 0x7ff00000 - hx;
return (int)((u_int32_t)(hx))>>31;
}