1b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 2b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* @(#)s_isnan.c 1.3 95/01/18 */ 3b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* 4b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * ==================================================== 5b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. 6b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 7b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Developed at SunSoft, a Sun Microsystems, Inc. business. 8b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Permission to use, copy, modify, and distribute this 9b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * software is freely granted, provided that this notice 10b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * is preserved. 11b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * ==================================================== 12b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */ 13b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 14b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* 15b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * ieee_isnan(x) returns 1 is x is nan, else 0; 16b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * no branching! 17b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */ 18b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 19b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include "fdlibm.h" 20b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 21b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#ifdef __STDC__ 22b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project int ieee_isnan(double x) 23b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#else 24b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project int ieee_isnan(x) 25b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project double x; 26b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#endif 27b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project{ 28b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project int hx,lx; 29b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project hx = (__HI(x)&0x7fffffff); 30b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project lx = __LO(x); 31b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project hx |= (unsigned)(lx|(-lx))>>31; 32b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project hx = 0x7ff00000 - hx; 33b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project return ((unsigned)(hx))>>31; 34b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project} 35