Вычислить экспоненту, не зависящую от системы счисления
#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 математической библиотеки