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) |
base в степени exponent.long double, вызывается powl. В противном случае, если хотя бы один аргумент имеет целочисленный тип или тип double, вызывается pow. В противном случае вызывается powf. Если хотя бы один аргумент является комплексным или мнимым числом, макрос вызывает соответствующую комплексную функцию (cpowf, cpow, cpowl).Параметры
| base | - | основание в виде числа с плавающей точкой |
| exponent | - | показатель степени в виде числа с плавающей точкой |
Возвращаемое значение
Если ошибок не возникает, возвращается base в степени exponent (baseexponent).
При ошибке области определения возвращается значение, определяемое реализацией (NaN, если поддерживается).
При ошибке полюса или ошибке диапазона из-за переполнения возвращается ±HUGE_VAL, ±HUGE_VALF или ±HUGE_VALL.
При ошибке диапазона из-за потери порядка возвращается правильный результат (после округления).
Обработка ошибок
Об ошибках сообщается в соответствии с указаниями в 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)
{
// typical usage
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));
// special values
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));
// error handling
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) | вычисляет квадратный корень (\(\small{\sqrt{x} }\)√x) (функция) |
|
(C99)(C99)(C99) | вычисляет кубический корень (\(\small{\sqrt[3]{x} }\)3√x) (функция) |
|
(C99)(C99)(C99) | вычисляет квадратный корень из суммы квадратов двух заданных чисел (\(\scriptsize{\sqrt{x^2+y^2} }\)√x2+y2) (функция) |
|
(C99)(C99)(C99) | вычисляет функцию возведения комплексного числа в степень (функция) |
Документация C++ для pow |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/math/pow