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
17This entire header is C99 / C++0X
18
19Macros:
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
33Types:
34
35    fenv_t
36    fexcept_t
37
38int feclearexcept(int excepts);
39int fegetexceptflag(fexcept_t* flagp, int excepts);
40int feraiseexcept(int excepts);
41int fesetexceptflag(const fexcept_t* flagp, int excepts);
42int fetestexcept(int excepts);
43int fegetround();
44int fesetround(int round);
45int fegetenv(fenv_t* envp);
46int feholdexcept(fenv_t* envp);
47int fesetenv(const fenv_t* envp);
48int feupdateenv(const fenv_t* envp);
49
50
51*/
52
53#include <__config>
54
55#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
56#pragma GCC system_header
57#endif
58
59#include_next <fenv.h>
60
61#ifdef __cplusplus
62
63extern "C++" {
64
65#ifdef feclearexcept
66#undef feclearexcept
67#endif
68
69#ifdef fegetexceptflag
70#undef fegetexceptflag
71#endif
72
73
74#ifdef feraiseexcept
75#undef feraiseexcept
76#endif
77
78#ifdef fesetexceptflag
79#undef fesetexceptflag
80#endif
81
82
83#ifdef fetestexcept
84#undef fetestexcept
85#endif
86
87#ifdef fegetround
88#undef fegetround
89#endif
90
91#ifdef fesetround
92#undef fesetround
93#endif
94
95#ifdef fegetenv
96#undef fegetenv
97#endif
98
99#ifdef feholdexcept
100#undef feholdexcept
101#endif
102
103
104#ifdef fesetenv
105#undef fesetenv
106#endif
107
108#ifdef feupdateenv
109#undef feupdateenv
110#endif
111
112} // extern "C++"
113
114#endif // defined(__cplusplus)
115
116#endif // _LIBCPP_FENV_H
117