Espaços nominais
Variantes
Acções

std::numeric_limits::tinyness_before

Da cppreference.com

 
 
Biblioteca de utilitários
Digite apoio (basic types, RTTI, type traits)
Gerenciamento de memória dinâmica
De tratamento de erros
Utilidades do programa
Variadic funções
Data e hora
Objetos de função
initializer_list(C++11)
bitset
hash(C++11)
Os operadores relacionais
Original:
Relational operators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
rel_ops::operator!=
rel_ops::operator>
rel_ops::operator<=
rel_ops::operator>=
Pares e tuplas
Original:
Pairs and tuples
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
pair
tuple(C++11)
piecewise_construct_t(C++11)
piecewise_construct(C++11)
Troque, avançar e avançar
Original:
Swap, forward and move
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
swap
forward(C++11)
move(C++11)
move_if_noexcept(C++11)
declval(C++11)
 
Digite apoio
Tipos básicos
Original:
Basic types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipos fundamentais
Tipos inteiros de largura fixos (C++11)
Limites numéricos
Original:
Numeric limits
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
numeric_limits
C numérico limita interface
Informações de tipo de tempo de execução
Original:
Runtime type information
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Características de tipo
Original:
Type traits
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Principais categorias de tipo
Original:
Primary type categories
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_void(C++11)
is_array(C++11)
is_pointer(C++11)
is_enum(C++11)
is_union(C++11)
is_class(C++11)
is_function(C++11)
is_object(C++11)
is_scalar(C++11)
is_compound(C++11)
is_integral(C++11)
is_floating_point(C++11)
is_fundamental(C++11)
is_arithmetic(C++11)
is_reference(C++11)
is_lvalue_reference(C++11)
is_rvalue_reference(C++11)
is_member_pointer(C++11)
is_member_object_pointer(C++11)
is_member_function_pointer(C++11)
Propriedades de tipo
Original:
Type properties
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_const(C++11)
is_volatile(C++11)
is_pod(C++11)
is_empty(C++11)
is_polymorphic(C++11)
is_abstract(C++11)
Operações apoiadas
Original:
Supported operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_constructible
is_trivially_constructible
is_nothrow_constructible
(C++11)
(C++11)
(C++11)
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
(C++11)
(C++11)
(C++11)
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
(C++11)
(C++11)
(C++11)
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
(C++11)
(C++11)
(C++11)
is_assignable
is_trivially_assignable
is_nothrow_assignable
(C++11)
(C++11)
(C++11)
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
(C++11)
(C++11)
(C++11)
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
(C++11)
(C++11)
(C++11)
is_destructible
is_trivially_destructible
is_nothrow_destructible
(C++11)
(C++11)
(C++11)
has_virtual_destructor(C++11)
Relacionamentos e consultas de propriedade
Original:
Relationships and property queries
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
is_same(C++11)
is_base_of(C++11)
is_convertible(C++11)
alignment_of(C++11)
rank(C++11)
extent(C++11)
Tipo modificações
Original:
Type modifications
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
remove_cv
remove_const
remove_volatile
(C++11)
(C++11)
(C++11)
add_cv
add_const
add_volatile
(C++11)
(C++11)
(C++11)
make_signed(C++11)
make_unsigned(C++11)
Transformações tipo
Original:
Type transformations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
aligned_storage(C++11)
aligned_union(C++11)
decay(C++11)
enable_if(C++11)
conditional(C++11)
common_type(C++11)
underlying_type(C++11)
result_of(C++11)
Digite constantes traço
Original:
Type trait constants
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
integral_constant(C++11)
 
std::numeric_limits
 
static const bool tinyness_before
(até C + 11)
static constexpr bool tinyness_before
(a partir do C++ 11)
O valor da std::numeric_limits<T>::has_denorm_loss é true para todos os tipos de ponto flutuante T que os resultados do teste de ponto flutuante expressões para underflow antes arredondamento.
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.

Índice

[editar] Especializações padrão

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
definida pela implementação
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
definida pela implementação
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
definida pela implementação
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.

[editar] Notas

Compatível com o padrão IEEE 754 de ponto flutuante implementações podem detectar o estouro de ponto flutuante em três 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)
depois de computação de um resultado com valor absoluto menor do que std::numeric_limits<T>::min(), essa implementação detecta tinyness antes de arredondamento (por exemplo 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)
após o arredondamento do resultado para bits std::numeric_limits<T>::digits, se o resultado é pequena, essa aplicação detecta tinyness após o arredondamento (por exemplo 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)
se a conversão do resultado arredondado para minúscula forma subnormal resultou na perda de precisão, tal implementação detecta perda 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.

[editar] Exemplo

Multiplicação do maior número subnormal pelo epsilon máquina número um maior que 1,0 fornece o valor minúsculo 0x0.fffffffffffff8p-1022 antes de arredondamento, mas o valor normal 1p-1022 após o arredondamento .
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';
}

Output:

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

[editar] Veja também

[estática]
identifies the floating-point types that detect loss of precision as denormalization loss rather than inexact result
(membro estático público constante) [edit]
[estática]
identifica o estilo desnormalização usado pelo tipo de ponto flutuante
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.

(membro estático público constante) [edit]