pow, powf, powl
|
Определено в заголовочном файле
<math.h>
|
||
|
float
powf
(
float
base,
float
exponent
)
;
|
(1) | (начиная с C99) |
|
double
pow
(
double
base,
double
exponent
)
;
|
(2) | |
|
long
double
powl
(
long
double
base,
long
double
exponent
)
;
|
(3) | (начиная с C99) |
|
Определено в заголовочном файле
<tgmath.h>
|
||
|
#define pow( base, exponent )
|
(4) | (начиная с C99) |
powl
вызывается. В противном случае, если какой-либо аргумент имеет целочисленный тип или тип
double
,
pow
вызывается. В противном случае,
powf
вызывается. Если хотя бы один аргумент является комплексным или мнимым, то макрос вызывает соответствующую комплексную функцию (
cpowf
,
cpow
,
cpowl
).
Содержание |
Параметры
| base | - | основание как значение с плавающей запятой |
| exponent | - | показатель степени как значение с плавающей запятой |
Возвращаемое значение
Если ошибок не возникает,
base
возводится в степень
exponent
(
base
exponent
) и возвращается результат.
Если происходит ошибка области определения, возвращается значение, определяемое реализацией (NaN, если поддерживается).
Если возникает ошибка полюса или ошибка диапазона из-за переполнения,
возвращается
±
HUGE_VAL
,
±HUGE_VALF
, или
±HUGE_VALL
.
Если происходит ошибка диапазона из-за потери значимости (underflow), возвращается корректный результат (после округления).
Обработка ошибок
Ошибки сообщаются, как указано в
math_errhandling
.
Если base является конечным и отрицательным, а exponent является конечным и нецелым, возникает ошибка домена и может возникнуть ошибка диапазона.
Если base равен нулю и exponent равен нулю, может возникнуть ошибка домена.
Если base равен нулю и exponent отрицателен, может произойти ошибка домена или ошибка полюса.
Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559),
-
pow
(
+
0
, exponent
)
, где
exponent
является отрицательным нечётным целым числом, возвращает
+∞и вызывает FE_DIVBYZERO -
pow
(
-
0
, exponent
)
, где
exponent
является отрицательным нечётным целым числом, возвращает
-∞и вызывает FE_DIVBYZERO - pow ( ± 0 , exponent ) , где exponent отрицательный, конечный и является чётным целым числом или нецелым числом, возвращает +∞ и вызывает FE_DIVBYZERO
- pow ( ± 0 , - ∞ ) возвращает +∞ и может возбудить FE_DIVBYZERO (до C23)
- pow ( + 0 , exponent ) , где exponent является положительным нечётным целым числом, возвращает +0
- pow ( - 0 , exponent ) , где exponent является положительным нечётным целым числом, возвращает -0
- pow ( ± 0 , exponent ) , где exponent является положительным нецелым числом или положительным четным целым числом, возвращает +0
- pow ( - 1 , ±∞ ) возвращает 1
-
pow
(
+
1
, exponent
)
возвращает
1
для любого
exponent
, даже когда
exponent
является
NaN -
pow
(
base, ±
0
)
возвращает
1
для любого
base
, даже когда
base
является
NaN -
pow
(
base, exponent
)
возвращает
NaNи возбуждает FE_INVALID если base является конечным и отрицательным, а exponent является конечным и нецелым. -
pow
(
base,
-
∞
)
возвращает +∞ для любого
|base|<1 -
pow
(
base,
-
∞
)
возвращает +0 для любого
|base|>1 -
pow
(
base,
+
∞
)
возвращает +0 для любого
|base|<1 -
pow
(
base,
+
∞
)
возвращает +∞ для любого
|base|>1 - pow ( - ∞, exponent ) возвращает -0, если exponent является отрицательным нечётным целым числом
- pow ( - ∞, exponent ) возвращает +0, если exponent является отрицательным нецелым числом или отрицательным чётным целым числом
- pow ( - ∞, exponent ) возвращает -∞, если exponent является положительным нечётным целым числом
- pow ( - ∞, exponent ) возвращает +∞, если exponent является положительным нецелым числом или положительным чётным целым числом
- pow ( + ∞, exponent ) возвращает +0 для любого отрицательного exponent
- pow ( + ∞, exponent ) возвращает +∞ для любого положительного exponent
- за исключением случаев, указанных выше, если любой аргумент является NaN, возвращается NaN.
Примечания
Хотя
pow
нельзя использовать для получения корня отрицательного числа,
cbrt
предоставляется для частного случая, когда
exponent
равен
1
/
3
.
Пример
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // типичное использование printf("pow(2, 10) = %f\n", pow(2, 10)); printf("pow(2, 0.5) = %f\n", pow(2, 0.5)); printf("pow(-2, -3) = %f\n", pow(-2, -3)); // специальные значения printf("pow(-1, NAN) = %f\n", pow(-1, NAN)); printf("pow(+1, NAN) = %f\n", pow(+1, NAN)); printf("pow(INFINITY, 2) = %f\n", pow(INFINITY, 2)); printf("pow(INFINITY, -1) = %f\n", pow(INFINITY, -1)); // обработка ошибок errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("pow(-1, 1/3) = %f\n", pow(-1, 1.0 / 3)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); feclearexcept(FE_ALL_EXCEPT); printf("pow(-0, -3) = %f\n", pow(-0.0, -3)); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
Возможный вывод:
pow(2, 10) = 1024.000000
pow(2, 0.5) = 1.414214
pow(-2, -3) = -0.125000
pow(-1, NAN) = nan
pow(+1, NAN) = 1.000000
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0.000000
pow(-1, 1/3) = -nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised
pow(-0, -3) = -inf
FE_DIVBYZERO raised
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.12.7.5 Функции pow
-
- 7.27 Обобщённая математика <tgmath.h>
-
- F.10.4.5 Функции pow (стр. 524-525)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.12.7.4 Функции pow (стр. 248-249)
-
- 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
-
- F.10.4.4 Функции pow (стр. 524-525)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.12.7.4 Функции pow (стр. 248-249)
-
- 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
-
- F.10.4.4 Функции pow (стр. 524-525)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.12.7.4 Функции pow (стр. 229)
-
- 7.22 Универсальная математика <tgmath.h> (стр. 335-337)
-
- F.9.4.4 Функции pow (стр. 461)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.5.5.1 Функция pow
Смотрите также
|
(C99)
(C99)
|
вычисляет квадратный корень (
√
x
)
(функция) |
|
(C99)
(C99)
(C99)
|
вычисляет кубический корень (
3
√
x
)
(функция) |
|
(C99)
(C99)
(C99)
|
вычисляет квадратный корень из суммы квадратов двух заданных чисел (
√
x
2
+y 2 ) (функция) |
|
(C99)
(C99)
(C99)
|
вычисляет комплексную степенную функцию
(функция) |
|
C++ документация
для
pow
|
|