ISOC99 를 지원하는 C 컴파일러로 복소수 계산하는 C 예제
컴파일은 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
*/