From a86573f4715e5f9638a8ae5e298203dbed7481b9 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 15 Mar 2004 21:44:11 +0000 Subject: * math/Makefile (headers): Add bits/huge_valf.h, bits/huge_vall.h, and bits/inf.h. * math/math.h: Include them. * sysdeps/alpha/fpu/bits/mathdef.h, sysdeps/arm/fpu/bits/mathdef.h, sysdeps/generic/bits/mathdef.h, sysdeps/i386/fpu/bits/mathdef.h, sysdeps/ia64/fpu/bits/mathdef.h, sysdeps/m68k/fpu/bits/mathdef.h, sysdeps/mips/fpu/bits/mathdef.h, sysdeps/powerpc/fpu/bits/mathdef.h, sysdeps/sh/sh4/fpu/bits/mathdef.h, sysdeps/sparc/fpu/bits/mathdef.h, sysdeps/x86_64/fpu/bits/mathdef.h: Remove INFINITY. * sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. (HUGE_VALF, HUGE_VALL): Remove. * sysdeps/ieee754/bits/huge_val.h: Likewise. * sysdeps/sh/bits/huge_val.h: Likewise. * sysdeps/generic/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. * sysdeps/generic/bits/huge_valf.h: New file. * sysdeps/generic/bits/huge_vall.h: New file. * sysdeps/generic/bits/inf.h: New file. * sysdeps/ieee754/bits/huge_valf.h: New file. * sysdeps/ieee754/bits/inf.h: New file. * sysdeps/i386/bits/huge_val.h: Remove file. * sysdeps/i386/bits/huge_vall.h: New file. * sysdeps/ia64/bits/huge_val.h: Remove file. * sysdeps/ia64/bits/huge_vall.h: New file. * sysdeps/ieee754/ldbl-128/bits/huge_vall.h: New file. * sysdeps/m68k/bits/huge_val.h: Remove file. * sysdeps/m68k/bits/huge_vall.h: New file. * sysdeps/s390/bits/huge_val.h: Remove file. * sysdeps/sh/sh4/fpu/bits/huge_val.h: Remove file. * sysdeps/sparc/bits/huge_vall.h: New file. * sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Remove file. * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Remove file. * sysdeps/ieee754/bits/nan.h (NAN): Use __builtin_nanf. * sysdeps/mips/bits/nan.h (NAN): Likewise. 2004-03-15 Richard Henderson * math/Makefile (headers): Add bits/huge_valf.h, bits/huge_vall.h, and bits/inf.h. * math/math.h: Include them. * sysdeps/alpha/fpu/bits/mathdef.h, sysdeps/arm/fpu/bits/mathdef.h, sysdeps/generic/bits/mathdef.h, sysdeps/i386/fpu/bits/mathdef.h, sysdeps/ia64/fpu/bits/mathdef.h, sysdeps/m68k/fpu/bits/mathdef.h, sysdeps/mips/fpu/bits/mathdef.h, sysdeps/powerpc/fpu/bits/mathdef.h, sysdeps/sh/sh4/fpu/bits/mathdef.h, sysdeps/sparc/fpu/bits/mathdef.h, sysdeps/x86_64/fpu/bits/mathdef.h: Remove INFINITY. * sysdeps/arm/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. (HUGE_VALF, HUGE_VALL): Remove. * sysdeps/ieee754/bits/huge_val.h: Likewise. * sysdeps/sh/bits/huge_val.h: Likewise. * sysdeps/generic/bits/huge_val.h (HUGE_VAL): Use __builtin_huge_val. * sysdeps/generic/bits/huge_valf.h: New file. * sysdeps/generic/bits/huge_vall.h: New file. * sysdeps/generic/bits/inf.h: New file. * sysdeps/ieee754/bits/huge_valf.h: New file. * sysdeps/ieee754/bits/inf.h: New file. * sysdeps/i386/bits/huge_val.h: Remove file. * sysdeps/i386/bits/huge_vall.h: New file. * sysdeps/ia64/bits/huge_val.h: Remove file. * sysdeps/ia64/bits/huge_vall.h: New file. * sysdeps/ieee754/ldbl-128/bits/huge_vall.h: New file. * sysdeps/m68k/bits/huge_val.h: Remove file. * sysdeps/m68k/bits/huge_vall.h: New file. * sysdeps/s390/bits/huge_val.h: Remove file. * sysdeps/sh/sh4/fpu/bits/huge_val.h: Remove file. * sysdeps/sparc/bits/huge_vall.h: New file. * sysdeps/sparc/sparc32/fpu/bits/huge_val.h: Remove file. * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Remove file. * sysdeps/ieee754/bits/nan.h (NAN): Use __builtin_nanf. * sysdeps/mips/bits/nan.h (NAN): Likewise. --- sysdeps/generic/bits/huge_val.h | 9 ++++++--- sysdeps/generic/bits/huge_valf.h | 29 +++++++++++++++++++++++++++++ sysdeps/generic/bits/huge_vall.h | 29 +++++++++++++++++++++++++++++ sysdeps/generic/bits/inf.h | 33 +++++++++++++++++++++++++++++++++ sysdeps/generic/bits/mathdef.h | 6 +----- 5 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 sysdeps/generic/bits/huge_valf.h create mode 100644 sysdeps/generic/bits/huge_vall.h create mode 100644 sysdeps/generic/bits/inf.h (limited to 'sysdeps/generic/bits') diff --git a/sysdeps/generic/bits/huge_val.h b/sysdeps/generic/bits/huge_val.h index 545b8a615b..e102ac3220 100644 --- a/sysdeps/generic/bits/huge_val.h +++ b/sysdeps/generic/bits/huge_val.h @@ -1,6 +1,6 @@ /* Stub `HUGE_VAL' constant. Used by and functions for overflow. - Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1992, 1996, 1997, 2004 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 @@ -22,5 +22,8 @@ # error "Never use directly; include instead." #endif - -#define HUGE_VAL 1e37 +#if __GNUC_PREREQ(3,3) +# define HUGE_VAL (__builtin_huge_val()) +#else +# define HUGE_VAL 1e37 +#endif diff --git a/sysdeps/generic/bits/huge_valf.h b/sysdeps/generic/bits/huge_valf.h new file mode 100644 index 0000000000..4cb5ebdfcb --- /dev/null +++ b/sysdeps/generic/bits/huge_valf.h @@ -0,0 +1,29 @@ +/* Stub `HUGE_VALF' constant. + Used by and functions for overflow. + Copyright (C) 1992, 1996, 1997, 2004 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _MATH_H +# error "Never use directly; include instead." +#endif + +#if __GNUC_PREREQ(3,3) +# define HUGE_VALF (__builtin_huge_valf()) +#else +# define HUGE_VALF 1e37f +#endif diff --git a/sysdeps/generic/bits/huge_vall.h b/sysdeps/generic/bits/huge_vall.h new file mode 100644 index 0000000000..d5e8e2237b --- /dev/null +++ b/sysdeps/generic/bits/huge_vall.h @@ -0,0 +1,29 @@ +/* Default `HUGE_VALL' constant. + Used by and functions for overflow. + Copyright (C) 1992, 1996, 1997, 2004 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _MATH_H +# error "Never use directly; include 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/sysdeps/generic/bits/inf.h b/sysdeps/generic/bits/inf.h new file mode 100644 index 0000000000..2d526adb23 --- /dev/null +++ b/sysdeps/generic/bits/inf.h @@ -0,0 +1,33 @@ +/* Default `INFINITY' constant. + Copyright (C) 2004 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _MATH_H +# error "Never use directly; include instead." +#endif + +/* If we don't have real infinity, then we're supposed to produce a float + value that overflows at translation time, which is required to produce + a diagnostic. GCC's __builtin_inff produces a quite nice diagnostic + that tells the user that the target doesn't support infinities. */ + +#if __GNUC_PREREQ(3,3) +# define INFINITY (__builtin_inff()) +#else +# define INFINITY (1e9999f) +#endif diff --git a/sysdeps/generic/bits/mathdef.h b/sysdeps/generic/bits/mathdef.h index d08dc3820d..00c67241a0 100644 --- a/sysdeps/generic/bits/mathdef.h +++ b/sysdeps/generic/bits/mathdef.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000, 2004 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 @@ -30,10 +30,6 @@ typedef double float_t; /* `float' expressions are evaluated as typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Define `INFINITY' as value of type `float'. */ -# define INFINITY HUGE_VALF - - /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN 2147483647 -- cgit v1.2.3