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 - 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)
복소수 거듭제곱 함수를 계산합니다
(함수)