(linenum→info "unix/slp.c:2238")

glibc/2.7/math/fenv.h

    1: /* Copyright (C) 1997, 1999, 2000 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, write to the Free
   16:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   17:    02111-1307 USA.  */
   18: 
   19: /*
   20:  * ISO C99 7.6: Floating-point environment      <fenv.h>
   21:  */
   22: 
   23: #ifndef _FENV_H
   24: #define _FENV_H 1
   25: 
   26: #include <features.h>
   27: 
   28: /* Get the architecture dependend definitions.  The following definitions
   29:    are expected to be done:
   30: 
   31:    fenv_t       type for object representing an entire floating-point
   32:                 environment
   33: 
   34:    FE_DFL_ENV   macro of type pointer to fenv_t to be used as the argument
   35:                 to functions taking an argument of type fenv_t; in this
   36:                 case the default environment will be used
   37: 
   38:    fexcept_t    type for object representing the floating-point exception
   39:                 flags including status associated with the flags
   40: 
   41:    The following macros are defined iff the implementation supports this
   42:    kind of exception.
   43:    FE_INEXACT           inexact result
   44:    FE_DIVBYZERO         division by zero
   45:    FE_UNDERFLOW         result not representable due to underflow
   46:    FE_OVERFLOW          result not representable due to overflow
   47:    FE_INVALID           invalid operation
   48: 
   49:    FE_ALL_EXCEPT        bitwise OR of all supported exceptions
   50: 
   51:    The next macros are defined iff the appropriate rounding mode is
   52:    supported by the implementation.
   53:    FE_TONEAREST         round to nearest
   54:    FE_UPWARD            round toward +Inf
   55:    FE_DOWNWARD          round toward -Inf
   56:    FE_TOWARDZERO        round toward 0
   57: */
   58: #include <bits/fenv.h>
   59: 
   60: __BEGIN_DECLS
   61: 
   62: /* Floating-point exception handling.  */
   63: 
   64: /* Clear the supported exceptions represented by EXCEPTS.  */
   65: extern int feclearexcept (int __excepts) __THROW;
   66: 
   67: /* Store implementation-defined representation of the exception flags
   68:    indicated by EXCEPTS in the object pointed to by FLAGP.  */
   69: extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW;
   70: 
   71: /* Raise the supported exceptions represented by EXCEPTS.  */
   72: extern int feraiseexcept (int __excepts) __THROW;
   73: 
   74: /* Set complete status for exceptions indicated by EXCEPTS according to
   75:    the representation in the object pointed to by FLAGP.  */
   76: extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
   77: 
   78: /* Determine which of subset of the exceptions specified by EXCEPTS are
   79:    currently set.  */
   80: extern int fetestexcept (int __excepts) __THROW;
   81: 
   82: 
   83: /* Rounding control.  */
   84: 
   85: /* Get current rounding direction.  */
   86: extern int fegetround (void) __THROW;
   87: 
   88: /* Establish the rounding direction represented by ROUND.  */
   89: extern int fesetround (int __rounding_direction) __THROW;
   90: 
   91: 
   92: /* Floating-point environment.  */
   93: 
   94: /* Store the current floating-point environment in the object pointed
   95:    to by ENVP.  */
   96: extern int fegetenv (fenv_t *__envp) __THROW;
   97: 
   98: /* Save the current environment in the object pointed to by ENVP, clear
   99:    exception flags and install a non-stop mode (if available) for all
  100:    exceptions.  */
  101: extern int feholdexcept (fenv_t *__envp) __THROW;
  102: 
  103: /* Establish the floating-point environment represented by the object
  104:    pointed to by ENVP.  */
  105: extern int fesetenv (__const fenv_t *__envp) __THROW;
  106: 
  107: /* Save current exceptions in temporary storage, install environment
  108:    represented by object pointed to by ENVP and raise exceptions
  109:    according to saved exceptions.  */
  110: extern int feupdateenv (__const fenv_t *__envp) __THROW;
  111: 
  112: 
  113: /* Include optimization.  */
  114: #ifdef __OPTIMIZE__
  115: # include <bits/fenvinline.h>
  116: #endif
  117: 
  118: #ifdef __USE_GNU
  119: 
  120: /* Enable individual exceptions.  Will not enable more exceptions than
  121:    EXCEPTS specifies.  Returns the previous enabled exceptions if all
  122:    exceptions are successfully set, otherwise returns -1.  */
  123: extern int feenableexcept (int __excepts) __THROW;
  124: 
  125: /* Disable individual exceptions.  Will not disable more exceptions than
  126:    EXCEPTS specifies.  Returns the previous enabled exceptions if all
  127:    exceptions are successfully disabled, otherwise returns -1.  */
  128: extern int fedisableexcept (int __excepts) __THROW;
  129: 
  130: /* Return enabled exceptions.  */
  131: extern int fegetexcept (void) __THROW;
  132: #endif
  133: 
  134: __END_DECLS
  135: 
  136: #endif /* fenv.h */
Syntax (Markdown)