Namespaces
Variants

pow, powf, powl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
(C99)
pow
(C23)
(C23)
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Определено в заголовочном файле <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)
1-3) Вычисляет значение base возведенное в степень exponent .
4) Макрос общего типа: Если какой-либо аргумент имеет тип long double , 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)
вычисляет комплексную степенную функцию
(функция)