Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       feclearexcept,  fegetexceptflag,  feraiseexcept,  fesetexceptflag, fetestexcept, fegetenv,
       fegetround,   feholdexcept,    fesetround,    fesetenv,    feupdateenv,    feenableexcept,
       fedisableexcept,                               fegetexcept                               -
       file:///home/mariobl/Downloads/manpages-es-1.55/po/man3/fenv.3.po

SINOPSIS

       #include <fenv.h>

       int feclearexcept(int excepts);
       int fegetexceptflag(fexcept_t *flagp, int excepts);
       int feraiseexcept(int excepts);
       int fesetexceptflag(const fexcept_t *flagp, int excepts);
       int fetestexcept(int excepts);

       int fegetround(void);
       int fesetround(int rounding_mode);

       int fegetenv(fenv_t *envp);
       int feholdexcept(fenv_t *envp);
       int fesetenv(const fenv_t *envp);
       int feupdateenv(const fenv_t *envp);

       Enlazar con -lm.

DESCRIPCIÓN

       Estas once funciones fueron definidas dentro de C99 y describen el manejo del  redondeo  y
       de las excepciones (desbordamiento por arriba, dividir-por-cero etc.) en coma flotante.

   Excepciones
       La excepción «dividir por cero» (divide-by-zero) ocurre cuando una operación sobre números
       finitos produce infinito como resultado exacto.

       La excepción «desbordamiento por arriba» (overflow) ocurre cuando un resultado  tiene  que
       ser  representado  como  un número en coma flotante, pero su valor absoluto es (mucho) más
       grande.

       La excepción «desbordamiento por abajo» (underflow) ocurre cuando un resultado  tiene  que
       ser  representado  como  un número en coma flotante, pero su valor absoluto es más pequeño
       que el número positivo en coma flotante normalizado  más  pequeño  (y  se  perdería  mucha
       precisión si se representara como un número desnormalizado).

       The  exception  «inexacto»  (Inexact)  se  produce  cuando  el resultado redondeado de una
       operación no es igual al resultado de precisión infinita. Puede  ocurrir  siempre  que  se
       produzca un desbordamiento por arriba (overflow) o por abajo (underflow).

       La  excepción  «inválido»  (invalid)  ocurre  cuando no hay un resultado definido para una
       operación, como por ejemplo 0/0 o infinito - infinito o sqrt(-1).

   Manejo de excepciones
       Las excepciones  se  representan  de  dos  maneras:  como  un  bit  individual  (excepción
       presente/ausente),  que  se  sitúa  dentro  de  un entero de alguna manera definida por la
       implementación, y también como una estructura opaca que  puede  contener  más  información
       sobre la excepción (tal vez la dirección dentro del código donde se produjo).

       Cada  una de las macros FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW, FE_UNDERFLOW se
       define cuando la  implementación  soporta  el  manejo  de  la  correspondiente  excepción,
       definiendose  también el bit correspondiente, de forma que se pueda llamar a las funciones
       de manejo de excepciones usando p.e. el argumento entero  FE_OVERFLOW|FE_UNDERFLOW.  Otras
       excepciones  pueden  estar  soportadas. La macro FE_ALL_EXCEPT está formada mediante un OR
       lógico con todos los bits que se corresponden con excepciones soportadas.

       La función feclearexcept() limpia las excepciones soportadas representadas por los bits de
       su argumento.

       La  función  fegetexceptflag()  almacena  una representación del estado de las banderas de
       excepción representadas por el argumento excepts en el objeto opaco *flagp.

       La función feraiseexcept() lanza las excepciones soportadas representadas por los bits  en
       excepts.

       La  función  fesetexceptflag()  configura  por  completo  la  situación de las excepciones
       representadas por excepts según el valor dado por  *flagp.  Este  valor  debe  haber  sido
       obtenido  mediante  una  llamada  previa  a  fegetexceptflag() con un último argumento que
       tuviera todos los bits en excepts.

       La función fetestexcept() devuelve una palabra en la que los bits activos son aquellos que
       estaban  activos  en el argumento excepts y para los que la excepción correspondiente está
       activa actualmente.

   Rounding mode
       The rounding mode determines how the result of floating-point operations is  treated  when
       the  result  cannot be exactly represented in the significand.  Various rounding modes may
       be provided: round to nearest (the default), round up (toward  positive  infinity),  round
       down (toward negative infinity), and round toward zero.

       Cada  una  de  las  macros FE_TONEAREST, FE_UPWARD, FE_DOWNWARD, y FE_TOWARDZERO se define
       cuando la implementación soporta el obtener y establecer la correspondiente  dirección  de
       redondeo.

       La función fegetround() devuelve la macro correspondiente al modo actual de redondeo.

       La función fesetround() fija el modo de redondeo según especifique su argumento y devuelve
       cero cuando tiene éxito.

       C99 and POSIX.1-2008 specify  an  identifier,  FLT_ROUNDS,  defined  in  <float.h>,  which
       indicates  the implementation-defined rounding behavior for floating-point addition.  This
       identifier has one of the following values:

       -1     The rounding mode is not determinable.

       0      Rounding is toward 0.

       1      Rounding is toward nearest number.

       2      Rounding is toward positive infinity.

       3      Rounding is toward negative infinity.

       Other values represent machine-dependent, nonstandard rounding modes.

       The value of FLT_ROUNDS should reflect the current rounding mode as  set  by  fesetround()
       (but see BUGS).

   Entorno de coma flotante
       El  entorno  de coma flotante por completo, incluyendo los modos de control y las banderas
       de estado, puede ser manejado como un objeto opaco, de tipo fenv_t. El entorno por defecto
       se  denota  por  FE_DFL_ENV  (de tipo const fenv_t *). El entorno por defecto determina la
       configuración del entorno al inicio de la ejecución de un programa y, según  establece  el
       ISO C, equivale a redondear al más cercano, tener todas las expeciones desactivadas y usar
       un modo de no-parada (continuar en excepciones).

       La función fegetenv() guarda el entorno de coma flotante actual en el objeto *envp.

       La función feholdexcept() hace lo mismo y a continuación  limpia  todas  las  banderas  de
       excepción y establece un modo de no-parada (continuar en excepciones), si ésto es posible.
       Devuelve cero cuando tiene éxito.

       La función fesetenv() restablece el entorno  de  coma  flotante  según  el  objeto  *envp.
       Debemos  asegurarnos de que este objeto es válido, es decir, de que es el resultado de una
       llamada a fegetenv() o feholdexcept() o de que es igual  a  FE_DFL_ENV.  Ésta  llamada  no
       provoca excepciones.

       La  función  feupdateenv()  instala el entorno de coma flotante representado por el objeto
       *envp, pero no desactiva las excepciones actualmente lanzadas. Tras llamar a esta función,
       las  excepciones  lanzadas  vendrán  dadas  por el resultado de un O-lógico entre aquellas
       previamente activas y las que haya en *envp. Como antes, debemos  asegurarnos  de  que  el
       objeto *envp es válido.

