/* nag_complex (a02bac) Example Program. * * Copyright 1991 Numerical Algorithms Group. * * Mark 2, 1991. */ #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpout; Integer exit_status = 0; Complex v, w, z; double r, theta, x, y; Nag_Boolean equal, not_equal; /* Check for command-line IO options */ fpout = nag_example_file_io(argc, argv, "-results", NULL); fprintf(fpout, "nag_complex (a02bac) Example Program Results\n"); x = 2.0; y = -3.0; /* nag_complex (a02bac). * Complex number from real and imaginary parts */ z = nag_complex(x, y); fprintf(fpout, " %-21s %s %8s = %7.4f, %7.4f\n", "", "", "x, y", x, y); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex", "z", "(x,y)", z.re, z.im); /* nag_complex_real (a02bbc). * Real part of a complex number */ fprintf(fpout, " %-21s: %s %8s = %7.4f\n", "nag_complex_real", "", "real(z)", nag_complex_real(z)); /* nag_complex_imag (a02bcc). * Imaginary part of a complex number */ fprintf(fpout, " %-21s: %s %8s = %7.4f\n", "nag_complex_imag", "", "imag(z)", nag_complex_imag(z)); /* nag_complex (a02bac), see above. */ v = nag_complex(3.0, 1.25); /* nag_complex (a02bac), see above. */ w = nag_complex(2.5, -1.75); fprintf(fpout, " %-21s: %s %8s = (%7.4f, %7.4f)\n", "nag_complex", "", "v", v.re, v.im); fprintf(fpout, " %-21s: %s %8s = (%7.4f, %7.4f)\n", "nag_complex", "", "w", w.re, w.im); /* nag_complex_add (a02cac). * Addition of two complex numbers */ z = nag_complex_add(v, w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_add", "z", "v+w", z.re, z.im); /* nag_complex_subtract (a02cbc). * Subtraction of two complex numbers */ z = nag_complex_subtract(v, w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_subtract", "z", "v-w", z.re, z.im); /* nag_complex_multiply (a02ccc). * Multiplication of two complex numbers */ z = nag_complex_multiply(v, w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_multiply", "z", "v*w", z.re, z.im); /* nag_complex_divide (a02cdc). * Quotient of two complex numbers */ z = nag_complex_divide(v, w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_divide", "z", "v/w", z.re, z.im); /* nag_complex_negate (a02cec). * Negation of a complex number */ z = nag_complex_negate(w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_negate", "z", "-w", z.re, z.im); /* nag_complex_conjg (a02cfc). * Conjugate of a complex number */ z = nag_complex_conjg(w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_conjg", "z", "conjg(w)", z.re, z.im); /* nag_complex_equal (a02cgc). * Equality of two complex numbers */ equal = nag_complex_equal(v, w); if (equal) fprintf(fpout, " %-21s: %s == %s\n", "nag_complex_equal", "v", "w"); else fprintf(fpout, " %-21s: %s != %s\n", "nag_complex_equal", "v", "w"); /* nag_complex_not_equal (a02chc). * Inequality of two complex numbers */ not_equal = nag_complex_not_equal(w, z); if (not_equal) fprintf(fpout, " %-21s: %s != %s\n\n", "nag_complex_not_equal", "w", "z"); else fprintf(fpout, " %-21s: %s == %s\n\n", "nag_complex_not_equal", "w", "z"); /* nag_complex_arg (a02dac). * Argument of a complex number */ theta = nag_complex_arg(z); fprintf(fpout, " %-21s: %s %8s = %7.4f\n", "nag_complex_arg", "", "arg(z)", theta); /* nag_complex_abs (a02dbc). * Modulus of a complex number */ r = nag_complex_abs(z); fprintf(fpout, " %-21s: %s = %8s = %7.4f\n", "nag_complex_abs", "r", "abs(z)", r); /* nag_complex_sqrt (a02dcc). * Square root of a complex number */ v = nag_complex_sqrt(z); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_sqrt", "v", "sqrt(z)", v.re, v.im); /* nag_complex_i_power (a02ddc). * Complex number raised to integer power */ v = nag_complex_i_power(z, (Integer) 3); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_i_power", "v", "z**3", v.re, v.im); /* nag_complex_r_power (a02dec). * Complex number raised to real power */ v = nag_complex_r_power(z, 2.5); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_r_power", "v", "z**2.5", v.re, v.im); /* nag_complex_c_power (a02dfc). * Complex number raised to complex power */ v = nag_complex_c_power(z, w); fprintf(fpout, " %-21s: %s = %8s = (%7.4f,%8.4f)\n", "nag_complex_c_power", "v", "z**w", v.re, v.im); /* nag_complex_log (a02dgc). * Complex logarithm */ v = nag_complex_log(z); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_log", "v", "log(z)", v.re, v.im); /* nag_complex_exp (a02dhc). * Complex exponential */ z = nag_complex_exp(v); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_exp", "z", "exp(v)", z.re, z.im); /* nag_complex_sin (a02djc). * Complex sine */ v = nag_complex_sin(z); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_sin", "v", "sin(z)", v.re, v.im); /* nag_complex_cos (a02dkc). * Complex cosine */ v = nag_complex_cos(z); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_cos", "v", "cos(z)", v.re, v.im); /* nag_complex_tan (a02dlc). * Complex tangent */ v = nag_complex_tan(z); fprintf(fpout, " %-21s: %s = %8s = (%7.4f, %7.4f)\n", "nag_complex_tan", "v", "tan(z)", v.re, v.im); /* nag_complex_divide (a02cdc), see above. */ v = nag_complex_divide(nag_complex_sin(z), nag_complex_cos(z)); fprintf(fpout, " %-21s:%13s = (%7.4f, %7.4f)\n", "nag_complex_divide", "sin(z)/cos(z)", v.re, v.im); if (fpout != stdout) fclose(fpout); return exit_status; }