Main Page | Data Structures | File List | Data Fields | Globals

complex_numbers.c

Go to the documentation of this file.
00001 
00009 #include<stdio.h>
00010 #include"numbers.h"
00011 
00017 static number addComplex(const number x,const number y);
00023 static number multComplex(const number x,const number y);
00027 static number getUnitComplex();
00031 static number getZeroComplex();
00035 static void displayComplex(const number x);
00036 
00037 
00043 number getComplexNumber(double x, double y){
00044   number t ={ COMPLEX_NUMBER, 
00045               {0},
00046               &addComplex,
00047               &multComplex,
00048               &getUnitComplex,
00049               &getZeroComplex,
00050               &displayComplex};
00051   t.val.doublePair[0]=x;
00052   t.val.doublePair[1]=y;
00053   return t;
00054 }
00055 
00056 static number addComplex(const number a, const number b){
00057   number c=a;
00058   if (a.type!=COMPLEX_NUMBER || b.type!=COMPLEX_NUMBER){
00059     return error;
00060   }
00061   c.val.doublePair[0]=a.val.doublePair[0]+b.val.doublePair[0];
00062   c.val.doublePair[1]=a.val.doublePair[1]+b.val.doublePair[1];
00063   return c;
00064 }
00065 
00066 static number multComplex(const number a, const number b){
00067   number c=a;
00068   if (a.type!=COMPLEX_NUMBER || b.type!=COMPLEX_NUMBER){
00069     return error;
00070   }
00071   c.val.doublePair[0]=a.val.doublePair[0]*b.val.doublePair[0]
00072                      -a.val.doublePair[1]*b.val.doublePair[1];
00073   c.val.doublePair[1]=a.val.doublePair[0]*b.val.doublePair[1]
00074                      +a.val.doublePair[1]*b.val.doublePair[0];
00075   return c;
00076 }
00077 
00078 static number getUnitComplex(){
00079   return getComplexNumber(1.,0.);
00080 }
00081 
00082 static number getZeroComplex(){
00083     return getComplexNumber(0.,0.);
00084 }
00085 
00086 void displayComplex(const number x){
00087   printf("%.2f+%.2fi",x.val.doublePair[0],x.val.doublePair[1]);
00088 }
00089 

Generated on Thu Dec 18 16:01:23 2008 for Numbers by  doxygen 1.3.9.1