15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/* @(#)s_isnan.c 1.3 95/01/18 */
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ====================================================
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Developed at SunSoft, a Sun Microsystems, Inc. business.
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Permission to use, copy, modify, and distribute this
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * software is freely granted, provided that this notice
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * is preserved.
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * ====================================================
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) */
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/*
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ieee_isnan(x) returns 1 is x is nan, else 0;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * no branching!
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "fdlibm.h"
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifdef __STDC__
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	int ieee_isnan(double x)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	int ieee_isnan(x)
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	double x;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch{
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	int hx,lx;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)	hx = (__HI(x)&0x7fffffff);
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	lx = __LO(x);
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch	hx |= (unsigned)(lx|(-lx))>>31;
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch	hx = 0x7ff00000 - hx;
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch	return ((unsigned)(hx))>>31;
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch