Entorno de punto flotante
El entorno de punto[1] flotante es el conjunto de indicadores de estado de punto flotante y modos de control admitidos por la implementación. Es local al hilo. Cada hilo hereda el estado inicial de su entorno de punto flotante del hilo principal. Las operaciones de punto flotante modifican los indicadores de estado de la punto flotante para indicar resultados anormales o información auxiliar. El estado de los modos de control de punto flotante afecta los resultados de algunas operaciones de punto flotante.
El acceso y modificación del entorno de punto flotante solo es significativo cuando se admite #pragma STDC FENV_ACCESS y se establece en ON
. De lo contrario, la implementación es libre de asumir que los modos de control de punto flotante son siempre los predeterminados y que los indicadores de estado de punto flotante nunca se prueban ni modifican. En la práctica, pocos compiladores actuales, como HP aCC, Oracle Studio o IBM XL, admiten #pragma
explícitamente, pero la mayoría de los compiladores permiten un acceso significativo al entorno de punto flotante de todos modos.
Contenido |
[editar]Tipos
Definido en el archivo de encabezado <cfenv> | |
fenv_t | El tipo que representa todo el entorno de punto flotante. |
fexcept_t | El tipo que representa todos los indicadores de estado de punto flotante colectivamente |
[editar]Funciones
(C++11) | borra los especificados en coma flotante indicadores de estado Original: clears the specified floating-point status flags The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11) | determina cuál de los indicadores de estado de punto flotante especificado se establecen Original: determines which of the specified floating-point status flags are set The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11) | eleva los especificados excepciones de punto flotante Original: raises the specified floating-point exceptions The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11)(C++11) | copia el estado de los indicadores de estado de punto flotante especificado desde o hacia el entorno de punto flotante Original: copies the state of the specified floating-point status flags from or to the floating-point environment The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11)(C++11) | Obtiene o establece la dirección redondeo (función) |
(C++11) | guarda o restaura el entorno actual de punto flotante Original: saves or restores the current floating point environment The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11) | protege el medio ambiente, se borran todos los indicadores de estado y hace caso omiso de todos los errores en el futuro Original: saves the environment, clears all status flags and ignores all future errors The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
(C++11) | restaura el entorno de coma flotante y plantea la anteriormente lanzar excepciones Original: restores the floating-point environment and raises the previously raise exceptions The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |
[editar]Macros
excepciones de punto flotante Original: floating-point exceptions The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (constante de macro) | |
de punto flotante de redondeo dirección Original: floating-point rounding direction The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (constante de macro) | |
(C++11) | defecto de punto flotante de medio ambiente Original: default floating-point environment The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (constante de macro) |
[editar]Notas
Las excepciones de punto flotante no están relacionadas con las excepciones de C++. Cuando una operación de punto flotante genera una excepción de punto flotante, el estado del entorno de punto flotante cambia, lo cual se puede probar con std::fetestexcept, pero la ejecución de un programa C++ en la mayoría de las implementaciones continúa ininterrumpido.
Hay extensiones de compilador que pueden usarse para generar excepciones de C++ automáticamente cada vez que se genera una excepción de punto flotante:
- La función
feenableexcept()
de libc de GNU habilita la captura de las excepciones de punto flotante, lo que genera la señalSIGFPE
. Si se usó la opción del compilador-fnon-call-exceptions
el controloador de esa señal puede lanzar una excepción de C++ definida por el usuario. - La función
_control87()
de MSVC habilita la captura de las excepciones de punto flotante, lo que genera una excepción de hardware, que puede convertirse a excepciones de C++ con_set_se_translator
.
[editar]Véase también
Documentación de C para Entorno de punto flotante |