La funzione ilogb () in C ++ restituisce la parte integrale del logaritmo di | x |, utilizzando FLT_RADIX come base per il logaritmo.
Questo è definito nel file di intestazione.
Matematicamente,
x = significando * FLT_RADIXesponente
significand è un valore in virgola mobile nell'intervallo (1.0, 2.0), x è l'argomento passato a ilogb () e exponent è il valore intero restituito da ilogb (). Il valore di FLT_RADIX è generalmente 2.
Il valore restituito da ilogb () è uno in meno rispetto all'esponente generato dalla funzione frexp (), poiché il significante è compreso nell'intervallo (1.0, 2.0) invece di (0.5, 1.0) come in frexp ().
Prototipo ilogb () (come dallo standard C ++ 11)
int ilogb (doppia x); int ilogb (float x); int ilogb (lunga doppia x); int ilogb (T x); // Per il tipo integrale
Parametri ilogb ()
La funzione ilogb () accetta un singolo argomento di cui viene calcolato ilogb.
ilogb () Restituisce il valore
La funzione ilogb () restituisce la parte integrale del logaritmo di | x |, utilizzando FLT_RADIX come base per il logaritmo.
- Se l'argomento è 0, restituisce FP_LOGB0.
- Se l'argomento è NaN, restituisce FP_LOGBNAN.
- Se l'argomento è infinito, restituisce INT_MAX.
Esempio 1: come funziona la funzione ilogb () in 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; )
Quando esegui il programma, l'output sarà:
ilogb (16,81) = 4 16,81 = 1,05062 * 2 4
Esempio 2: funzione ilogb () con tipo integrale
#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; )
Quando esegui il programma, l'output sarà:
ilogb (19) = 4 19 = 1,1875 * 2 4