home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Boldly Go Collection
/
version40.iso
/
TS
/
17A
/
DRWIN101.ZIP
/
CPLXUTIL.C
< prev
next >
Wrap
C/C++ Source or Header
|
1991-07-23
|
2KB
|
91 lines
#include <stdio.h>
#include "cplxutil.h"
double __cplx_tmp1; /*holds any needed temporary value*/
double __cplx_tmp2; /*holds any needed temporary value*/
double __cplx_cos; /*holds any needed cos(x) values*/
double __cplx_sin; /*holds any needed sin(x) values*/
double __cplx_expm; /*holds any needed exp(-x) values*/
double __cplx_expp; /*holds any needed exp(x) values*/
CPLX* cadd(CPLX* x,CPLX* y,CPLX* z)
{
z->r=x->r+y->r;
z->i=x->i+y->i;
return z;
} /*cadd*/
CPLX* csub(CPLX* x,CPLX* y,CPLX* z)
{
z->r=x->r-y->r;
z->i=x->i-y->i;
return z;
} /*csub*/
CPLX* cconj(CPLX* x)
{
x->i=-x->i;
return x;
} /*cconj*/
CPLX* cmul(CPLX* x,CPLX* y,CPLX* 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;
return z;
} /*cmul*/
CPLX* cdiv(CPLX* x,CPLX* y,CPLX* 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;
return z;
} /*cdiv*/
CPLX* cexp(CPLX* x,CPLX* 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;
return z;
} /*cexp*/
CPLX* ccos(CPLX* x,CPLX* 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);
return z;
} /*ccos*/
CPLX* csin(CPLX* x,CPLX* 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);
return z;
} /*csin*/