La fonction ilogb () en C ++ renvoie la partie intégrale du logarithme de | x |, en utilisant FLT_RADIX comme base du logarithme.
Ceci est défini dans le fichier d'en-tête.
Mathématiquement,
x = significand * FLT_RADIXexponent
significand est une valeur à virgule flottante dans la plage (1.0, 2.0), x est l'argument passé à ilogb () et exponent est la valeur entière renvoyée par ilogb (). La valeur de FLT_RADIX est généralement 2.
La valeur retournée par ilogb () est un de moins que l'exposant généré par la fonction frexp (), puisque le significande est dans l'intervalle (1.0, 2.0) au lieu de (0.5, 1.0) comme dans frexp ().
prototype ilogb () (à partir de la norme C ++ 11)
int ilogb (double x); int ilogb (float x); int ilogb (long double x); int ilogb (T x); // Pour le type intégral
Paramètres ilogb ()
La fonction ilogb () prend un seul argument dont ilogb est calculé.
ilogb () Valeur de retour
La fonction ilogb () renvoie la partie intégrale du logarithme de | x |, en utilisant FLT_RADIX comme base du logarithme.
- Si l'argument est 0, il renvoie FP_LOGB0.
- Si l'argument est NaN, il renvoie FP_LOGBNAN.
- Si l'argument est infini, il renvoie INT_MAX.
Exemple 1: Comment fonctionne la fonction ilogb () en C ++?
#include #include #include using namespace std; int main() ( int result; double significand; double x = 16.81; result = ilogb(x); significand = x / pow(FLT_RADIX, result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; )
Lorsque vous exécutez le programme, la sortie sera:
ilogb (16,81) = 4 16,81 = 1,05062 * 2 4
Exemple 2: fonction ilogb () avec type intégral
#include #include #include using namespace std; int main() ( int result, x = 19; result = ilogb(x); double significand = x/pow(FLT_RADIX,result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; )
Lorsque vous exécutez le programme, la sortie sera:
ilogb (19) = 4 19 = 1,1875 * 2 4