Вычислить экспоненту, не зависящую от системы счисления
#include <math.h>double logb( double x );float logbf( float x );
libm
Функции logb() и logbf() вычисляют:
logᵣ |x|
и представляют результат в виде числа с плавающей точкой, для ненулевых конечных x, где r - основание системы счисления арифметики чисел с плавающей точкой устройства.
Экспонента x в двоичной системе счисления, знаковое целое число, сконвертированное в число с плавающей точкой с двойной точностью (double).
| Если x равен: | logb() возвращает: | 
|---|---|
| 0.0 | -HUGE_VAL(errno установлено вEDOM) | 
| <0.0 | -HUGE_VAL(errno может быть установлено вERANGE) | 
| ±Inf | +Inf | 
|  | В случае возникновения ошибки, эти функции возвращают 0, который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в0, вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок. | 
#include <stdio.h>#include <errno.h>#include <inttypes.h>#include <math.h>#include <fpstatus.h>int main( int argc, char** argv ){double a, b;a = 0.5;b = logb( a );printf( "logb(%f) = %f (%f = 2^%f) \n", a, b, a, b );return (0);}
Код генерирует следующий вывод:
$ ./a.out logb(0.500000) = -1.000000 (0.500000 = 2^-1.000000)
ANSI, POSIX 1003.1
ilogb(), log(), log10(), log1p()
 
Предыдущий раздел:  Описание API математической библиотеки