blob: 988cd9b112fb49aae4f7606a5109719914a13bce [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>
Eric Fiselier5dddf722019-02-11 23:47:19 +000054
55#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
56#pragma GCC system_header
57#endif
58
Eric Fiselier5f4e1382019-03-29 16:03:57 +000059#include_next <fenv.h>
60
Eric Fiselier5dddf722019-02-11 23:47:19 +000061#ifdef __cplusplus
62
63extern "C++" {
64
65#ifdef feclearexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000066#undef feclearexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000067#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000068
69#ifdef fegetexceptflag
Eric Fiselier5dddf722019-02-11 23:47:19 +000070#undef fegetexceptflag
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000071#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000072
73
74#ifdef feraiseexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000075#undef feraiseexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000076#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000077
78#ifdef fesetexceptflag
Eric Fiselier5dddf722019-02-11 23:47:19 +000079#undef fesetexceptflag
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000080#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000081
82
83#ifdef fetestexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +000084#undef fetestexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000085#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000086
87#ifdef fegetround
Eric Fiselier5dddf722019-02-11 23:47:19 +000088#undef fegetround
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000089#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000090
91#ifdef fesetround
Eric Fiselier5dddf722019-02-11 23:47:19 +000092#undef fesetround
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000093#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000094
95#ifdef fegetenv
Eric Fiselier5dddf722019-02-11 23:47:19 +000096#undef fegetenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +000097#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +000098
99#ifdef feholdexcept
Eric Fiselier5dddf722019-02-11 23:47:19 +0000100#undef feholdexcept
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000101#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000102
103
104#ifdef fesetenv
Eric Fiselier5dddf722019-02-11 23:47:19 +0000105#undef fesetenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000106#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000107
108#ifdef feupdateenv
Eric Fiselier5dddf722019-02-11 23:47:19 +0000109#undef feupdateenv
Eric Fiselierbb9a7a82019-02-12 00:05:14 +0000110#endif
Eric Fiselier5dddf722019-02-11 23:47:19 +0000111
112} // extern "C++"
113
114#endif // defined(__cplusplus)
115
116#endif // _LIBCPP_FENV_H