home *** CD-ROM | disk | FTP | other *** search
- #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*/
-
-
-