zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

fenv.h (2096B) - Raw


      1 /* Floating point environment.  ARC version.
      2    Copyright (C) 2020-2025 Free Software Foundation, Inc.
      3    This file is part of the GNU C Library.
      4 
      5    The GNU C Library is free software; you can redistribute it and/or
      6    modify it under the terms of the GNU Lesser General Public
      7    License as published by the Free Software Foundation; either
      8    version 2.1 of the License, or (at your option) any later version.
      9 
     10    The GNU C Library is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13    Lesser General Public License for more details.
     14 
     15    You should have received a copy of the GNU Lesser General Public
     16    License along with the GNU C Library.  If not, see
     17    <https://www.gnu.org/licenses/>.  */
     18 
     19 #ifndef _FENV_H
     20 # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
     21 #endif
     22 
     23 enum
     24   {
     25     FE_INVALID   =
     26 # define FE_INVALID	(0x01)
     27       FE_INVALID,
     28     FE_DIVBYZERO =
     29 # define FE_DIVBYZERO	(0x02)
     30       FE_DIVBYZERO,
     31     FE_OVERFLOW  =
     32 # define FE_OVERFLOW	(0x04)
     33       FE_OVERFLOW,
     34     FE_UNDERFLOW =
     35 # define FE_UNDERFLOW	(0x08)
     36       FE_UNDERFLOW,
     37     FE_INEXACT   =
     38 # define FE_INEXACT	(0x10)
     39       FE_INEXACT
     40   };
     41 
     42 # define FE_ALL_EXCEPT \
     43 	(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
     44 
     45 enum
     46   {
     47     FE_TOWARDZERO =
     48 # define FE_TOWARDZERO	(0x0)
     49       FE_TOWARDZERO,
     50     FE_TONEAREST  =
     51 # define FE_TONEAREST	(0x1)	/* default */
     52       FE_TONEAREST,
     53     FE_UPWARD     =
     54 # define FE_UPWARD	(0x2)
     55       FE_UPWARD,
     56     FE_DOWNWARD   =
     57 # define FE_DOWNWARD	(0x3)
     58       FE_DOWNWARD
     59   };
     60 
     61 typedef unsigned int fexcept_t;
     62 
     63 typedef struct
     64 {
     65   unsigned int __fpcr;
     66   unsigned int __fpsr;
     67 } fenv_t;
     68 
     69 /* If the default argument is used we use this value.  */
     70 #define FE_DFL_ENV	((const fenv_t *) -1)
     71 
     72 #if __GLIBC_USE (IEC_60559_BFP_EXT_C23)
     73 /* Type representing floating-point control modes.  */
     74 typedef unsigned int femode_t;
     75 
     76 /* Default floating-point control modes.  */
     77 # define FE_DFL_MODE	((const femode_t *) -1L)
     78 #endif