Умножить число с плавающей точкой на основание, не зависящее от системы счисления, возведенное в заданную степень
#include <math.h>double scalb( double x,double n );
libm
Данные функции вычисляют x × rⁿ, где r является основанием системы счисления арифметики чисел с плавающей точкой устройства, и n является конечным числом. При r равном 2
, scalb() эквивалентна ldexp().
Рекомедуется использовать scalbn(), поскольку она работает с экспонентами, в отличии от имитации умножения или сложения. |
x × rⁿ
В случае возникновения ошибки, эти функции возвращают 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 X/Open Systems Interfaces Extension
Предыдущий раздел: Описание API математической библиотеки