1/* 2 * Copyright (c) 2005-2019 Rich Felker, et al. 3 * 4 * Part of MUSL, released under the MIT license. 5 */ 6 7 8#ifndef _FENV_H_ 9#define _FENV_H_ 10 11#ifdef __cplusplus 12extern "C" { 13#endif 14 15#if __HAVE_68881__ || __mcffpu__ 16 17#define FE_INEXACT 8 18#define FE_DIVBYZERO 16 19#define FE_UNDERFLOW 32 20#define FE_OVERFLOW 64 21#define FE_INVALID 128 22 23#define FE_ALL_EXCEPT 0xf8 24 25#define FE_TONEAREST 0 26#define FE_TOWARDZERO 16 27#define FE_DOWNWARD 32 28#define FE_UPWARD 48 29 30#else 31 32#define FE_ALL_EXCEPT 0 33#define FE_TONEAREST 0 34 35#endif 36 37typedef unsigned fexcept_t; 38 39typedef struct { 40 unsigned __control_register, __status_register, __instruction_address; 41} fenv_t; 42 43#define FE_DFL_ENV ((const fenv_t *) -1) 44 45int feclearexcept(int); 46int fegetexceptflag(fexcept_t *, int); 47int feraiseexcept(int); 48int fesetexceptflag(const fexcept_t *, int); 49int fetestexcept(int); 50 51int fegetround(void); 52int fesetround(int); 53 54int fegetenv(fenv_t *); 55int feholdexcept(fenv_t *); 56int fesetenv(const fenv_t *); 57int feupdateenv(const fenv_t *); 58 59#ifdef __cplusplus 60} 61#endif 62#endif 63 64