next up previous contents
Next: Exercises: Up: The Complex Class: MYCOMPLEX Previous: The Overloaded Operator <:

Testing the Class MYCOMPLEX:

Since this is not a templatized class, we will use traditional techniques to build a library, libmycomplex.a, which we will link into our applications. The appropriate makefiles and so forth are very standard and will not be listed here. A typical test code is as follows:

#include "mycomplex.h"

int main()
{
  MYCOMPLEX z(2,3),w(4,-5),u(5.0,-4.6),v(1002.45,567.98);
  
  cout << " z = " << z << endl;
  cout << " w = " << w << endl;
  cout << " u = " << u << endl;
  cout << " v = " << v << endl;
  

  MYCOMPLEX a;
  cout << "Default a = " << a << endl;
  cout << "Test Overloaded = " << endl;
  a = z;
  MYCOMPLEX b;
  b = z*w;
  cout << "b = z*w " << b << endl; 
  
  b = u+v;
  cout << "b = u+v " << b << endl;
  
  b = u-v;
  cout << "b = u-v " << b << endl;
  
  b *= a;
  cout << "b *= a " << b << endl;
  
  b += z;
  cout << "b += z " << b << endl;
  
  b -= z;
  cout << "b -= z " << b << endl;  
  
  b = w / z;
  cout << "b = w/z " << b << endl;
  
  b /= z;
  cout << "b /= z " << b << endl;
  
  MYCOMPLEX *omega;
  omega = unity(6);
  cout << "Test Roots of Unity " << endl;
  for(int i = 0;i<6;++i){
    cout << "omega[" << i << "] = " << omega[i] << endl;
    }
   
  cout << "Modulus of z " << modulus(z) << endl;
  double ARG = arg(z);
  double norm = modulus(z);
  cout << "Arg of z =" << ARG << endl;
  cout << " original z =" << z << endl;
  MYCOMPLEX c(norm*cos(ARG),norm*sin(ARG));
  cout << "modulus(z)*e^Iarg = "  << c << endl; 
  
  cout << "Testing operators: " << endl;
  MYCOMPLEX Q(2.0,4.0);
  int ix = 2;
  float x = 3.0;
  double y = 4.0;
  
  cout << "Q = " << Q << endl;
  cout << "2*Q = " << ix*Q << endl;  
  cout << "Q*2 = " << Q*ix << endl; 
  cout << "3.0*Q = " << x*Q << endl;   
  cout << "Q*3.0 = " << Q*x << endl; 
  cout << "4.0*Q = " << y*Q << endl;   
  cout << "Q*4.0 = " << Q*y << endl; 
  
  cout << "Q > 0 " << (Q>0) << endl; 
  cout << "Q!=0 " << (Q!=0) << endl;  
  return(1);
}

with corresponding output:

albert% mycomplex
 z = 2 +3I 
 w = 4-5I 
 u = 5-4.6I 
 v = 1002.45 +567.98I 
a = 2+3I 
Test Overloaded = 

b = z*w 23 +2I 
b = u+v 1007.45 +563.38I 
b = u-v -997.45-572.58I 
b *= a -277.16-1976.64I 
b += z -275.16-1973.64I 
b -= z -277.16-1976.64I 
b = w/z -0.538462-1.69231I 
b /= z -0.473373-0.151115I 

Test Roots of Unity 
omega[0] = 1+0I 
omega[1] = 0.5 +0.866025I 
omega[2] = -0.5 +0.866025I 
omega[3] = -1+0I 
omega[4] = -0.5-0.866025I 
omega[5] = 0.5-0.866025I 

Modulus of z 3.60555
Arg of z =0.982794
 original z =2 +3I 
modulus(z)*e^Iarg = 2 +3I 

Testing operators: 
Q = 2 +4I 
2*Q = 4 +8I 
Q*2 = 4 +8I 
3.0*Q = 6 +12I 
Q*3.0 = 6 +12I 
4.0*Q = 8 +16I 
Q*4.0 = 8 +16I 
Q > 0 1  == This is a Yes!
Q!=0 1   == This is a Yes!



Jim Peterson
1999-04-22