# 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 '+':
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:
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