/* complex.cpp */ /* Program to test out C++ complex class */ #include <complex.h> #include <stdio.h> /* Define complex double data type */ typedef complex<double> dcomp; int main() { dcomp i, a, b, c, d, e, p, q, r; // Declare complex double variables double x, y; /* Set complex double variable equal to complex double constant */ i = dcomp (0., 1.); printf("\ni = (%6.4f, %6.4f)\n", i); /* Test arithmetic operations with complex double variables */ a = i * i; b = 1. / i; printf("\ni*i = (%6.4f, %6.4f)\n", a); printf("1/i = (%6.4f, %6.4f)\n", b); /* Test mathematical functions using complex double variables */ c = sqrt(i); d = sin(i); e = pow(i, 0.25); printf("\nsqrt(i) = (%6.4f, %6.4f)\n", c); printf("sin(i) = (%6.4f, %6.4f)\n", d); printf("i^0.25 = (%6.4f, %6.4f)\n", e); /* Test complex operations */ p = conj(i); q = real(i); r = imag(i); printf("\nconj(i) = (%6.4f, %6.4f)\n", p); printf("real(i) = %6.4f\n", q); printf("imag(i) = %6.4f\n", r); return 0; }The typical output from this program is as follows:
i = (0.0000, 1.0000) i*i = (-1.0000, 0.0000) 1/i = (0.0000, -1.0000) sqrt(i) = (0.7071, 0.7071) sin(i) = (0.0000, 1.1752) i^0.25 = (0.9239, 0.3827) conj(i) = (0.0000, -1.0000) real(i) = 0.0000 imag(i) = 1.0000 %The program first of all defines the complex double type dcomp. Variables of this type are then declared, set equal to complex constants, employed in arithmetic expressions, used as the arguments of mathematical functions, etc., in much the same manner that we would perform similar operations in C with variables of type double. Note the special functions conj(), real(), and imag(), which take the complex conjugate of, find the real part of, and find the imaginary part of a complex variable, respectively.