pow, powf, powl
Defined in header <math.h> |
||
|---|---|---|
float powf( float base, float exponent ); |
(1) | (since C99) |
double pow( double base, double exponent ); |
(2) | |
long double powl( long double base, long double exponent ); |
(3) | (since C99) |
Defined in header <tgmath.h> |
||
#define pow( base, exponent ) |
(4) | (since 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 <stdio.h>
#include <math.h>
#include <errno.h>
#include <fenv.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:2023):
- 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/w/c/numeric/math/pow