복잡한 숫자로 작업하기

C:
복잡한 숫자로 작업하기

사용 방법:

C에서는 표준 라이브러리, 특히 <complex.h>에 의해 복소수가 지원됩니다. 이를 사용하기 위해 double complex 타입(또는 단정밀도를 위한 float complex)으로 변수를 선언합니다. 기본 연산을 수행하는 방법은 다음과 같습니다:

#include <stdio.h>
#include <complex.h>

int main() {
    double complex z1 = 1.0 + 2.0*I; // 복소수 1+2i 선언
    double complex z2 = 1.0 - 2.0*I; // 또 다른 복소수 1-2i 선언
    
    // 덧셈
    double complex sum = z1 + z2;
    printf("Sum: %.2f + %.2fi\n", creal(sum), cimag(sum)); // 출력: Sum: 2.00 + 0.00i

    // 곱셈
    double complex product = z1 * z2;
    printf("Product: %.2f + %.2fi\n", creal(product), cimag(product)); // 출력: Product: 5.00 + 0.00i

    // 복소수의 켤레
    double complex conjugate = conj(z1);
    printf("Conjugate of z1: %.2f + %.2fi\n", creal(conjugate), cimag(conjugate)); // 출력: Conjugate of z1: 1.00 - 2.00i
    
    // 크기
    double magnitude = cabs(z1);
    printf("Magnitude of z1: %.2f\n", magnitude); // 출력: Magnitude of z1: 2.24

    // 위상
    double phase = carg(z1);
    printf("Phase of z1: %.2f\n", phase); // 라디안으로 출력
    
    return 0;
}

I<complex.h>에서 허수 단위를 나타내는 상수입니다. creal()cimag() 함수는 각각 실수 부분과 허수 부분을 추출하며, conj()는 복소수의 켤레를 계산합니다. 복소수의 크기와 위상(인자)을 구하기 위해 cabs()carg()가 사용됩니다.

심층 탐구

C에서 복소수를 지원하는 것은 비교적 최근의 일로, C99에서 표준화되었습니다. 이전에는 C에서 복소수 산술 연산이 번거로웠으며, 종종 사용자 정의 데이터 구조와 함수를 필요로 했습니다. <complex.h>와 복소 데이터 타입의 추가는 과학 및 엔지니어링 응용 프로그램을 위한 언어의 기능을 크게 향상시켰습니다. 그러나 Python과 같은 일부 언어들은 내장 데이터 타입과 더 풍부한 라이브러리 함수 집합을 통해 복소수에 대해 더 직관적인 지원을 제공한다는 점을 주목할 가치가 있습니다. 이에도 불구하고, C가 제공하는 성능과 제어는 고성능 컴퓨팅 작업을 위한 선호 선택으로 만드는데, 이는 복소 산술 연산을 위해 약간 더 장황한 문법을 다루더라도 마찬가지입니다.