VALOR DEVUELTO

       These functions return zero on success and nonzero if an error occurred.

VERSIONES

       These functions first appeared in glibc in version 2.1.

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

       ┌────────────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├────────────────────────────────────┼────────────────────┼───────────────────┤
       │feclearexcept(), fegetexceptflag(), │ Seguridad del hilo │ Multi-hilo seguro │
       │feraiseexcept(), fesetexceptflag(), │                    │                   │
       │fetestexcept(), fegetround(),       │                    │                   │
       │fesetround(), fegetenv(),           │                    │                   │
       │feholdexcept(), fesetenv(),         │                    │                   │
       │feupdateenv(), feenableexcept(),    │                    │                   │
       │fedisableexcept(), fegetexcept()    │                    │                   │
       └────────────────────────────────────┴────────────────────┴───────────────────┘

CONFORME A

       IEC 60559 (IEC 559:1989), ANSI/IEEE 854, C99, POSIX.1-2001.

NOTAS

   Glibc notes
       If  possible,  the  GNU  C  Library  defines  a  macro  FE_NOMASK_ENV  which represents an
       environment where every exception raised causes a trap to occur.  You can  test  for  this
       macro  using #ifdef.  It is defined only if _GNU_SOURCE is defined.  The C99 standard does
       not define a way to set individual bits in the floating-point mask, for example,  to  trap
       on  specific  flags.  Since version 2.2, glibc supports the functions feenableexcept() and
       fedisableexcept()  to set individual floating-point traps, and fegetexcept()  to query the
       state.

       #define _GNU_SOURCE         /* Vea feature_test_macros(7) */
       #include <fenv.h>

       int feenableexcept(int excepts);
       int fedisableexcept(int excepts);
       int fegetexcept(void);

       Las  funciones  feenableexcept() y fedisableexcept() habilitan (deshabilitan) trampas para
       cada excepción representada por excepts y devuelven  el  conjunto  previo  de  excepciones
       habilitadas  cuando tienen éxito y -1 en caso contrario. La función fegetexcept() devuelve
       el conjunto de todas las excepciones habilitadas actualmente.

ERRORES

       C99 specifies that the value of FLT_ROUNDS should reflect changes to the current  rounding
       mode,  as  set by fesetround().  Currently, this does not occur: FLT_ROUNDS always has the
       value 1.

VÉASE TAMBIÉN

       math_error(7)

COLOFÓN

       Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar  una
       descripción  del  proyecto, información sobre cómo informar errores y la última versión de
       esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La traducción al español de esta página del manual  fue  creada  por  Miguel  Pérez  Ibars
       <mpi79470@alu.um.es>

       Esta  traducción  es  documentación  libre;  lea  la  GNU General Public License Version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ o posterior con respecto a las condiciones  de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si  encuentra  algún  error  en  la  traducción de esta página del manual, envíe un correo
       electrónico a debian-l10n-spanish@lists.debian.org ⟨⟩.