diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2019-02-28 17:05:13 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2019-03-01 23:08:44 +0300 |
commit | 40958b0d867849199b38e2e2f04b3b9131a1e322 (patch) | |
tree | 3b959b0fa495254e2cb0ca93a8aaa1d4466c1bda /winsup/cygwin/include/fenv.h | |
parent | 166913fb23dd7ac0c63976a2f4e40a9e44ca41ca (diff) |
Cygwin: fenv.h: Add feature test macros, fix values
- feenableexcept,fedisableexcept, fegetexcept are GNU-only
- fegetprec, fesetprec are Solaris, use __MISC_VISIBLE
- _feinitialise is Cygwin-internal only
- Replace self-named FP precision values to values from
http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm
as used by Solaris.
- Change return value of fesetprec to adhere to the above document
and Solaris.
- Document fegetprec, fesetprec as Solaris functions, not as GNU
functions
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/include/fenv.h')
-rw-r--r-- | winsup/cygwin/include/fenv.h | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/winsup/cygwin/include/fenv.h b/winsup/cygwin/include/fenv.h index 7ce3a9340..0f7e07445 100644 --- a/winsup/cygwin/include/fenv.h +++ b/winsup/cygwin/include/fenv.h @@ -106,11 +106,14 @@ typedef __uint32_t fexcept_t; #define FE_TOWARDZERO (3) #define FE_UPWARD (2) -/* Precision bit values. Not defined by Posix, but follow logically. */ -#define FE_SINGLEPREC (0) -#define FE_RESERVEDPREC (1) -#define FE_DOUBLEPREC (2) -#define FE_EXTENDEDPREC (3) +/* Only Solaris and QNX implement fegetprec/fesetprec. As Solaris, use the + values defined by http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm + QNX defines different values. */ +#if __MISC_VISIBLE +#define FE_FLTPREC (0) +#define FE_DBLPREC (2) +#define FE_LDBLPREC (3) +#endif /* The <fenv.h> header shall define the following constant, which represents the default floating-point environment (that is, the one @@ -138,30 +141,34 @@ extern const fenv_t *_fe_nomask_env; /* The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided. */ -extern int feclearexcept (int excepts); -extern int fegetexceptflag (fexcept_t *flagp, int excepts); -extern int feraiseexcept (int excepts); -extern int fesetexceptflag (const fexcept_t *flagp, int excepts); -extern int fetestexcept (int excepts); +extern int feclearexcept (int __excepts); +extern int fegetexceptflag (fexcept_t *__flagp, int __excepts); +extern int feraiseexcept (int __excepts); +extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts); +extern int fetestexcept (int __excepts); extern int fegetround (void); -extern int fesetround (int round); -extern int fegetenv (fenv_t *envp); -extern int feholdexcept (fenv_t *envp); -extern int fesetenv (const fenv_t *envp); -extern int feupdateenv (const fenv_t *envp); - -/* These are not defined in Posix, but make sense by obvious extension. */ -extern int fegetprec (void); -extern int fesetprec (int prec); - -/* This is Cygwin-custom, not from the standard, for use in the Cygwin CRT. */ -extern void _feinitialise (void); +extern int fesetround (int __round); +extern int fegetenv (fenv_t *__envp); +extern int feholdexcept (fenv_t *__envp); +extern int fesetenv (const fenv_t *__envp); +extern int feupdateenv (const fenv_t *__envp); +#if __GNU_VISIBLE /* These are GNU extensions defined in glibc. */ -extern int feenableexcept (int excepts); -extern int fedisableexcept (int excepts); +extern int feenableexcept (int __excepts); +extern int fedisableexcept (int __excepts); extern int fegetexcept (void); +#endif + +#if __MISC_VISIBLE +extern int fegetprec (void); +extern int fesetprec (int __prec); +#endif +#ifdef __INSIDE_CYGWIN__ +/* This is Cygwin-custom, not from the standard, for use in the Cygwin CRT. */ +extern void _feinitialise (); +#endif #ifdef __cplusplus } |