Умножить число с плавающей точкой на основание, не зависящее от системы счисления, возведенное в заданную степень
#include <math.h>double scalbn( double x,int n );float scalbnf( float x,int n );
libm
Функции scalbn() и scalbnf() вычисляют x × rⁿ, где r является основанием системы счисления арифметики чисел с плавающей точкой устройства.
x × rⁿ
Когда корректное знаение вызывает ошибку underflow, эти функции возвращают 0.0
.
В случае возникновения ошибки, эти функции возвращают 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 = scalbn( 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)
ANSI, POSIX 1003.1
Предыдущий раздел: Описание API математической библиотеки