// -*- C++ -*-
//===---------------------------- math.h ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_FENV_H
#define _LIBCPP_FENV_H


/*
    fenv.h synopsis

This entire header is C99 / C++0X

Macros:

    FE_DIVBYZERO
    FE_INEXACT
    FE_INVALID
    FE_OVERFLOW
    FE_UNDERFLOW
    FE_ALL_EXCEPT
    FE_DOWNWARD
    FE_TONEAREST
    FE_TOWARDZERO
    FE_UPWARD
    FE_DFL_ENV

Types:

    fenv_t
    fexcept_t

int feclearexcept(int excepts);
int fegetexceptflag(fexcept_t* flagp, int excepts);
int feraiseexcept(int excepts);
int fesetexceptflag(const fexcept_t* flagp, int excepts);
int fetestexcept(int excepts);
int fegetround();
int fesetround(int round);
int fegetenv(fenv_t* envp);
int feholdexcept(fenv_t* envp);
int fesetenv(const fenv_t* envp);
int feupdateenv(const fenv_t* envp);


*/

#include <__config>
#include_next <fenv.h>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

#ifdef __cplusplus

extern "C++" {

#ifdef feclearexcept
#undef feclearexcept
#endif

#ifdef fegetexceptflag
#undef fegetexceptflag
#endif


#ifdef feraiseexcept
#undef feraiseexcept
#endif

#ifdef fesetexceptflag
#undef fesetexceptflag
#endif


#ifdef fetestexcept
#undef fetestexcept
#endif

#ifdef fegetround
#undef fegetround
#endif

#ifdef fesetround
#undef fesetround
#endif

#ifdef fegetenv
#undef fegetenv
#endif

#ifdef feholdexcept
#undef feholdexcept
#endif


#ifdef fesetenv
#undef fesetenv
#endif

#ifdef feupdateenv
#undef feupdateenv
#endif

} // extern "C++"

#endif // defined(__cplusplus)

#endif // _LIBCPP_FENV_H
