6 /* Now define the internal interfaces. */
8 extern int __feclearexcept (int __excepts
);
9 extern int __fegetexcept (void);
10 extern int __fegetexceptflag (fexcept_t
*__flagp
, int __excepts
);
11 extern int __feraiseexcept (int __excepts
);
12 extern int __fesetexceptflag (const fexcept_t
*__flagp
, int __excepts
);
13 extern int __fegetenv (fenv_t
*__envp
);
14 extern int __fesetenv (const fenv_t
*__envp
);
15 extern int __feupdateenv (const fenv_t
*__envp
);
16 extern __typeof (fegetround
) __fegetround __attribute_pure__
;
17 extern __typeof (feholdexcept
) __feholdexcept
;
18 extern __typeof (fesetround
) __fesetround
;
20 libm_hidden_proto (feraiseexcept
)
21 libm_hidden_proto (__feraiseexcept
)
22 libm_hidden_proto (fegetenv
)
23 libm_hidden_proto (__fegetenv
)
24 libm_hidden_proto (fegetround
)
25 libm_hidden_proto (__fegetround
)
26 libm_hidden_proto (fesetenv
)
27 libm_hidden_proto (__fesetenv
)
28 libm_hidden_proto (fesetround
)
29 libm_hidden_proto (__fesetround
)
30 libm_hidden_proto (feholdexcept
)
31 libm_hidden_proto (__feholdexcept
)
32 libm_hidden_proto (feupdateenv
)
33 libm_hidden_proto (__feupdateenv
)
34 libm_hidden_proto (fetestexcept
)
35 libm_hidden_proto (feclearexcept
)
37 /* Rounding mode context. This allows functions to set/restore rounding mode
38 only when the desired rounding mode is different from the current rounding
46 /* Track whether rounding mode macros were defined, since
47 get-rounding-mode.h may define default versions if they weren't.
48 FE_TONEAREST must always be defined (even if no changes of rounding
49 mode are supported, glibc requires it to be defined to represent
50 the default rounding mode). */
52 # error "FE_TONEAREST not defined"
54 # if defined FE_DOWNWARD || defined FE_TOWARDZERO || defined FE_UPWARD
55 # define FE_HAVE_ROUNDING_MODES 1
57 # define FE_HAVE_ROUNDING_MODES 0
60 /* When no floating-point exceptions are defined in <fenv.h>, make
61 feraiseexcept ignore its argument so that unconditional
62 feraiseexcept calls do not cause errors for undefined exceptions.
63 Define it to expand to a void expression so that any calls testing
64 the result of feraiseexcept do produce errors. */
65 # if FE_ALL_EXCEPT == 0
66 # define feraiseexcept(excepts) ((void) 0)
67 # define __feraiseexcept(excepts) ((void) 0)
70 /* Similarly, most <fenv.h> functions have trivial implementations in
71 the absence of support for floating-point exceptions and rounding
74 # if !FE_HAVE_ROUNDING_MODES
75 # if FE_ALL_EXCEPT == 0
77 fegetenv (fenv_t
*__e
)
83 __fegetenv (fenv_t
*__e
)
89 feholdexcept (fenv_t
*__e
)
95 __feholdexcept (fenv_t
*__e
)
101 fesetenv (const fenv_t
*__e
)
107 __fesetenv (const fenv_t
*__e
)
113 feupdateenv (const fenv_t
*__e
)
119 __feupdateenv (const fenv_t
*__e
)
144 __fesetround (int __d
)