X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=includes%2Ffenv.h;h=7a0d9f37340ff178ed4ba58d9c09ad84a409ff00;hp=395e980cf38a6bfcbdceff0c0df6e1cb97766b46;hb=1d9d92ba957a0b8307c9a65c35867fde68e6533b;hpb=1e221deb9ee725a14b3656f94e2763f8faeb18dc diff --git a/includes/fenv.h b/includes/fenv.h index 395e980..7a0d9f3 100644 --- a/includes/fenv.h +++ b/includes/fenv.h @@ -1,15 +1,58 @@ -// ---------------------------------------------------------------------------- -// $Id$ -// ---------------------------------------------------------------------------- -// Public Domain C Library - http://pdclib.sourceforge.net -// This code is Public Domain. Use, modify, and redistribute at will. -// ---------------------------------------------------------------------------- -// TODO -// ---------------------------------------------------------------------------- +/* ---------------------------------------------------------------------------- + * $Id$ + * ---------------------------------------------------------------------------- + * Public Domain C Library - http://pdclib.sourceforge.net + * This code is Public Domain. Use, modify, and redistribute at will. + * ---------------------------------------------------------------------------- + * Floating-point environment + * --------------------------------------------------------------------------*/ -#ifndef __FENV_H -#define __FENV_H __FENV_H +#ifndef _FENV_H +#define _FENV_H _FENV_H -// TODO +/* TODO: Documentation */ -#endif // __FENV_H +/* ---------------------------------------------------------------------------- + * MACROS + * --------------------------------------------------------------------------*/ + +#define FE_DIVBYZERO /* TODO - to __intern.h / __personality.h? */ +#define FE_INEXACT /* TODO - to __intern.h / __personality.h? */ +#define FE_INVALID /* TODO - to __intern.h / __personality.h? */ +#define FE_OVERFLOW /* TODO - to __intern.h / __personality.h? */ +#define FE_UNDERFLOW /* TODO - to __intern.h / __personality.h? */ +#define FE_ALL_EXCEPT /* TODO - to __intern.h / __personality.h? */ + +#define FE_DOWNWARD /* TODO - to __intern.h / __personality.h? */ +#define FE_TONEAREST /* TODO - to __intern.h / __personality.h? */ +#define FE_TOWARDZERO /* TODO - to __intern.h / __personality.h? */ +#define FE_UPWARD /* TODO - to __intern.h / __personality.h? */ + +#define FE_DFL_ENV /* TODO - to __intern.h / __personality.h? */ + +/* ---------------------------------------------------------------------------- + * TYPEDEFS + * --------------------------------------------------------------------------*/ + +typedef fenv_t; /* TODO - to __intern.h / __personality.h? */ +typedef fexcept_t; /* TODO - to __intern.h / __personality.h? */ + +/* ---------------------------------------------------------------------------- + * FUNCTIONS + * --------------------------------------------------------------------------*/ + +int feclearexcept( int exceptions ); +int fegetexceptflag( fexcept_t * flags, int exceptions ); +int feraiseexcept( int exceptions ); +int fesetexceptflag( const fexcept_t * flags, int exceptions ); +int fetestexcept( int exceptions ); + +int fegetround( void ); +int fesetround( int mode ); + +int fegetenv( fenv_t * environment ); +int feholdexcept( fenv_t * environment ); +int fesetenv( const fenv_t * environment ); +int feupdateenv( const fenv_t * environment ); + +#endif /* _FENV_H */