컴파일은 ANSI/ISOC99 를 (대부분) 지원하는 C 컴파일러
GCC 컴파일러 또는 LCC 컴파일러 (또는 기타 컴파일러)
를 쓰면 됩니다.
Visual C++ 2010 은 ANSI/ISOC99 를 지원하지 않습니다.
[참고] ANSI/ISOC99 (Wikipedia)
// Filename: testComplexISOC99.c
//
// Compile & Link: gcc -o testComplexISOC99 testComplexISOC99.c
// Execute: ./testComplexISOC99
//
// Or
//
// Compile & Link: lc testComplexISOC99.c
// Execute: testComplexISOC99
//
// Or
//
// Compile: lcc -o testComplexISOC99.obj testComplexISOC99.c
// Link: lcclnk testComplexISOC99.obj
// Execute: testComplexISOC99
#include <stdio.h>
#include <complex.h>
int main(int argc, char** argv)
{
float complex z1 = 3.0 + 4.0i;
float complex z2 = 2.0 - 1.0i;
float complex z3 = z1 + z2;
float complex z4 = z1 - z2;
float complex z5 = z1 * z2;
float complex z6 = z1 / z2;
float complex z7 = conjf(z1);
// float arg = cargf(z1);
float arg = carg(z1); // for :CC-win32
printf("z1 = %f + %fj\n", crealf(z1), cimagf(z1));
printf("z2 = %f + %fj\n", crealf(z2), cimagf(z2));
printf("So,\n");
printf("z3 = z1 + z2 = %f + %fj\n", crealf(z3), cimagf(z3));
printf("z4 = z1 - z2 = %f + %fj\n", crealf(z4), cimagf(z4));
printf("z5 = z1 * z2 = %f + %fj\n", crealf(z5), cimagf(z5));
printf("z6 = z1 / z2 = %f + %fj\n", crealf(z6), cimagf(z6));
printf("z7 = conjf(z1) = %f + %fj\n", crealf(z7), cimagf(z7));
// printf("arg = cargf(z1) = %f\n", arg);
printf("arg = carg(z1) = %f\n", arg); // for LCC-win32
return 0;
}
/*
-------------------
Result of execution:
-------------------
z1 = 3.000000 + 4.000000j
z2 = 2.000000 + 1.000000j
So,
z3 = z1 + z2 = 5.000000 + 5.000000j
z4 = z1 - z2 = 1.000000 + 3.000000j
z5 = z1 * z2 = 2.000000 + 11.000000j
z6 = z1 / z2 = 2.000000 + 1.000000j
z7 = conjf(z1) = 3.000000 + -4.000000j
arg = carg(z1) = 0.927295
*/
'프로그래밍 > C' 카테고리의 다른 글
리눅스 환경에 MPFR 설치와 테스트 (0) | 2012.04.30 |
---|---|
long long 타입의 정수 계산을 100경 까지 테스트하는 C 소스 (0) | 2012.04.28 |
C 언어로 GMP 라이브러리를 이용하여 30! 까지 정확하게 계산하기 (3) | 2010.08.13 |
C 언어의 long 타입으로 계산 가능한 최대 팩토리얼은? (0) | 2010.08.11 |
스트링 배열 정렬(sorting)하기 with C (0) | 2009.04.17 |