[BACK]Return to s_isnan.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libm / src

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;
}