• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/usr/include/bits/
1/* `NAN' constant for IEEE 754 machines.
2   Copyright (C) 1992,1996,1997,1999,2004,2006 Free Software Foundation, Inc.
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20#ifndef _MATH_H
21# error "Never use <bits/nan.h> directly; include <math.h> instead."
22#endif
23
24
25/* IEEE Not A Number.  */
26
27#if __GNUC_PREREQ(3,3)
28
29# define NAN	(__builtin_nanf (""))
30
31#elif defined __GNUC__
32
33# define NAN \
34  (__extension__							      \
35   ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; })  \
36    { __l: 0x7fc00000UL }).__d)
37
38#else
39
40# include <endian.h>
41
42# if __BYTE_ORDER == __BIG_ENDIAN
43#  define __nan_bytes		{ 0x7f, 0xc0, 0, 0 }
44# endif
45# if __BYTE_ORDER == __LITTLE_ENDIAN
46#  define __nan_bytes		{ 0, 0, 0xc0, 0x7f }
47# endif
48
49static union { unsigned char __c[4]; float __d; } __nan_union
50    __attribute_used__ = { __nan_bytes };
51# define NAN	(__nan_union.__d)
52
53#endif	/* GCC.  */
54