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