Complex number arithmetic
|
구현체가 매크로 상수
|
(C11부터) |
C 프로그래밍 언어는 C99 기준으로 세 가지 내장 타입 double _Complex , float _Complex , 그리고 long double _Complex 를 통해 복소수 연산을 지원합니다 ( _Complex 참조). <complex.h> 헤더를 포함하면, 이 세 가지 복소수 타입은 double complex , float complex , long double complex 로도 접근 가능합니다.
복소수 타입에 더해, 세 가지 허수 타입이 지원될 수 있습니다: double _Imaginary , float _Imaginary , 그리고 long double _Imaginary (참조: _Imaginary ). <complex.h> 헤더를 포함할 때, 이 세 가지 허수 타입은 또한 double imaginary , float imaginary , 그리고 long double imaginary 로 접근 가능합니다.
표준 산술 연산자 + , - , * , / 는 실수, 복소수, 허수 타입과 어떤 조합으로도 사용할 수 있습니다.
|
|
(C99부터)
(C11까지) |
|
|
(C11부터) |
|
헤더 파일에 정의됨
<complex.h>
|
||
타입 |
||
|
(C99)
|
허수 타입 매크로
(키워드 매크로) |
|
|
(C99)
|
복소수 타입 매크로
(키워드 매크로) |
|
허수 상수 |
||
|
(C99)
|
허수 단위 상수 i
(매크로 상수) |
|
|
(C99)
|
복소수 단위 상수 i
(매크로 상수) |
|
|
(C99)
|
복소수 또는 허수 단위 상수 i
(매크로 상수) |
|
조작 |
||
|
(C11)
(C11)
(C11)
|
실수부와 허수부로 복소수를 생성합니다
(함수 매크로) |
|
|
(C99)
(C99)
(C99)
|
복소수의 실수부를 계산함
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수의 허수부를 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수의 크기를 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수의 위상각을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 공액을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
리만 구면에 대한 투영을 계산함
(함수) |
|
지수 함수 |
||
|
(C99)
(C99)
(C99)
|
복소수 e 밑 지수 함수를 계산함
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 자연 로그를 계산합니다
(함수) |
|
거듭제곱 함수 |
||
|
(C99)
(C99)
(C99)
|
복소수 거듭제곱 함수를 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 제곱근을 계산합니다
(함수) |
|
삼각 함수 |
||
|
(C99)
(C99)
(C99)
|
복소 사인을 계산함
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 코사인을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 탄젠트를 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 아크 사인 계산
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 아크 코사인을 계산함
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 아크 탄젠트를 계산합니다
(함수) |
|
쌍곡선 함수 |
||
|
(C99)
(C99)
(C99)
|
복소 쌍곡사인 값을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 쌍곡선 코사인을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 쌍곡탄젠트를 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 아크 쌍곡사인 계산
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소수 아크 쌍곡선 코사인을 계산합니다
(함수) |
|
|
(C99)
(C99)
(C99)
|
복소 아크 쌍곡탄젠트를 계산합니다
(함수) |
|
참고 사항
다음 함수 이름들은
잠재적으로
(C23 이후)
<complex.h>
에 향후 추가될 수 있도록 예약되어 있으며, 해당 헤더를 포함하는 프로그램에서 사용할 수 없습니다:
cerf
,
cerfc
,
cexp2
,
cexpm1
,
clog10
,
clog1p
,
clog2
,
clgamma
,
ctgamma
,
csinpi
,
ccospi
,
ctanpi
,
casinpi
,
cacospi
,
catanpi
,
ccompoundn
,
cpown
,
cpowr
,
crootn
,
crsqrt
,
cexp10m1
,
cexp10
,
cexp2m1
,
clog10p1
,
clog2p1
,
clogp1
(C23 이후)
와 이들의 -
f
및 -
l
접미사 변형들을 포함합니다.
C 표준에서는 역쌍곡선 함수를 "복소 아크 쌍곡선 사인" 등으로 명명하지만, 쌍곡선 함수의 역함수는 면적 함수입니다. 이들의 인수는 호(arc)가 아닌 쌍곡선 섹터의 면적입니다. 올바른 명칭은 "복소 역쌍곡선 사인" 등입니다. 일부 저자는 "복소 면적 쌍곡선 사인" 등을 사용하기도 합니다.
복소수나 허수는 한 부분이 무한대인 경우 다른 부분이 NaN이더라도 무한대로 간주됩니다.
복소수나 허수는 두 부분 모두 무한대나 NaN이 아닐 경우 유한합니다.
복소수나 허수는 두 부분이 모두 양의 영 또는 음의 영일 경우 영으로 간주됩니다.
MSVC는
<complex.h>
헤더를 제공하지만, 복소수를 네이티브 타입으로 구현하지 않고
struct
로 구현합니다. 이는 표준 C 복소수 타입과 호환되지 않으며
+
,
-
,
*
,
/
연산자를 지원하지 않습니다.
예제
#include <complex.h> #include <stdio.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // 허수 단위 제곱 printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // 허수 단위 제곱 printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // 오일러 공식 printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // 켤레 복소수 printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5)); }
출력:
I * I = -1.0+0.0i pow(I, 2) = -1.0+0.0i exp(I*PI) = -1.0+0.0i (1+2i)*(1-2i) = 5.0+0.0i
참고문헌
| 확장 콘텐츠 |
|---|
|
참고 항목
|
C++ documentation
for
Complex number arithmetic
|