diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2007-04-26 19:23:37 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2007-04-26 19:23:37 +0000 |
commit | 976e9d281b2900f988e14ef541b5716dbdd4849e (patch) | |
tree | c72d4d6ea88acd594efb1ec689bc2199fd3f28e5 /newlib/libc/include/math.h | |
parent | 0e78d0f67513028d06a6be52f0f42d1aa97ad06a (diff) | |
download | cygnal-976e9d281b2900f988e14ef541b5716dbdd4849e.tar.gz cygnal-976e9d281b2900f988e14ef541b5716dbdd4849e.tar.bz2 cygnal-976e9d281b2900f988e14ef541b5716dbdd4849e.zip |
2007-04-26 Patrick Mansfield <patmans@us.ibm.com>
* libc/include/ieeefp.h: use prefixed __ieeefp_ macros that can be
overridden via machine/ieeefp.h.
* libc/include/machine/ieeefp.h: Add SPU specific C99 and ieeefp
macros for isnan and related macros.
* libc/include/math.h: Allow C99 isfinite, isinf, and isnan to be
overridden via machine/ieeefp.h.
* libm/machine/spu/Makefile.am: Add new files.
* libm/machine/spu/Makefile.in: Autogenerate with new files.
* libm/machine/spu/sf_fpclassify.c: Add SPU specific __fpclassifyf.
* libm/machine/spu/sf_finite.c: Add SPU specific finitef.
* libm/machine/spu/sf_isinf.c: Add SPU specific isinff.
* libm/machine/spu/sf_isinff.c: Add SPU specific __isinff.
* libm/machine/spu/sf_isnan.c: Add SPU specific isnanf.
* libm/machine/spu/sf_isnanf.c: Add SPU specific __isnanf.
* libm/machine/spu/sf_nan.c: Add SPU specific nanf.
Diffstat (limited to 'newlib/libc/include/math.h')
-rw-r--r-- | newlib/libc/include/math.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h index 3e96757c8..63cc99286 100644 --- a/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h @@ -131,21 +131,29 @@ extern int __signbitd (double x); (__extension__ ({__typeof__(x) __x = (x); \ (sizeof (__x) == sizeof (float)) ? __fpclassifyf(__x) : __fpclassifyd(__x);})) +#ifndef isfinite #define isfinite(y) \ (__extension__ ({__typeof__(y) __y = (y); \ fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;})) +#endif /* Note: isinf and isnan were once functions in newlib that took double * arguments. C99 specifies that these names are reserved for macros * supporting multiple floating point types. Thus, they are * now defined as macros. Implementations of the old functions * taking double arguments still exist for compatibility purposes. */ +#ifndef isinf #define isinf(x) \ (__extension__ ({__typeof__(x) __x = (x); \ (sizeof (__x) == sizeof (float)) ? __isinff(__x) : __isinfd(__x);})) +#endif + +#ifndef isnan #define isnan(x) \ (__extension__ ({__typeof__(x) __x = (x); \ (sizeof (__x) == sizeof (float)) ? __isnanf(__x) : __isnand(__x);})) +#endif + #define isnormal(y) (fpclassify(y) == FP_NORMAL) #define signbit(x) \ (__extension__ ({__typeof__(x) __x = (x); \ |