#ifdef PI
#undef PI
#define PI 3.141592653589793238462643383
#endif
#ifndef COMPLEX_H_
#define COMPLEX_H_
#include <math.h>
#include <iostream>
using namespace std;
//2013.10.26 ??????
class COMP{ //????COMP??
public:
double rmz,imz; //??????
public:
COMP()
{rmz=0;imz=0;}
COMP power(int n);
COMP root(int n);//????
COMP csin(void);
COMP ccos(void);
COMP clog(void);
COMP cexp(void);
COMP operator+ (COMP); //???????
COMP operator+ (double); //???????
COMP operator* (COMP); //??????*
COMP operator* (double ); //??????*
COMP operator/ (COMP); //
COMP operator/ (double); //
COMP operator- (COMP); //???????
COMP operator- (double); //???????
COMP operator++(); //???
void setCOMP(double , double); //?趨????λ??
void show(); //???????λ??
};
// ?????????????????????????+
//??????????????λ?????
COMP COMP::operator+(COMP point)
{
COMP dot; //??????Spot?????dot
dot.rmz = rmz + point.rmz;
dot.imz = imz + point.imz;
return dot;
}
//??????????????λ?????
COMP COMP::operator-(COMP point){
COMP dot;
dot.rmz = rmz - point.rmz;
dot.imz = imz - point.imz;
return dot;
}
COMP COMP::operator-(double point){
COMP dot;
dot.rmz = rmz - point;
dot.imz = imz ;
return dot;
}
//??????λ?ü??????
COMP COMP::operator+(double num){
COMP dot;
dot.rmz = rmz + num;
dot.imz = imz ;
return dot;
}
//???????
COMP COMP::operator++(){
rmz = rmz +1;
imz = imz + 1;
return *this;//?????????
}
//???????setSpot???趨????
void COMP::setCOMP(double x, double y){
rmz = x;
imz = y;
}
//???????display?????????
void COMP::show(){
cout<<"\n"<<rmz<<"+i"<<imz<<endl;
}
/*======================================================
//????????comp_product.c
//??????????????????
//?????????a1???????????a????壩
// a2???????????b????壩
// c????????????壩
//???????0????????1???????
=========================================================*/
COMP COMP::operator*(COMP point){
COMP dot; //??????Spot?????dot
double p,q,s;
p = rmz*(point.rmz);
q = imz*(point.imz);
s = (rmz + imz)*(point.rmz + point.imz);
dot.rmz = p - q;
dot.imz = s - p - q;
return dot;
}
COMP COMP::operator*(double point)
{
COMP dot; //??????Spot?????dot
double p,q ;
p = rmz*point;
q = imz*point;
dot.rmz = p;
dot.imz = q;
return dot;
}
/*================================================