This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/fenv.h

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