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