"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment déterminer si un compilateur C++ est conforme à la norme à virgule flottante IEEE 754 ?

Comment déterminer si un compilateur C++ est conforme à la norme à virgule flottante IEEE 754 ?

Publié le 2024-11-19
Parcourir:710

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

Vérification de la norme à virgule flottante IEEE 754 en C

Déterminer si un compilateur C adhère à la norme à virgule flottante IEEE 754 se fait généralement via une définition du compilateur. Cependant, la technique utilisée pour C peut ne pas s'appliquer directement à C.

Approche spécifique en C

Heureusement, C propose une méthode simple pour effectuer cette vérification en utilisant les limites numériques. class:

std::numeric_limits::is_iec559;

Cette expression évalue à true si IEEE 754 est utilisé par le compilateur et false dans le cas contraire. Une vérification similaire peut être effectuée pour le type float :

std::numeric_limits::is_iec559;

Méthode alternative

Comme alternative à l'approche numeric_limits, vous pouvez adapter la deuxième partie de la réponse d'Adam pour 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.
  }
}

Cette approche repose sur le fait que l'IEEE 754 définit une plage spécifique d'exposants pour les nombres à virgule flottante. Si l'exposant maximum du compilateur correspond à la taille maximale d'un entier, il adhère probablement à la norme IEEE 754.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3