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> | ||||
54 | #include_next <fenv.h> | ||||
55 | |||||
56 | #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | ||||
57 | #pragma GCC system_header | ||||
58 | #endif | ||||
59 | |||||
60 | #ifdef __cplusplus | ||||
61 | |||||
62 | extern "C++" { | ||||
63 | |||||
64 | #ifdef feclearexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 65 | #undef feclearexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 66 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 67 | |
68 | #ifdef fegetexceptflag | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 69 | #undef fegetexceptflag |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 70 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 71 | |
72 | |||||
73 | #ifdef feraiseexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 74 | #undef feraiseexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 75 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 76 | |
77 | #ifdef fesetexceptflag | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 78 | #undef fesetexceptflag |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 79 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 80 | |
81 | |||||
82 | #ifdef fetestexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 83 | #undef fetestexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 84 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 85 | |
86 | #ifdef fegetround | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 87 | #undef fegetround |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 88 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 89 | |
90 | #ifdef fesetround | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 91 | #undef fesetround |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 92 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 93 | |
94 | #ifdef fegetenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 95 | #undef fegetenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 96 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 97 | |
98 | #ifdef feholdexcept | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 99 | #undef feholdexcept |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 100 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 101 | |
102 | |||||
103 | #ifdef fesetenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 104 | #undef fesetenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 105 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 106 | |
107 | #ifdef feupdateenv | ||||
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 108 | #undef feupdateenv |
Eric Fiselier | bb9a7a8 | 2019-02-12 00:05:14 +0000 | [diff] [blame^] | 109 | #endif |
Eric Fiselier | 5dddf72 | 2019-02-11 23:47:19 +0000 | [diff] [blame] | 110 | |
111 | } // extern "C++" | ||||
112 | |||||
113 | #endif // defined(__cplusplus) | ||||
114 | |||||
115 | #endif // _LIBCPP_FENV_H |