mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
* 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 <rth@redhat.com> * 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.
This commit is contained in:
parent
e3b22ad379
commit
a86573f471
40
ChangeLog
40
ChangeLog
@ -1,3 +1,43 @@
|
||||
2004-03-15 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* 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 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* stdio-common/vfscanf.c: Simplify error handling macros. Use
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Stub `HUGE_VAL' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
#define HUGE_VAL 1e37
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
# define HUGE_VAL (__builtin_huge_val())
|
||||
#else
|
||||
# define HUGE_VAL 1e37
|
||||
#endif
|
||||
|
29
bits/huge_valf.h
Normal file
29
bits/huge_valf.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* Stub `HUGE_VALF' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <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
|
29
bits/huge_vall.h
Normal file
29
bits/huge_vall.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* Default `HUGE_VALL' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <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
|
33
bits/inf.h
Normal file
33
bits/inf.h
Normal file
@ -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 <bits/inf.h> directly; include <math.h> 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
|
@ -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
|
||||
|
@ -22,8 +22,9 @@ subdir := math
|
||||
|
||||
# Installed header files.
|
||||
headers := math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.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/huge_valf.h bits/huge_vall.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
|
||||
|
||||
# Internal header files.
|
||||
distribute := math_ldbl.h math_private.h machine/asm.h
|
||||
|
11
math/math.h
11
math/math.h
@ -31,15 +31,20 @@ __BEGIN_DECLS
|
||||
/* Get machine-dependent HUGE_VAL value (returned on overflow).
|
||||
On all IEEE754 machines, this is +Infinity. */
|
||||
#include <bits/huge_val.h>
|
||||
#ifdef __USE_ISOC99
|
||||
# include <bits/huge_valf.h>
|
||||
# include <bits/huge_vall.h>
|
||||
|
||||
/* Get machine-dependent INFINITY value. */
|
||||
# include <bits/inf.h>
|
||||
|
||||
/* Get machine-dependent NAN value (returned for some domain errors). */
|
||||
#ifdef __USE_ISOC99
|
||||
# include <bits/nan.h>
|
||||
#endif
|
||||
#endif /* __USE_ISOC99 */
|
||||
|
||||
/* Get general and ISO C99 specific information. */
|
||||
#include <bits/mathdef.h>
|
||||
|
||||
|
||||
/* The file <bits/mathcalls.h> contains the prototypes for all the
|
||||
actual math functions. These macros are used for those prototypes,
|
||||
so we can easily declare each function as both `name' and `__name',
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997, 1998, 1999, 2000, 2003, 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
|
||||
@ -33,18 +34,12 @@
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# else
|
||||
|
||||
/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
# else
|
||||
|
||||
@ -52,9 +47,6 @@ typedef double double_t;
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
|
||||
/* The values returned by `ilogb' for 0 and NaN respectively. */
|
||||
|
@ -1,7 +1,8 @@
|
||||
/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
|
||||
/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
ARM version.
|
||||
Copyright (C) 1992, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 95, 96, 97, 98, 99, 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
|
||||
@ -23,25 +24,19 @@
|
||||
# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#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__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
|
||||
# define HUGE_VAL \
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
|
||||
{ __l: 0x000000007ff00000ULL }).__d)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
# include <endian.h>
|
||||
@ -59,46 +54,3 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 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;
|
||||
|
||||
# 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. */
|
||||
|
||||
|
||||
/* Generally there is no separate `long double' format and it is the
|
||||
same as `double'. */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 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
|
||||
@ -29,10 +29,6 @@ typedef float 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)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Stub `HUGE_VAL' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
#define HUGE_VAL 1e37
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
# define HUGE_VAL (__builtin_huge_val())
|
||||
#else
|
||||
# define HUGE_VAL 1e37
|
||||
#endif
|
||||
|
29
sysdeps/generic/bits/huge_valf.h
Normal file
29
sysdeps/generic/bits/huge_valf.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* Stub `HUGE_VALF' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <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
|
29
sysdeps/generic/bits/huge_vall.h
Normal file
29
sysdeps/generic/bits/huge_vall.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* Default `HUGE_VALL' constant.
|
||||
Used by <stdlib.h> and <math.h> 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 <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
|
33
sysdeps/generic/bits/inf.h
Normal file
33
sysdeps/generic/bits/inf.h
Normal file
@ -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 <bits/inf.h> directly; include <math.h> 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
|
@ -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
|
||||
|
@ -1,81 +0,0 @@
|
||||
/* `HUGE_VAL' constants for ix86 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
#else
|
||||
# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
|
||||
|
||||
# define __huge_val_t union { unsigned char __c[8]; double __d; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VAL (__extension__ \
|
||||
((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d)
|
||||
# else /* Not GCC. */
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
# endif /* GCC. */
|
||||
#endif /* GCC 2.95 */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
|
||||
# else
|
||||
|
||||
# define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f }
|
||||
|
||||
# define __huge_valf_t union { unsigned char __c[4]; float __f; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VALF (__extension__ \
|
||||
((__huge_valf_t) { __c: __HUGE_VALF_bytes }).__f)
|
||||
# else /* Not GCC. */
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
# endif /* GCC. */
|
||||
|
||||
|
||||
# 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 */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
43
sysdeps/i386/bits/huge_vall.h
Normal file
43
sysdeps/i386/bits/huge_vall.h
Normal file
@ -0,0 +1,43 @@
|
||||
/* `HUGE_VALL' constant for ix86 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
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 <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 */
|
@ -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
|
||||
@ -31,9 +31,6 @@ typedef long double float_t; /* `float' expressions are evaluated as
|
||||
typedef long double double_t; /* `double' expressions are evaluated as
|
||||
`long 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 - 1)
|
||||
# define FP_ILOGBNAN (-2147483647 - 1)
|
||||
|
@ -1,81 +0,0 @@
|
||||
/* `HUGE_VAL' constants for ia64 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
#else
|
||||
# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f }
|
||||
|
||||
# define __huge_val_t union { unsigned char __c[8]; double __d; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VAL (__extension__ \
|
||||
((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d)
|
||||
# else /* Not GCC. */
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
# endif /* GCC. */
|
||||
#endif /* GCC 2.95 */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
|
||||
# else
|
||||
|
||||
# define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f }
|
||||
|
||||
# define __huge_valf_t union { unsigned char __c[4]; float __f; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VALF (__extension__ \
|
||||
((__huge_valf_t) { __c: __HUGE_VALF_bytes }).__f)
|
||||
# else /* Not GCC. */
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
# endif /* GCC. */
|
||||
|
||||
|
||||
# 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 */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
42
sysdeps/ia64/bits/huge_vall.h
Normal file
42
sysdeps/ia64/bits/huge_vall.h
Normal file
@ -0,0 +1,42 @@
|
||||
/* `HUGE_VALL' constant for ia64 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 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
|
||||
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 <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 */
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000, 2001, 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,9 +30,6 @@ typedef float 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 - 1)
|
||||
# define FP_ILOGBNAN 2147483647
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
|
||||
/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
@ -22,25 +23,19 @@
|
||||
# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#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__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
|
||||
# define HUGE_VAL \
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
|
||||
{ __l: 0x7ff0000000000000ULL }).__d)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
# include <endian.h>
|
||||
@ -58,46 +53,3 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 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;
|
||||
|
||||
# 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. */
|
||||
|
||||
|
||||
/* Generally there is no separate `long double' format and it is the
|
||||
same as `double'. */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
||||
|
53
sysdeps/ieee754/bits/huge_valf.h
Normal file
53
sysdeps/ieee754/bits/huge_valf.h
Normal file
@ -0,0 +1,53 @@
|
||||
/* `HUGE_VALF' constant for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
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 <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. */
|
30
sysdeps/ieee754/bits/inf.h
Normal file
30
sysdeps/ieee754/bits/inf.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* `INFINITY' constant for IEEE 754 machines.
|
||||
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 <bits/inf.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
/* IEEE positive infinity. */
|
||||
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
# define INFINITY (__builtin_inff())
|
||||
#else
|
||||
# define INFINITY HUGE_VALF
|
||||
#endif
|
@ -1,5 +1,5 @@
|
||||
/* `NAN' constant for IEEE 754 machines.
|
||||
Copyright (C) 1992, 1996, 1997, 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1996, 1997, 1999, 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
|
||||
@ -24,7 +24,11 @@
|
||||
|
||||
/* IEEE Not A Number. */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
|
||||
# define NAN (__builtin_nanf(""))
|
||||
|
||||
#elif defined__GNUC__
|
||||
|
||||
# define NAN \
|
||||
(__extension__ \
|
||||
|
51
sysdeps/ieee754/ldbl-128/bits/huge_vall.h
Normal file
51
sysdeps/ieee754/ldbl-128/bits/huge_vall.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* `HUGE_VALL' constant for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
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 <bits/huge_vall.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
# define HUGE_VALL (__builtin_huge_vall())
|
||||
#elif __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
#else
|
||||
# include <endian.h>
|
||||
|
||||
typedef union { unsigned char __c[16]; long double __ld; } __huge_vall_t;
|
||||
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define __HUGE_VALL_bytes { 0x7f, 0xff, 0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
|
||||
# endif
|
||||
# if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
# define __HUGE_VALL_bytes { 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0xff, 0x7f }
|
||||
# endif
|
||||
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VALL (__extension__ \
|
||||
((__huge_vall_t) { __c : __HUGE_VALL_bytes }).__ld)
|
||||
# else
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VALL (__huge_val.__d)
|
||||
# endif
|
||||
#endif
|
@ -1,92 +0,0 @@
|
||||
/* `HUGE_VAL' constants for m68k (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
#include <features.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned long long __l; double __d; }) \
|
||||
{ __l: 0x7ff0000000000000ULL }).__d)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
static union { unsigned char __c[8]; double __d; } __huge_val =
|
||||
{ { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C 99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
|
||||
# else
|
||||
|
||||
# ifdef __GNUC__
|
||||
|
||||
# define HUGE_VALF \
|
||||
(__extension__ \
|
||||
((union { unsigned long __l; float __f; }) \
|
||||
{ __l: 0x7f800000UL }).__f)
|
||||
|
||||
# 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[4]; float __f; } __huge_valf =
|
||||
{ { 0x7f, 0x80, 0, 0 } };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
|
||||
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. */
|
||||
|
||||
# endif /* GCC 2.95. */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
43
sysdeps/m68k/bits/huge_vall.h
Normal file
43
sysdeps/m68k/bits/huge_vall.h
Normal file
@ -0,0 +1,43 @@
|
||||
/* `HUGE_VALL' constant for m68k (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
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 <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. */
|
@ -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
|
||||
@ -31,9 +31,6 @@ typedef long double float_t; /* `float' expressions are evaluated as
|
||||
typedef long double double_t; /* `double' expressions are evaluated as
|
||||
`long 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 - 1)
|
||||
# define FP_ILOGBNAN (2147483647)
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* `NAN' constant for IEEE 754 machines.
|
||||
Copyright (C) 1992, 1996, 1997, 1999, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1996, 1997, 1999, 2002, 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
|
||||
@ -27,7 +28,11 @@
|
||||
the definition of this open to implementations, and for MIPS the top
|
||||
bit of the mantissa must be SET to indicate a SNaN. */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#if __GNUC_PREREQ(3,3)
|
||||
|
||||
# define NAN (__builtin_nanf(""))
|
||||
|
||||
#elif defined __GNUC__
|
||||
|
||||
# define NAN \
|
||||
(__extension__ \
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
|
||||
/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -31,10 +31,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
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997,1998,1999,2000,2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997,1998,1999,2000,2003,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
|
||||
@ -39,9 +39,6 @@ typedef float 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
|
||||
|
||||
# else
|
||||
|
||||
/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
|
||||
@ -50,9 +47,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
|
||||
|
||||
# endif
|
||||
# else
|
||||
|
||||
@ -60,9 +54,6 @@ typedef double double_t; /* `double' expressions are evaluated as
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
|
||||
/* The values returned by `ilogb' for 0 and NaN respectively. */
|
||||
|
@ -1,69 +0,0 @@
|
||||
/* `HUGE_VAL' constants for S/390 (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||
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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
#else
|
||||
# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
|
||||
|
||||
# define __huge_val_t union { unsigned char __c[8]; double __d; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VAL (__extension__ \
|
||||
((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d)
|
||||
# else /* Not GCC. */
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
# endif /* GCC. */
|
||||
#endif /* GCC 2.95 */
|
||||
|
||||
|
||||
/* ISO C 99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# define HUGE_VALL (__extension__ 0x1.0p255f)
|
||||
# else
|
||||
# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
|
||||
# define __huge_valf_t union { unsigned char __c[4]; float __f; }
|
||||
# ifdef __GNUC__
|
||||
# define HUGE_VALF (__extension__ \
|
||||
((__huge_valf_t) { __c: __HUGE_VALF_bytes }).__f)
|
||||
# else /* Not GCC. */
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
# endif /* GCC. */
|
||||
|
||||
/* On 390 there is no 'long double' format. Make it the same as 'double' */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
# endif /* GCC 2.95 */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
@ -1,7 +1,8 @@
|
||||
/* `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, 95, 96, 97, 98, 99, 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
|
||||
@ -23,25 +24,19 @@
|
||||
# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
#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)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
# include <endian.h>
|
||||
@ -59,46 +54,3 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 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;
|
||||
|
||||
# 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. */
|
||||
|
||||
|
||||
/* Generally there is no separate `long double' format and it is the
|
||||
same as `double'. */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
||||
|
@ -1,105 +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, 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
# 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>
|
||||
|
||||
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. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# ifdef __GNUC__
|
||||
|
||||
# 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;
|
||||
|
||||
# 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. */
|
||||
|
||||
|
||||
/* Generally there is no separate `long double' format and it is the
|
||||
same as `double'. */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
@ -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
|
||||
@ -39,9 +39,6 @@ typedef float 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
|
||||
|
||||
# else
|
||||
|
||||
/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
|
||||
@ -50,9 +47,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
|
||||
|
||||
# endif
|
||||
# else
|
||||
|
||||
@ -60,9 +54,6 @@ typedef double double_t; /* `double' expressions are evaluated as
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
|
||||
/* The values returned by `ilogb' for 0 and NaN respectively. */
|
||||
|
49
sysdeps/sparc/bits/huge_vall.h
Normal file
49
sysdeps/sparc/bits/huge_vall.h
Normal file
@ -0,0 +1,49 @@
|
||||
/* `HUGE_VALL' constant for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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
|
||||
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 <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. */
|
@ -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
|
||||
@ -35,18 +35,12 @@
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# else
|
||||
|
||||
/* For `gcc -traditional', `float' expressions are evaluated as `double'. */
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
# else
|
||||
|
||||
@ -54,9 +48,6 @@ typedef double double_t;
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
|
||||
/* Define `INFINITY' as value of type `float'. */
|
||||
# define INFINITY HUGE_VALF
|
||||
|
||||
# endif
|
||||
|
||||
/* The values returned by `ilogb' for 0 and NaN respectively. */
|
||||
|
@ -1,122 +0,0 @@
|
||||
/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
|
||||
{ __l: 0x7ff0000000000000ULL }).__d)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
|
||||
|
||||
# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
|
||||
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# if __WORDSIZE == 32
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
# else
|
||||
/* Sparc64 uses IEEE 754 128bit long double */
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
# ifdef __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;
|
||||
|
||||
# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
|
||||
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
|
||||
# endif /* GCC. */
|
||||
|
||||
# if __WORDSIZE == 32
|
||||
|
||||
/* Sparc32 has IEEE 754 64bit long double */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
# else
|
||||
|
||||
/* Sparc64 uses IEEE 754 128bit long double */
|
||||
|
||||
# ifdef __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
|
||||
|
||||
# endif /* GCC 2.95. */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
@ -1,122 +0,0 @@
|
||||
/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).
|
||||
Used by <stdlib.h> and <math.h> functions for overflow.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 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 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 <bits/huge_val.h> directly; include <math.h> instead."
|
||||
#endif
|
||||
|
||||
#include <features.h>
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
|
||||
# else
|
||||
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
|
||||
{ __l: 0x7ff0000000000000ULL }).__d)
|
||||
|
||||
# endif
|
||||
|
||||
#else /* not GCC */
|
||||
|
||||
typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
|
||||
|
||||
# define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
|
||||
|
||||
static __huge_val_t __huge_val = { __HUGE_VAL_bytes };
|
||||
# define HUGE_VAL (__huge_val.__d)
|
||||
|
||||
#endif /* GCC. */
|
||||
|
||||
|
||||
/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
||||
# if __GNUC_PREREQ(2,96)
|
||||
|
||||
# define HUGE_VALF (__extension__ 0x1.0p255f)
|
||||
# if __WORDSIZE == 32
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
# else
|
||||
/* Sparc64 uses IEEE 754 128bit long double */
|
||||
# define HUGE_VALL (__extension__ 0x1.0p32767L)
|
||||
# endif
|
||||
|
||||
# else
|
||||
|
||||
# ifdef __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;
|
||||
|
||||
# define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 }
|
||||
|
||||
static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };
|
||||
# define HUGE_VALF (__huge_valf.__f)
|
||||
|
||||
# endif /* GCC. */
|
||||
|
||||
# if __WORDSIZE == 32
|
||||
|
||||
/* Sparc32 has IEEE 754 64bit long double */
|
||||
# define HUGE_VALL HUGE_VAL
|
||||
|
||||
# else
|
||||
|
||||
/* Sparc64 uses IEEE 754 128bit long double */
|
||||
|
||||
# ifdef __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
|
||||
|
||||
# endif /* GCC 2.95. */
|
||||
|
||||
#endif /* __USE_ISOC99. */
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001, 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
|
||||
@ -29,9 +29,6 @@ typedef float float_t; /* `float' expressions are evaluated as `float'. */
|
||||
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 - 1)
|
||||
# define FP_ILOGBNAN (-2147483647 - 1)
|
||||
|
Loading…
Reference in New Issue
Block a user