2010-11-15 7 views
2

J'essaie de comprendre le fonctionnement de logb(), c'est manual dit "La fonction logb() calcule l'exposant de x, qui est la partie intégrante de $ \ log_r^{| x |} $, en tant que valeur à virgule flottante signée, pour un x non nul, où r est la base de l'arithmétique à virgule flottante de la machine. "Comprendre le fonctionnement de logb()

Je suis curieux de savoir pour calculer ce r pour une machine particulière?

Répondre

4

FLT_RADIX dans <float.h>. Dans le monde réel, c'est toujours 2, et le point flottant IEEE l'exige pour être 2.

+1

@R. La norme IEEE 754-2008 spécifie en fait l'arithmétique f-p de la base 2 et de la base 10. –

+1

Toutefois, une implémentation C ou C++ conforme IEEE 754 utilise des nombres flottants binaires 32 bits et 64 bits (simple et double précision) pour les types 'float' et' double', indépendamment de l'existence d'extensions décimales. Les révisions des normes C et C++ suivantes contiendront probablement de nouveaux types pour le virgule flottante décimale. –

3

Vous pouvez interroger le radix pour un type de virgule flottante donné sur une machine donnée en utilisant le modèle std::numeric_limits à partir de l'en-tête <limits>.

#include <limits> 

std::numeric_limits<float>::radix;