Espacios de nombres
Variantes

std::numeric_limits::tinyness_before

De cppreference.com
 
 
Biblioteca de servicios
 
Apoyo de tipos
Tipos básicos
Tipos fundamentales
Tipos enteros de anchura fija (C++11)
Límites numéricos
Interfaz de C de límites numéricos
Información de tipo
en tiempo de ejecución
Rasgos de tipos
Categorías de tipos
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(hasta C++20)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipos
Metafunciones
(C++17)
Contexto de evaluación constante
Operaciones soportadas
Relaciones y consultas de propiedades
Modificaciones de tipos
(C++11)(C++11)(C++11)
Transformaciones de tipos
(C++11)
(C++11)
(C++17)
(C++11)(hasta C++20)(C++17)
 
std::numeric_limits
 
<tbody> </tbody>
static const bool tinyness_before
(hasta C++11)
static constexpr bool tinyness_before
(desde C++11)
El valor de std::numeric_limits<T>::has_denorm_loss es true para todos los tipos de punto flotante T que los resultados de pruebas de punto flotante expresiones de desbordamiento antes de redondeo .
Original:
The value of std::numeric_limits<T>::has_denorm_loss is true for all floating-point types T that test results of floating-point expressions for underflow before rounding.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Especializaciones estándar

T
valor de std::numeric_limits<T>::tinyness_before
Original:
value of std::numeric_limits<T>::tinyness_before
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
/* non-specialized */ false
bool false
char false
signed char false
unsigned char false
wchar_t false
char16_t false
char32_t false
short false
unsigned short false
int false
unsigned int false
long false
unsigned long false
long long false
unsigned long long false
float
definido por la implantación
Original:
implementation-defined
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
double
definido por la implantación
Original:
implementation-defined
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
long double
definido por la implantación
Original:
implementation-defined
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Notas

Compatible con el estándar IEEE 754 de punto flotante implementaciones pueden detectar el desbordamiento de coma flotante en tres momentos predefinidos:
Original:
Standard-compliant IEEE 754 floating-point implementations may detect the floating-point underflow at three predefined moments:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

1)

después del cálculo de un resultado con valor absoluto menor que std::numeric_limits<T>::min(), dicho ejercicio detecta tinyness antes del redondeo (por ejemplo, UltraSparc)
Original:
after computation of a result with absolute value smaller than std::numeric_limits<T>::min(), such implementation detects tinyness before rounding (e.g. UltraSparc)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

2)

después de redondear el resultado a los bits std::numeric_limits<T>::digits, si el resultado es muy pequeño, tal aplicación detecta tinyness después de redondear (por ejemplo SuperSPARC)
Original:
after rounding of the result to std::numeric_limits<T>::digits bits, if the result is tiny, such implementation detects tinyness after rounding (e.g. SuperSparc)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

3)

si la conversión del resultado redondeado se formen pequeñas subnormal resultó en la pérdida de precisión, dicha aplicación detecta la pérdida de denorm .
Original:
if the conversion of the rounded tiny result to subnormal form resulted in the loss of precision, such implementation detects denorm loss.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Ejemplo

Multiplicación del mayor número subnormal por el número epsilon una máquina superior a 1,0 indica el valor minúsculo 0x0.fffffffffffff8p-1022 antes de redondear, pero el valor normal 1p-1022 después de redondear .
Original:
Multiplication of the largest subnormal number by the number one machine epsilon greater than 1.0 gives the tiny value 0x0.fffffffffffff8p-1022 before rounding, but normal value 1p-1022 after rounding.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <iostream>
#include <limits>
#include <cmath>
#include <cfenv>
int main()
{
    double denorm_max = std::nextafter(std::numeric_limits<double>::min(), 0);
    double multiplier = 1 + std::numeric_limits<double>::epsilon();

    std::feclearexcept(FE_ALL_EXCEPT);

    double result = denorm_max*multiplier; // Underflow only if tinyness_before

    if(std::fetestexcept(FE_UNDERFLOW))
        std::cout << "Underflow detected\n";
    else if (std::fetestexcept(FE_INEXACT))
        std::cout << "Inexact result detected\n";

    std::cout << std::hexfloat << denorm_max << " x " << multiplier  <<  " = "
              << result << '\n';
}

Salida:

Inexact result detected
0x0.fffffffffffffp-1022 x 0x1.0000000000001p+0 = 0x1p-1022

Ver también

[estático]
identifies the floating-point types that detect loss of precision as denormalization loss rather than inexact result
(constante miembro pública estática) [editar]
[estático]
identifica el estilo desnormalización utilizado por el tipo de punto flotante
Original:
identifies the denormalization style used by the floating-point type
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(constante miembro pública estática) [editar]