Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 1 | // -*- C++ -*- |
2 | //===---------------------------- math.h ----------------------------------===// | ||||
3 | // | ||||
4 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||||
5 | // See https://llvm.org/LICENSE.txt for license information. | ||||
6 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||||
7 | // | ||||
8 | //===----------------------------------------------------------------------===// | ||||
9 | |||||
10 | #ifndef _LIBCPP_FENV_H | ||||
11 | #define _LIBCPP_FENV_H | ||||
12 | |||||
13 | |||||
14 | /* | ||||
15 | fenv.h synopsis | ||||
16 | |||||
17 | This entire header is C99 / C++0X | ||||
18 | |||||
19 | Macros: | ||||
20 | |||||
21 | FE_DIVBYZERO | ||||
22 | FE_INEXACT | ||||
23 | FE_INVALID | ||||
24 | FE_OVERFLOW | ||||
25 | FE_UNDERFLOW | ||||
26 | FE_ALL_EXCEPT | ||||
27 | FE_DOWNWARD | ||||
28 | FE_TONEAREST | ||||
29 | FE_TOWARDZERO | ||||
30 | FE_UPWARD | ||||
31 | FE_DFL_ENV | ||||
32 | |||||
33 | Types: | ||||
34 | |||||
35 | fenv_t | ||||
36 | fexcept_t | ||||
37 | |||||
38 | int feclearexcept(int excepts); | ||||
39 | int fegetexceptflag(fexcept_t* flagp, int excepts); | ||||
40 | int feraiseexcept(int excepts); | ||||
41 | int fesetexceptflag(const fexcept_t* flagp, int excepts); | ||||
42 | int fetestexcept(int excepts); | ||||
43 | int fegetround(); | ||||
44 | int fesetround(int round); | ||||
45 | int fegetenv(fenv_t* envp); | ||||
46 | int feholdexcept(fenv_t* envp); | ||||
47 | int fesetenv(const fenv_t* envp); | ||||
48 | int feupdateenv(const fenv_t* envp); | ||||
49 | |||||
50 | |||||
51 | */ | ||||
52 | |||||
53 | #include <__config> | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 54 | |
55 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | ||||
56 | #pragma GCC system_header | ||||
57 | #endif | ||||
58 | |||||
Eric Fiselier | 5f4e138 | 2019-03-29 16:03:57 +0000 | [diff] [blame] | 59 | #include_next <fenv.h> |
60 | |||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 61 | #ifdef __cplusplus |
62 | |||||
63 | extern "C++" { | ||||
64 | |||||
65 | #ifdef feclearexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 66 | #undef feclearexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 67 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 68 | |
69 | #ifdef fegetexceptflag | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 70 | #undef fegetexceptflag |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 71 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 72 | |
73 | |||||
74 | #ifdef feraiseexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 75 | #undef feraiseexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 76 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 77 | |
78 | #ifdef fesetexceptflag | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 79 | #undef fesetexceptflag |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 80 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 81 | |
82 | |||||
83 | #ifdef fetestexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 84 | #undef fetestexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 85 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 86 | |
87 | #ifdef fegetround | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 88 | #undef fegetround |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 89 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 90 | |
91 | #ifdef fesetround | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 92 | #undef fesetround |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 93 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 94 | |
95 | #ifdef fegetenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 96 | #undef fegetenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 97 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 98 | |
99 | #ifdef feholdexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 100 | #undef feholdexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 101 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 102 | |
103 | |||||
104 | #ifdef fesetenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 105 | #undef fesetenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 106 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 107 | |
108 | #ifdef feupdateenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 109 | #undef feupdateenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame] | 110 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 111 | |
112 | } // extern "C++" | ||||
113 | |||||
114 | #endif // defined(__cplusplus) | ||||
115 | |||||
116 | #endif // _LIBCPP_FENV_H |