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