scalb()

Умножить число с плавающей точкой на основание, не зависящее от системы счисления, возведенное в заданную степень

Прототип:

#include <math.h>
double scalb( double x,
double n );

Аргументы:

x
Число с плавающей точкой, которое требуется умножить на экспоненту.
n
Показатель степени, который требуется применить к основанию системы счисления арифметики чисел с плавающей точкой устройства.

Библиотека:

libm

Описание:

Данные функции вычисляют x × rⁿ, где r является основанием системы счисления арифметики чисел с плавающей точкой устройства, и n является конечным числом. При r равном 2, scalb() эквивалентна ldexp().


Note: Рекомедуется использовать scalbn(), поскольку она работает с экспонентами, в отличии от имитации умножения или сложения.

Возвращаемое значение:

x × rⁿ


Note: В случае возникновения ошибки, эти функции возвращают 0, который также может быть и достоверным математическим результатом. Если вам необходимо проверить, возникла ли ошибка, установите errno в 0, вызовите функцию, и затем снова проверьте errno. Эти функции не изменяют errno в случае отсутствия ошибок.

Примеры:

#include <stdio.h>
#include <errno.h>
#include <inttypes.h>
#include <math.h>
#include <fpstatus.h>
int main( void )
{
double a, b, c, d;
a = 10;
b = 2;
c = scalb( a, b );
d = sqrt( c / a );
printf( "Radix of machines fp arithmetic is %f \n", d );
printf( "So %f = %f * (%f ^ %f) \n", c, a, d, b );
return (0);
}

Код генерирует следующий вывод:

$ ./a.out Radix of machines fp arithmetic is 2.000000 So 40.000000 = 10.000000 * (2.000000 ^ 2.000000)

Классификация:

POSIX 1003.1 XSI

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

ldexp(), scalbn()




Предыдущий раздел: Описание API математической библиотеки