Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/fenv.h
1 /* Copyright (C) 1997-2026 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 /* 19 * ISO C99 7.6: Floating-point environment <fenv.h> 20 */ 21 22 #ifndef _FENV_H 23 #define _FENV_H 1 24 25 #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 26 #include <bits/libc-header-start.h> 27 28 /* Get the architecture dependent 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 femode_t type for object representing floating-point control modes 42 43 FE_DFL_MODE macro of type pointer to const femode_t to be used as the 44 argument to fesetmode; in this case the default control 45 modes will be used 46 47 The following macros are defined iff the implementation supports this 48 kind of exception. 49 FE_INEXACT inexact result 50 FE_DIVBYZERO division by zero 51 FE_UNDERFLOW result not representable due to underflow 52 FE_OVERFLOW result not representable due to overflow 53 FE_INVALID invalid operation 54 55 FE_ALL_EXCEPT bitwise OR of all supported exceptions 56 57 The next macros are defined iff the appropriate rounding mode is 58 supported by the implementation. 59 FE_TONEAREST round to nearest 60 FE_UPWARD round toward +Inf 61 FE_DOWNWARD round toward -Inf 62 FE_TOWARDZERO round toward 0 63 */ 64 #include <bits/fenv.h> 65 66 __BEGIN_DECLS 67 68 #if __GLIBC_USE (ISOC23) 69 # define __STDC_VERSION_FENV_H__ 202311L 70 #endif 71 72 /* Floating-point exception handling. */ 73 74 /* Clear the supported exceptions represented by EXCEPTS. */ 75 extern int feclearexcept (int __excepts) __THROW; 76 77 /* Store implementation-defined representation of the exception flags 78 indicated by EXCEPTS in the object pointed to by FLAGP. */ 79 extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW; 80 81 /* Raise the supported exceptions represented by EXCEPTS. */ 82 extern int feraiseexcept (int __excepts) __THROW; 83 84 #if __GLIBC_USE (IEC_60559_BFP_EXT_C23) 85 /* Set the supported exception flags represented by EXCEPTS, without 86 causing enabled traps to be taken. */ 87 extern int fesetexcept (int __excepts) __THROW; 88 #endif 89 90 /* Set complete status for exceptions indicated by EXCEPTS according to 91 the representation in the object pointed to by FLAGP. */ 92 extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW; 93 94 /* Determine which of subset of the exceptions specified by EXCEPTS are 95 currently set. */ 96 extern int fetestexcept (int __excepts) __THROW; 97 98 #if __GLIBC_USE (IEC_60559_BFP_EXT_C23) 99 /* Determine which of subset of the exceptions specified by EXCEPTS 100 are set in *FLAGP. */ 101 extern int fetestexceptflag (const fexcept_t *__flagp, int __excepts) __THROW; 102 #endif 103 104 105 /* Rounding control. */ 106 107 /* Get current rounding direction. */ 108 extern int fegetround (void) __THROW __attribute_pure__; 109 110 /* Establish the rounding direction represented by ROUND. */ 111 extern int fesetround (int __rounding_direction) __THROW; 112 113 114 /* Floating-point environment. */ 115 116 /* Store the current floating-point environment in the object pointed 117 to by ENVP. */ 118 extern int fegetenv (fenv_t *__envp) __THROW; 119 120 /* Save the current environment in the object pointed to by ENVP, clear 121 exception flags and install a non-stop mode (if available) for all 122 exceptions. */ 123 extern int feholdexcept (fenv_t *__envp) __THROW; 124 125 /* Establish the floating-point environment represented by the object 126 pointed to by ENVP. */ 127 extern int fesetenv (const fenv_t *__envp) __THROW; 128 129 /* Save current exceptions in temporary storage, install environment 130 represented by object pointed to by ENVP and raise exceptions 131 according to saved exceptions. */ 132 extern int feupdateenv (const fenv_t *__envp) __THROW; 133 134 135 /* Control modes. */ 136 137 #if __GLIBC_USE (IEC_60559_BFP_EXT_C23) 138 /* Store the current floating-point control modes in the object 139 pointed to by MODEP. */ 140 extern int fegetmode (femode_t *__modep) __THROW; 141 142 /* Establish the floating-point control modes represented by the 143 object pointed to by MODEP. */ 144 extern int fesetmode (const femode_t *__modep) __THROW; 145 #endif 146 147 148 /* NaN support. */ 149 150 #if (__GLIBC_USE (IEC_60559_BFP_EXT_C23) \ 151 && defined FE_INVALID \ 152 && defined __SUPPORT_SNAN__) 153 # define FE_SNANS_ALWAYS_SIGNAL 1 154 #endif 155 156 #ifdef __USE_GNU 157 158 /* Enable individual exceptions. Will not enable more exceptions than 159 EXCEPTS specifies. Returns the previous enabled exceptions if all 160 exceptions are successfully set, otherwise returns -1. */ 161 extern int feenableexcept (int __excepts) __THROW; 162 163 /* Disable individual exceptions. Will not disable more exceptions than 164 EXCEPTS specifies. Returns the previous enabled exceptions if all 165 exceptions are successfully disabled, otherwise returns -1. */ 166 extern int fedisableexcept (int __excepts) __THROW; 167 168 /* Return enabled exceptions. */ 169 extern int fegetexcept (void) __THROW; 170 #endif 171 172 __END_DECLS 173 174 #endif /* fenv.h */