blob: 7cede4b347c24927200b60dafb5f0e6c9a547bc3 [file] [log] [blame]
Eric Fiselier5dddf722019-02-11 23:47:19 +00001// -*- 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#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
62extern "C++" {
63
64#ifdef feclearexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000065#undef feclearexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000066#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000067
68#ifdef fegetexceptflag
Eric Fiselier5dddf722019-02-11 23:47:19 +000069#undef fegetexceptflag
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000070#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000071
72
73#ifdef feraiseexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000074#undef feraiseexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000075#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000076
77#ifdef fesetexceptflag
Eric Fiselier5dddf722019-02-11 23:47:19 +000078#undef fesetexceptflag
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000079#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000080
81
82#ifdef fetestexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000083#undef fetestexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000084#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000085
86#ifdef fegetround
Eric Fiselier5dddf722019-02-11 23:47:19 +000087#undef fegetround
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000088#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000089
90#ifdef fesetround
Eric Fiselier5dddf722019-02-11 23:47:19 +000091#undef fesetround
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000092#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000093
94#ifdef fegetenv
Eric Fiselier5dddf722019-02-11 23:47:19 +000095#undef fegetenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000096#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000097
98#ifdef feholdexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000099#undef feholdexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000100#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000101
102
103#ifdef fesetenv
Eric Fiselier5dddf722019-02-11 23:47:19 +0000104#undef fesetenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000105#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000106
107#ifdef feupdateenv
Eric Fiselier5dddf722019-02-11 23:47:19 +0000108#undef feupdateenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000109#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000110
111} // extern "C++"
112
113#endif // defined(__cplusplus)
114
115#endif // _LIBCPP_FENV_H