chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / sysdeps / ieee754 / dbl-64 / wordsize-64 / s_isnan.c
1 /* @(#)s_isnan.c 5.1 93/09/24 */
2 /*
3  * ====================================================
4  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
5  *
6  * Developed at SunPro, a Sun Microsystems, Inc. business.
7  * Permission to use, copy, modify, and distribute this
8  * software is freely granted, provided that this notice
9  * is preserved.
10  * ====================================================
11  */
12
13 /*
14  * isnan(x) returns 1 is x is nan, else 0;
15  * no branching!
16  */
17
18 #include "math.h"
19 #include "math_private.h"
20
21 #ifdef __STDC__
22         int __isnan(double x)
23 #else
24         int __isnan(x)
25         double x;
26 #endif
27 {
28         int64_t hx;
29         EXTRACT_WORDS64(hx,x);
30         hx &= UINT64_C(0x7fffffffffffffff);
31         hx = UINT64_C(0x7ff0000000000000) - hx;
32         return (int)(((uint64_t)hx)>>63);
33 }
34 hidden_def (__isnan)
35 weak_alias (__isnan, isnan)
36 #ifdef NO_LONG_DOUBLE
37 strong_alias (__isnan, __isnanl)
38 weak_alias (__isnan, isnanl)
39 #endif