home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Boldly Go Collection
/
version40.iso
/
TS
/
17A
/
DRWIN101.ZIP
/
CPLXUTIL.H
< prev
next >
Wrap
C/C++ Source or Header
|
1991-01-11
|
2KB
|
83 lines
#ifndef __CPLXUTIL_H
#define __CPLXUTIL_H
#include <math.h>
typedef struct {
double r;
double i;
} CPLX;
#define CADD(x,y,z) { \
z.r=x.r+y.r; \
z.i=x.i+y.i; \
}
#define CSUB(x,y,z) { \
z.r=x.r-y.r; \
z.i=x.i-y.i; \
}
#define CMUL(x,y,z) { \
__cplx_tmp1=x.r*y.r-x.i*y.i; \
z.i=x.r*y.i+x.i*y.r; \
z.r=__cplx_tmp1; \
}
#define CDIV(x,y,z) { \
__cplx_tmp2=y.r*y.r+y.i*y.i; \
__cplx_tmp1=x.r*y.r+x.i*y.i; \
z.i=(x.i*y.r-x.r*y.i)/__cplx_tmp2; \
z.r=__cplx_tmp1/__cplx_tmp2; \
}
#define CCONJ(x) x.i=-x.i
#define CEXP(x,z) { \
__cplx_cos=cos(x.i); \
__cplx_sin=sin(x.i); \
__cplx_expp=exp(x.r); \
z.r=__cplx_expp*__cplx_cos; \
z.i=__cplx_expp*__cplx_sin; \
}
#define CCOS(x,z) { \
__cplx_cos=cos(x.r); \
__cplx_sin=sin(x.r); \
__cplx_expm=exp(-x.i); \
__cplx_expp=exp(x.i); \
z.r=(__cplx_cos/2.0)*(__cplx_expm+__cplx_expp); \
z.i=(__cplx_sin/2.0)*(__cplx_expm-__cplx_expp); \
}
#define CSIN(x,z) { \
__cplx_cos=cos(x.r); \
__cplx_sin=sin(x.r); \
__cplx_expm=exp(-x.i); \
__cplx_expp=exp(x.i); \
z.r=(__cplx_sin/2.0)*(__cplx_expp+__cplx_expm); \
z.i=(__cplx_cos/2.0)*(__cplx_expp-__cplx_expm); \
}
CPLX* cadd(CPLX* x,CPLX* y,CPLX* z);
CPLX* csub(CPLX* x,CPLX* y,CPLX* z);
CPLX* cconj(CPLX* x);
CPLX* cmul(CPLX* x,CPLX* y,CPLX* z);
CPLX* cdiv(CPLX* x,CPLX* y,CPLX* z);
CPLX* cexp(CPLX* x,CPLX* z);
CPLX* ccos(CPLX* x,CPLX* z);
CPLX* csin(CPLX* x,CPLX* z);
extern double __cplx_tmp1;
extern double __cplx_tmp2;
extern double __cplx_cos;
extern double __cplx_sin;
extern double __cplx_expm;
extern double __cplx_expp;
#endif