114 lines
3.3 KiB
C
114 lines
3.3 KiB
C
/***************************************************************************
|
|
* FILE: fenv.h (Floating-point environment)
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2002-2010 Open Watcom Contributors. All Rights Reserved.
|
|
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Description: This header is part of the C99 standard library. It
|
|
* describes the floating-point environment
|
|
***************************************************************************/
|
|
#ifndef _FENV_H_INCLUDED
|
|
#define _FENV_H_INCLUDED
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ >= 199901L
|
|
|
|
#ifndef _COMDEF_H_INCLUDED
|
|
#include <_comdef.h>
|
|
#endif
|
|
|
|
#ifdef _M_IX86
|
|
#pragma pack( __push, 1 )
|
|
#else
|
|
#pragma pack( __push, 8 )
|
|
#endif
|
|
|
|
/* type for holding FPU environment */
|
|
#if defined(__386__)
|
|
typedef struct {
|
|
unsigned short control_word;
|
|
unsigned short pad0;
|
|
unsigned short status_word;
|
|
unsigned short pad1;
|
|
unsigned short tag_word;
|
|
unsigned short pad2;
|
|
unsigned int ins_ptr_offset;
|
|
unsigned short ins_ptr_seg;
|
|
unsigned short opcode;
|
|
unsigned int op_ptr_offset;
|
|
unsigned short op_ptr_seg;
|
|
unsigned short pad3;
|
|
} fenv_t;
|
|
#else
|
|
typedef struct {
|
|
unsigned short control_word;
|
|
unsigned short status_word;
|
|
unsigned short tag_word;
|
|
unsigned short ins_ptr_offset;
|
|
unsigned short ins_ptr_seg;
|
|
unsigned short op_ptr_offset;
|
|
unsigned short op_ptr_seg;
|
|
} fenv_t;
|
|
#endif
|
|
|
|
#pragma pack( __pop )
|
|
|
|
/* type for holding FPU exception flags */
|
|
typedef unsigned short fexcept_t;
|
|
|
|
/* exception flags */
|
|
#define FE_INVALID 1
|
|
#define FE_DENORMAL 2
|
|
#define FE_DIVBYZERO 4
|
|
#define FE_OVERFLOW 8
|
|
#define FE_UNDERFLOW 16
|
|
#define FE_INEXACT 32
|
|
|
|
#define FE_ALL_EXCEPT (FE_DIVBYZERO|FE_INEXACT|FE_INVALID|FE_OVERFLOW|FE_UNDERFLOW|FE_DENORMAL)
|
|
|
|
/* rounding modes */
|
|
#define FE_TONEAREST 0x0000
|
|
#define FE_DOWNWARD 0x0400
|
|
#define FE_TOWARDZERO 0x0C00
|
|
#define FE_UPWARD 0x0800
|
|
|
|
/* default FPU setup */
|
|
_WCRTDATA extern const fenv_t __fenv_h_default_environment;
|
|
#define FE_DFL_ENV &__fenv_h_default_environment
|
|
|
|
/* exception handling functions */
|
|
_WCRTLINK extern int feclearexcept( int __excepts );
|
|
_WCRTLINK extern int fegetexceptflag( fexcept_t *__flagp, int __excepts );
|
|
_WCRTLINK extern int feraiseexcept( int __excepts );
|
|
_WCRTLINK extern int fesetexceptflag( const fexcept_t *__flagp, int __excepts );
|
|
_WCRTLINK extern int fetestexcept( int __excepts );
|
|
|
|
#if !defined(NO_EXT_KEYS) /* extensions enabled */
|
|
_WCRTLINK extern void __feenableexcept( int __excepts );
|
|
_WCRTLINK extern void __fedisableexcept( int __excepts );
|
|
#endif /* extensions enabled */
|
|
|
|
/* rounding mode functions */
|
|
_WCRTLINK extern int fegetround( void );
|
|
_WCRTLINK extern int fesetround( int __round );
|
|
|
|
/* FPU environment functions */
|
|
_WCRTLINK extern int fegetenv( fenv_t *__envp );
|
|
_WCRTLINK extern int feholdexcept( fenv_t *__envp );
|
|
_WCRTLINK extern int fesetenv( const fenv_t *__envp );
|
|
_WCRTLINK extern int feupdateenv( const fenv_t *__envp );
|
|
|
|
#endif
|
|
#endif
|