Namespaces
Variants

pow, powf, powl

From ko.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 - base를 부동소수점 값으로
exponent - exponent를 부동소수점 값으로

반환값

오류가 발생하지 않으면, base 의 exponent 제곱( base exponent
)이 반환됩니다.

도메인 오류가 발생하면 구현에서 정의한 값이 반환됩니다(NaN을 지원하는 경우 해당 값).

극점 오류 또는 오버플로로 인한 범위 오류가 발생하는 경우, ± HUGE_VAL , ±HUGE_VALF , 또는 ±HUGE_VALL 가 반환됩니다.

언더플로우로 인해 범위 오류가 발생하는 경우, 올바른 결과(반올림 후)가 반환됩니다.

오류 처리

오류는 math_errhandling 에 명시된 대로 보고됩니다.

만약 base 가 유한하고 음수이며 exponent 가 유한하고 정수가 아닌 경우, 도메인 오류가 발생하고 범위 오류가 발생할 수 있습니다.

만약 base 가 0이고 exponent 가 0이면, 도메인 오류가 발생할 수 있습니다.

만약 base 가 0이고 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 가 NaN 인 경우에도 모든 exponent 에 대해
  • pow ( base, ± 0 ) 는 1 을 반환합니다. 이는 base 가 NaN 인 경우에도 적용됩니다.
  • pow ( base, exponent ) NaN 을 반환하고 FE_INVALID 를 발생시킵니다, 만약 base 가 유한하고 음수이며 exponent 가 유한하고 정수가 아닌 경우.
  • pow ( base, - ∞ ) |base|<1 인 모든 경우에 대해 +∞를 반환합니다
  • pow ( base, - ∞ ) 는 모든 |base|>1 에 대해 +0을 반환합니다
  • pow ( base, + ∞ ) 는 |base|<1 인 모든 경우에 대해 +0을 반환합니다
  • pow ( base, + ∞ ) 는 |base|>1 인 모든 경우에 대해 +∞를 반환합니다
  • pow ( - ∞, exponent ) 는 exponent 가 음의 홀수 정수일 경우 -0을 반환합니다
  • pow ( - ∞, exponent ) 는 exponent 가 음의 비정수 또는 음의 짝수 정수일 경우 +0을 반환합니다
  • pow ( - ∞, exponent ) 는 exponent 가 양의 홀수 정수일 경우 -∞를 반환합니다
  • pow ( - ∞, exponent ) 는 exponent 가 양의 비정수 또는 양의 짝수 정수일 때 +∞를 반환합니다
  • pow ( + ∞, exponent ) 는 모든 음수 exponent 에 대해 +0을 반환합니다
  • 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 함수들 (p: 524-525)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.12.7.4 pow 함수들 (p: 248-249)
  • 7.25 타입-제네릭 수학 <tgmath.h> (p: 373-375)
  • F.10.4.4 pow 함수들 (p: 524-525)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.12.7.4 pow 함수들 (p: 248-249)
  • 7.25 타입-제네릭 수학 <tgmath.h> (p: 373-375)
  • F.10.4.4 pow 함수들 (p: 524-525)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.12.7.4 The pow functions (p: 229)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.4.4 The pow functions (p: 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)
복소수 거듭제곱 함수를 계산합니다
(함수)