home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Science / Science.zip / gmt_os2.zip / src / math / s_isnan.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-16  |  727 b   |  35 lines

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