diff options
-rw-r--r-- | ChangeLog | 23 | ||||
-rw-r--r-- | bits/huge_val.h | 28 | ||||
-rw-r--r-- | bits/huge_val_flt128.h | 23 | ||||
-rw-r--r-- | bits/huge_valf.h | 28 | ||||
-rw-r--r-- | bits/huge_vall.h | 28 | ||||
-rw-r--r-- | math/Makefile | 6 | ||||
-rw-r--r-- | math/math.h | 25 | ||||
-rw-r--r-- | sysdeps/ia64/bits/huge_vall.h | 41 | ||||
-rw-r--r-- | sysdeps/ieee754/bits/huge_val.h | 53 | ||||
-rw-r--r-- | sysdeps/ieee754/bits/huge_valf.h | 51 | ||||
-rw-r--r-- | sysdeps/m68k/m680x0/bits/huge_vall.h | 41 | ||||
-rw-r--r-- | sysdeps/sh/bits/huge_val.h | 54 | ||||
-rw-r--r-- | sysdeps/sparc/bits/huge_vall.h | 47 | ||||
-rw-r--r-- | sysdeps/x86/bits/huge_vall.h | 41 |
14 files changed, 43 insertions, 446 deletions
diff --git a/ChangeLog b/ChangeLog index befd2ed2b1..e7849b168b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2017-08-31 Joseph Myers <joseph@codesourcery.com> + + * math/math.h: Do not include bits/huge_val.h, bits/huge_valf.h, + bits/huge_vall.h or bits/huge_val_flt128.h. + (HUGE_VAL): Define directly here. + [__USE_ISOC99] (HUGE_VALF): Likewise. + [__USE_ISOC99] (HUGE_VALL): Likewise. + [__HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)] + (HUGE_VAL_F128): Likewise. + * math/Makefile (headers): Remove bits/huge_val.h, + bits/huge_valf.h, bits/huge_vall.h and bits/huge_val_flt128.h. + * bits/huge_val.h: Remove. + * bits/huge_val_flt128.h: Likewise. + * bits/huge_valf.h: Likewise. + * bits/huge_vall.h: Likewise. + * sysdeps/ia64/bits/huge_vall.h: Likewise. + * sysdeps/ieee754/bits/huge_val.h: Likewise. + * sysdeps/ieee754/bits/huge_valf.h: Likewise. + * sysdeps/m68k/m680x0/bits/huge_vall.h: Likewise. + * sysdeps/sh/bits/huge_val.h: Likewise. + * sysdeps/sparc/bits/huge_vall.h: Likewise. + * sysdeps/x86/bits/huge_vall.h: Likewise. + 2017-08-31 Florian Weimer <fweimer@redhat.com> * elf/dl-addr-obj.c (_dl_addr_inside_object): Remove diff --git a/bits/huge_val.h b/bits/huge_val.h deleted file mode 100644 index e29a793a76..0000000000 --- a/bits/huge_val.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Stub `HUGE_VAL' constant. - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_val.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VAL (__builtin_huge_val()) -#else -# define HUGE_VAL 1e37 -#endif diff --git a/bits/huge_val_flt128.h b/bits/huge_val_flt128.h deleted file mode 100644 index 63c258e85c..0000000000 --- a/bits/huge_val_flt128.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Default `HUGE_VAL_F128' constant. - Copyright (C) 2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_val_flt128.h> directly; include <math.h> instead." -#endif - -#define HUGE_VAL_F128 (__builtin_huge_valf128 ()) diff --git a/bits/huge_valf.h b/bits/huge_valf.h deleted file mode 100644 index 4c48dab6c9..0000000000 --- a/bits/huge_valf.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Stub `HUGE_VALF' constant. - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_valf.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALF (__builtin_huge_valf()) -#else -# define HUGE_VALF 1e37f -#endif diff --git a/bits/huge_vall.h b/bits/huge_vall.h deleted file mode 100644 index df404e45f8..0000000000 --- a/bits/huge_vall.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Default `HUGE_VALL' constant. - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_vall.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALL (__builtin_huge_vall()) -#else -# define HUGE_VALL ((long double) HUGE_VAL) -#endif diff --git a/math/Makefile b/math/Makefile index c47a3a4a9f..01345fb775 100644 --- a/math/Makefile +++ b/math/Makefile @@ -22,15 +22,15 @@ subdir := math include ../Makeconfig # Installed header files. -headers := math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.h \ - bits/huge_valf.h bits/huge_vall.h bits/inf.h bits/nan.h \ +headers := math.h bits/mathcalls.h bits/mathinline.h \ + bits/inf.h bits/nan.h \ fpu_control.h complex.h bits/cmathcalls.h fenv.h \ bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \ bits/math-finite.h bits/math-vector.h \ bits/libm-simd-decl-stubs.h bits/iscanonical.h \ bits/flt-eval-method.h bits/fp-fast.h bits/fp-logb.h \ bits/long-double.h bits/mathcalls-helper-functions.h \ - bits/floatn.h bits/huge_val_flt128.h + bits/floatn.h # FPU support code. aux := setfpucw fpu_control diff --git a/math/math.h b/math/math.h index 7e41b0dd3a..dcccf8ea8c 100644 --- a/math/math.h +++ b/math/math.h @@ -37,18 +37,27 @@ __BEGIN_DECLS /* Gather machine dependent type support. */ #include <bits/floatn.h> -/* Get machine-dependent HUGE_VAL value (returned on overflow). - On all IEEE754 machines, this is +Infinity. */ -#include <bits/huge_val.h> - +/* Value returned on overflow. On all IEEE754 machines, this is + +Infinity. */ +#if __GNUC_PREREQ (3, 3) +# define HUGE_VAL (__builtin_huge_val ()) +#else +# define HUGE_VAL 1e10000 +#endif +#ifdef __USE_ISOC99 +# if __GNUC_PREREQ (3, 3) +# define HUGE_VALF (__builtin_huge_valf ()) +# define HUGE_VALL (__builtin_huge_vall ()) +# else +# define HUGE_VALF 1e10000f +# define HUGE_VALL 1e10000L +# endif +#endif #if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT) -# include <bits/huge_val_flt128.h> +# define HUGE_VAL_F128 (__builtin_huge_valf128 ()) #endif #ifdef __USE_ISOC99 -# include <bits/huge_valf.h> -# include <bits/huge_vall.h> - /* Get machine-dependent INFINITY value. */ # include <bits/inf.h> diff --git a/sysdeps/ia64/bits/huge_vall.h b/sysdeps/ia64/bits/huge_vall.h deleted file mode 100644 index 3e2b4eca10..0000000000 --- a/sysdeps/ia64/bits/huge_vall.h +++ /dev/null @@ -1,41 +0,0 @@ -/* `HUGE_VALL' constant for ia64 (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 2000-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_vall.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALL (__builtin_huge_vall()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VALL (__extension__ 0x1.0p32767L) -#else - -# define __HUGE_VALL_bytes { 0,0,0,0,0,0,0, 0x80, 0xff, 0x7f, 0,0,0,0,0,0} - -# define __huge_vall_t union { unsigned char __c[16]; long double __ld; } -# ifdef __GNUC__ -# define HUGE_VALL (__extension__ \ - ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld) -# else /* Not GCC. */ -static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; -# define HUGE_VALL (__huge_vall.__ld) -# endif /* GCC. */ - -#endif /* GCC 2.95 */ diff --git a/sysdeps/ieee754/bits/huge_val.h b/sysdeps/ieee754/bits/huge_val.h deleted file mode 100644 index fb3ba69c44..0000000000 --- a/sysdeps/ieee754/bits/huge_val.h +++ /dev/null @@ -1,53 +0,0 @@ -/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_val.h> directly; include <math.h> instead." -#endif - -/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ - -#if __GNUC_PREREQ(3,3) -# define HUGE_VAL (__builtin_huge_val()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VAL (__extension__ 0x1.0p2047) -#elif defined __GNUC__ - -# define HUGE_VAL \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ - { __l: 0x7ff0000000000000ULL }).__d) - -#else /* not GCC */ - -# include <endian.h> - -typedef union { unsigned char __c[8]; double __d; } __huge_val_t; - -# if __BYTE_ORDER == __BIG_ENDIAN -# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } -# endif -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } -# endif - -static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; -# define HUGE_VAL (__huge_val.__d) - -#endif /* GCC. */ diff --git a/sysdeps/ieee754/bits/huge_valf.h b/sysdeps/ieee754/bits/huge_valf.h deleted file mode 100644 index f24bcf452f..0000000000 --- a/sysdeps/ieee754/bits/huge_valf.h +++ /dev/null @@ -1,51 +0,0 @@ -/* `HUGE_VALF' constant for IEEE 754 machines (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_valf.h> directly; include <math.h> instead." -#endif - -/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALF (__builtin_huge_valf()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VALF (__extension__ 0x1.0p255f) -#elif defined __GNUC__ - -# define HUGE_VALF \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \ - { __l: 0x7f800000UL }).__d) - -#else /* not GCC */ - -typedef union { unsigned char __c[4]; float __f; } __huge_valf_t; - -# if __BYTE_ORDER == __BIG_ENDIAN -# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 } -# endif -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f } -# endif - -static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes }; -# define HUGE_VALF (__huge_valf.__f) - -#endif /* GCC. */ diff --git a/sysdeps/m68k/m680x0/bits/huge_vall.h b/sysdeps/m68k/m680x0/bits/huge_vall.h deleted file mode 100644 index 14a4483582..0000000000 --- a/sysdeps/m68k/m680x0/bits/huge_vall.h +++ /dev/null @@ -1,41 +0,0 @@ -/* `HUGE_VALL' constant for m68k (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_val.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALL (__builtin_huge_vall ()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VALL (__extension__ 0x1.0p32767L) -#elif defined __GNUC__ - -# define HUGE_VALL \ - (__extension__ \ - ((union { unsigned long __l[3]; long double __ld; }) \ - { __l: { 0x7fff0000UL, 0x80000000UL, 0UL } }).__ld) - -#else /* not GCC */ - -static union { unsigned char __c[12]; long double __ld; } __huge_vall = - { { 0x7f, 0xff, 0, 0, 0x80, 0, 0, 0, 0, 0, 0, 0 } }; -# define HUGE_VALL (__huge_vall.__ld) - -#endif /* GCC 2.95. */ diff --git a/sysdeps/sh/bits/huge_val.h b/sysdeps/sh/bits/huge_val.h deleted file mode 100644 index aab7a23b17..0000000000 --- a/sysdeps/sh/bits/huge_val.h +++ /dev/null @@ -1,54 +0,0 @@ -/* `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-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_val.h> directly; include <math.h> instead." -#endif - -/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ - -#if __GNUC_PREREQ(3,3) -# define HUGE_VAL (__builtin_huge_val()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VAL (__extension__ 0x1.0p2047) -#elif defined __GNUC__ - -# define HUGE_VAL \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ - { __l: 0x000000007ff00000ULL }).__d) - -#else /* not GCC */ - -# include <endian.h> - -typedef union { unsigned char __c[8]; double __d; } __huge_val_t; - -# if __BYTE_ORDER == __BIG_ENDIAN -# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 } -# endif -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define __HUGE_VAL_bytes { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } -# endif - -static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; -# define HUGE_VAL (__huge_val.__d) - -#endif /* GCC. */ diff --git a/sysdeps/sparc/bits/huge_vall.h b/sysdeps/sparc/bits/huge_vall.h deleted file mode 100644 index 6704bc0528..0000000000 --- a/sysdeps/sparc/bits/huge_vall.h +++ /dev/null @@ -1,47 +0,0 @@ -/* `HUGE_VALL' constant for IEEE 754 machines (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_vall.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALL (__builtin_huge_vall()) -#else -# include <bits/wordsize.h> -# if __WORDSIZE == 32 -# define HUGE_VALL ((long double) HUGE_VAL) -# elif __GNUC_PREREQ(2,96) -# define HUGE_VALL (__extension__ 0x1.0p32767L) -# elif defined __GNUC__ - -# define HUGE_VALL \ - (__extension__ \ - ((union { struct { unsigned long __h, __l; } __i; long double __d; }) \ - { __i: { __h: 0x7fff000000000000UL, __l: 0 } }).__d) - -# else /* not GCC */ - -typedef union { unsigned char __c[16]; long double __d; } __huge_vall_t; -# define __HUGE_VALL_bytes { 0x7f, 0xff, 0,0,0,0,0,0,0,0,0,0,0,0,0,0 } -static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; -# define HUGE_VALL (__huge_vall.__d) - -# endif /* GCC. */ -#endif /* GCC 3.3. */ diff --git a/sysdeps/x86/bits/huge_vall.h b/sysdeps/x86/bits/huge_vall.h deleted file mode 100644 index 9749bacc4b..0000000000 --- a/sysdeps/x86/bits/huge_vall.h +++ /dev/null @@ -1,41 +0,0 @@ -/* `HUGE_VALL' constant for ix86 (where it is infinity). - Used by <stdlib.h> and <math.h> functions for overflow. - Copyright (C) 1992-2017 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 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _MATH_H -# error "Never use <bits/huge_vall.h> directly; include <math.h> instead." -#endif - -#if __GNUC_PREREQ(3,3) -# define HUGE_VALL (__builtin_huge_vall()) -#elif __GNUC_PREREQ(2,96) -# define HUGE_VALL (__extension__ 0x1.0p32767L) -#else - -# define __HUGE_VALL_bytes { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } - -# define __huge_vall_t union { unsigned char __c[12]; long double __ld; } -# ifdef __GNUC__ -# define HUGE_VALL (__extension__ \ - ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld) -# else /* Not GCC. */ -static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; -# define HUGE_VALL (__huge_vall.__ld) -# endif /* GCC. */ - -#endif /* GCC 2.95 */ |