C : Complex Number Computation

In this post, I will create program C : complex number computation.

Are you know about complex number? A complex number is a number consisting of a real part and an imaginary part. Computation for real/integer number is different with complex number. In this tutorial, I am write how we can process complex number computation. Complex number computation from this code consists of :

  • cadd     : add two complex numbers
  • csub     : subtract two complex numbers
  • cmul    : multiply two complex numbers
  • cdiv     : divide two complex numbers
  • cmplx  :  make a complex number from two real numbers
  • conjg    : complex conjugate of a complex number
  • cneg    :  negate a complex number
  • cinv    : invert a complex number
  • csqrt   : complex square root of a complex number
  • cexp   : complex exponential of a complex number
  • crmul :  multiply a complex number by a real number
  • rcabs  : real magnitude of a complex number

This is a sample tes code how to process complex number compution, save this code as complex_computation.c :

/*
 * main.c
 *
 *  Created on: Oct 23, 2011
 *      Author: toto
 */

#include "complex.h"

int main(int argc, char **argv)
{
	float far, fai, fbr, fbi;
	complex A, B, C;
	char type, type1;

	if(argc==6)
	{
		sscanf(argv[1],"%f",&far);
		sscanf(argv[2],"%f",&fai);
		sscanf(argv[3],"%f",&fbr);
		sscanf(argv[4],"%f",&fbi);
		sscanf(argv[5],"%c%c%c",&type1, &type1, &type);
	}
	else
	{
		printf("help :\n");
		printf("use : ./complex_computation r1 i1 r2 i2 --type\n");
		printf("\nexample: ./complex_computation 1 5 3 -6 --+ \n");
		return(0);
	}

	A = cmplx(far, fai);  //create A complex data
	B = cmplx(fbr, fbi);  //create B complex data

	printf("\n--- COMPLEX NUMBER COMPUTATION --- \n");
	cplx_print("A =", A);       //print complex A
	cplx_print("B =", B);       //print complex B

	printf("------------------------- %c ", type);
	if(type=='^')
		printf("0.5\n");
	else
		printf("\n");

	switch(type)
	{
	case '+':
		C = cadd(A,B);
		break;
	case '-':
		C = csub(A,B);
		break;
	case '*':
		C = cmul(A,B);
		break;
	case '/':
		C = cdiv(A,B);
		break;
	case '^':
		C = c_sqrt(A);
		break;
	default:
		C = cadd(A,B);
		break;
	}

	cplx_print("C =", C);       //print complex C
	return(1);
}

This is example how to use and output for complex number computation above code :

~/workspace/complex_computation$ ./complex_computation 3.3 4.5 3.4 5.6 --/

--- COMPLEX NUMBER COMPUTATION ---
A = 3.30000 + 4.50000i
B = 3.40000 + 5.60000i
------------------------- /
C = 0.84856 - 0.07409i

You can download the complete source code complex number computation code at here.

Source :
http://www.cwp.mines.edu/cwpcodes/
http://en.wikipedia.org/wiki/Complex_number

Add a Comment

Your email address will not be published. Required fields are marked *