complex — std::complex

complex — std::complex

std::complex는 **복소수(complex number)**를 나타내는 클래스 템플릿이에요. <complex> 헤더에 있어요.

실수부와 허수부를 저장하고, 복소수 연산(덧셈·곱셈·켤레·크기 등)을 제공해요.

출처: cppreference

본문

// <complex> 헤더
template< class T >
class complex;                  // (1)

template<> class complex<float>;       // (2)
template<> class complex<double>;      // (3)
template<> class complex<long double>; // (4)

cv 한정되지 않은 표준 부동 소수점 타입에 대한 std::complex 특수화는 TriviallyCopyable요구사항을 만족해요.

#include <complex>
#include <iostream>

std::complex<double> z(1.0, 2.0);   // 1 + 2i
std::complex<double> w(3.0, 4.0);

std::complex<double> sum = z + w;   // 4 + 6i

주요 연산

  • 산술 연산+, -, *, /, 단항 부호
  • 멤버 함수real(), imag(), abs(), arg(), norm(), conj()
  • 비교==, !=
  • 입출력operator<<, operator>>
  • 삼각/초월 함수sin, cos, exp, log, pow
std::complex<double> z(3, 4);
double magnitude = std::abs(z);     // 5 (크기)
double phase     = std::arg(z);     // 위상
std::complex<double> c = std::conj(z);  // 3 - 4i

z.real(5);       // 실수부 설정
double r = z.real();  // 실수부 읽기

리터럴

C++14부터 std::literalsi, il, if 접미사를 쓸 수 있어요.

using namespace std::literals;
auto z = 1.0 + 2.0i;   // std::complex<double>(1.0, 2.0)

주의

  • C++23부터 float/double/long double 외 타입의 std::complex 특수화 동작은 불명시(unspecified)예요.
  • complex는 신호 처리, 물리 시뮬레이션, 푸리에 변환 등에서 널리 사용돼요.
#include <numbers>
#include <complex>

// 오일러 공식 e^(i*pi) = -1
std::complex<double> euler = std::exp(std::complex<double>(0, std::numbers::pi));
// ≈ (-1, 0)

std::complex는 복소수 수치 연산을 타입 안전하고 직관적으로 지원하는 표준 도구예요.

더 알아보기 (Learn more)

cppreference