/*      $NetBSD: fenv.h,v 1.5 2024/05/12 20:04:12 riastradh Exp $       */

/*
* Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
* Public domain.
*/

#ifndef _RISCV_FENV_H_
#define _RISCV_FENV_H_

typedef int fenv_t;             /* FPSCR */
typedef int fexcept_t;

#define FE_INEXACT      ((int)__BIT(0)) /* Result inexact */
#define FE_UNDERFLOW    ((int)__BIT(1)) /* Result underflowed */
#define FE_OVERFLOW     ((int)__BIT(2)) /* Result overflowed */
#define FE_DIVBYZERO    ((int)__BIT(3)) /* divide-by-zero */
#define FE_INVALID      ((int)__BIT(4)) /* Result invalid */

#define FE_ALL_EXCEPT   \
   (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_INVALID)

#define FE_TONEAREST    0       /* round to nearest representable number */
#define FE_TOWARDZERO   1       /* round to zero (truncate) */
#define FE_DOWNWARD     2       /* round toward negative infinity */
#define FE_UPWARD       3       /* round toward positive infinity */

__BEGIN_DECLS

/* Default floating-point environment */
extern const fenv_t     __fe_dfl_env;
#define FE_DFL_ENV      (&__fe_dfl_env)

__END_DECLS

#endif /* _RISCV_FENV_H_ */