oracular (3) fenv.3.gz

Provided by: manpages-es-dev_4.23.1-1_all bug

NOMBRE

       feclearexcept,  fegetexceptflag,  feraiseexcept,  fesetexceptflag,  fetestexcept,  fegetenv,  fegetround,
       feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept -  redondeo
       de coma flotante y gestión de excepciones

BIBLIOTECA

       Biblioteca Matemática (libm, -lm)

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);

DESCRIPCIÓN

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

   Excepciones
       La excepción «dividir entre 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.

   Modo de Redondeo
       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     No se puede determinar el modo de redondeo.

       0      El redondeo tiende a 0.

       1      El redondeo tiende al número más próximo.

       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

       Estas funciones devuelven cero si no ocurre ningún error y un valor distinto  de  cero  si  ocurre  algún
       error.

ATRIBUTOS

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

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

ESTÁNDARES

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

HISTORIAL

       C99, POSIX.1-2001.  glibc 2.1.

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 glibc 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)

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>
       y Marcos Fouces <marcos@debian.org>

       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⟩.