(root)/
glibc-2.38/
sysdeps/
sh/
bits/
fenv.h
       1  /* Copyright (C) 1999-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _FENV_H
      19  # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
      20  #endif
      21  
      22  
      23  /* Define bits representing the exception.  We use the bit positions
      24     of the appropriate bits in the FPU control word.  */
      25  enum
      26    {
      27      FE_INEXACT =
      28  #define FE_INEXACT	0x04
      29        FE_INEXACT,
      30      FE_UNDERFLOW =
      31  #define FE_UNDERFLOW	0x08
      32        FE_UNDERFLOW,
      33      FE_OVERFLOW =
      34  #define FE_OVERFLOW	0x10
      35        FE_OVERFLOW,
      36      FE_DIVBYZERO =
      37  #define FE_DIVBYZERO	0x20
      38        FE_DIVBYZERO,
      39      FE_INVALID =
      40  #define FE_INVALID	0x40
      41        FE_INVALID,
      42    };
      43  
      44  #define FE_ALL_EXCEPT \
      45  	(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
      46  
      47  /* The SH FPU supports two of the four defined rounding modes: round to nearest
      48     and round to zero.  We use again the bit positions in the FPU control word
      49     as the values for the appropriate macros.  */
      50  enum
      51    {
      52      __FE_UNDEFINED = -1,
      53  
      54      FE_TONEAREST =
      55  #define FE_TONEAREST	0x0
      56        FE_TONEAREST,
      57      FE_TOWARDZERO =
      58  #define FE_TOWARDZERO	0x1
      59        FE_TOWARDZERO,
      60    };
      61  
      62  
      63  /* Type representing exception flags.  */
      64  typedef unsigned short int fexcept_t;
      65  
      66  
      67  /* Type representing floating-point environment.  This function corresponds
      68     to the layout of the block written by the `fstenv'.  */
      69  typedef struct
      70    {
      71      unsigned int __fpscr;
      72    }
      73  fenv_t;
      74  
      75  /* If the default argument is used we use this value.  */
      76  #define FE_DFL_ENV	((const fenv_t *) -1)
      77  
      78  #if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
      79  /* Type representing floating-point control modes.  */
      80  typedef unsigned int femode_t;
      81  
      82  /* Default floating-point control modes.  */
      83  # define FE_DFL_MODE	((const femode_t *) -1L)
      84  #endif