ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
fenv.h
Go to the documentation of this file.
1
2/* their <fenv.h> contains inline function definitions incompatible with ours */
3#ifdef __FreeBSD__
4
5/* partially taken from FreeBSD-14 */
6
7#pragma once
8
9/* The high 32 bits contain fpcr, low 32 contain fpsr. */
10typedef __UINT64_TYPE__ fenv_t;
11typedef __UINT64_TYPE__ fexcept_t;
12
13/* Exception flags */
14#define FE_INVALID 0x00000001
15#define FE_DIVBYZERO 0x00000002
16#define FE_OVERFLOW 0x00000004
17#define FE_UNDERFLOW 0x00000008
18#define FE_INEXACT 0x00000010
19#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
20 FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
21
22/*
23 * Rounding modes
24 *
25 * We can't just use the hardware bit values here, because that would
26 * make FE_UPWARD and FE_DOWNWARD negative, which is not allowed.
27 */
28#define FE_TONEAREST 0x0
29#define FE_UPWARD 0x1
30#define FE_DOWNWARD 0x2
31#define FE_TOWARDZERO 0x3
32#define _ROUND_MASK (FE_TONEAREST | FE_DOWNWARD | \
33 FE_UPWARD | FE_TOWARDZERO)
34#define _ROUND_SHIFT 22
35
36/* Default floating-point environment */
37extern const fenv_t __ESBMC_fe_dfl_env;
38#define FE_DFL_ENV (&__ESBMC_fe_dfl_env)
39
40int feclearexcept(int excepts);
41int fegetexceptflag(fexcept_t *flagp, int excepts);
42int feraiseexcept(int excepts);
43int fesetexceptflag(const fexcept_t *flagp, int excepts);
44int fetestexcept(int excepts);
45
46int fegetround(void);
47int fesetround(int rounding_mode);
48
49int fegetenv(fenv_t *envp);
50int feholdexcept(fenv_t *envp);
51int fesetenv(const fenv_t *envp);
52int feupdateenv(const fenv_t *envp);
53
54#else /* !defined __FreeBSD__ */
55
56/* For SV-COMP's pre-processed sources we need the system's definitions of
57 * (at least) the constants for the rounding modes. */
58#include_next <fenv.h>
59
60#endif
int fesetround(int rounding_mode)
Definition fenv.c:30
int fegetround(void)
Definition fenv.c:5