diff options
Diffstat (limited to 'libc/sysdeps/linux/sh/bits/huge_val.h')
| -rw-r--r-- | libc/sysdeps/linux/sh/bits/huge_val.h | 45 | 
1 files changed, 31 insertions, 14 deletions
diff --git a/libc/sysdeps/linux/sh/bits/huge_val.h b/libc/sysdeps/linux/sh/bits/huge_val.h index adbbbec8c..78d316dde 100644 --- a/libc/sysdeps/linux/sh/bits/huge_val.h +++ b/libc/sysdeps/linux/sh/bits/huge_val.h @@ -1,23 +1,24 @@  /* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).     Used by <stdlib.h> and <math.h> functions for overflow.     SH version. -   Copyright (C) 1992, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. +   Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000 +   Free Software Foundation, Inc.     This file is part of the GNU C Library.     The GNU C Library is free software; you can redistribute it and/or -   modify it under the terms of the GNU Library General Public License as -   published by the Free Software Foundation; either version 2 of the -   License, or (at your option) any later version. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 of the License, or (at your option) any later version.     The GNU C Library is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -   Library General Public License for more details. +   Lesser General Public License for more details. -   You should have received a copy of the GNU Library General Public -   License along with the GNU C Library; see the file COPYING.LIB.  If not, -   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -   Boston, MA 02111-1307, USA.  */ +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _MATH_H  # error "Never use <bits/huge_val.h> directly; include <math.h> instead." @@ -29,11 +30,19 @@  #ifdef	__GNUC__ -# define HUGE_VAL \ +# if __GNUC_PREREQ(2,95) + +#  define HUGE_VAL (0x1.0p2047) + +# else + +#  define HUGE_VAL \    (__extension__							      \     ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \      { __l: 0x000000007ff00000ULL }).__d) +# endif +  #else /* not GCC */  # include <endian.h> @@ -53,17 +62,25 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };  #endif	/* GCC.  */ -/* ISO C 9X extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */ +/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */ -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99  # ifdef __GNUC__ -#  define HUGE_VALF \ +#  if __GNUC_PREREQ(2,95) + +#   define HUGE_VALF (0x1.0p255f) + +#  else + +#   define HUGE_VALF \    (__extension__							      \     ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; })    \      { __l: 0x7f800000UL }).__d) +#  endif +  # else /* not GCC */  typedef union { unsigned char __c[4]; float __f; } __huge_valf_t; @@ -85,4 +102,4 @@ static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };     same as `double'.  */  # define HUGE_VALL HUGE_VAL -#endif /* __USE_ISOC9X.  */ +#endif /* __USE_ISOC99.  */  | 
