"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você determina se um compilador C++ está em conformidade com o padrão de ponto flutuante IEEE 754?

Como você determina se um compilador C++ está em conformidade com o padrão de ponto flutuante IEEE 754?

Publicado em 19/11/2024
Navegar:296

How do you determine if a C   compiler conforms to the IEEE 754 floating point standard?

Verificando o padrão de ponto flutuante IEEE 754 em C

Determinar se um compilador C adere ao padrão de ponto flutuante IEEE 754 normalmente é realizado através um compilador define. No entanto, a técnica usada para C pode não se aplicar diretamente a C .

C -Specific Approach

Felizmente, C oferece um método direto para realizar essa verificação usando numeric_limits class:

std::numeric_limits::is_iec559;

Esta expressão é avaliada como verdadeira se IEEE 754 for utilizada pelo compilador e como falsa caso contrário. Uma verificação semelhante pode ser realizada para o tipo float:

std::numeric_limits::is_iec559;

Alternative Method

Como alternativa à abordagem numeric_limits, você pode adaptar a segunda parte da resposta de Adam para C :

#include 

int main() {
  // Check for IEEE 754 compliance by checking for a finite number of float exponents.
  if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
    // Compiler uses IEEE 754.
  } else {
    // Compiler does not use IEEE 754.
  }
}

Essa abordagem se baseia no fato de que o IEEE 754 define um intervalo específico de expoentes para números de ponto flutuante. Se o expoente máximo do compilador corresponder ao tamanho máximo de um número inteiro, provavelmente ele está aderindo ao IEEE 754.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3