home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / CPLXUTIL.C < prev    next >
C/C++ Source or Header  |  1991-07-23  |  2KB  |  91 lines

  1. #include <stdio.h>
  2.  
  3. #include "cplxutil.h"
  4.  
  5.  
  6. double __cplx_tmp1;                    /*holds any needed temporary value*/
  7. double __cplx_tmp2;                    /*holds any needed temporary value*/
  8. double __cplx_cos;                     /*holds any needed cos(x) values*/
  9. double __cplx_sin;                     /*holds any needed sin(x) values*/
  10. double __cplx_expm;                    /*holds any needed exp(-x) values*/
  11. double __cplx_expp;                    /*holds any needed exp(x) values*/
  12.  
  13.  
  14. CPLX* cadd(CPLX* x,CPLX* y,CPLX* z)
  15. {
  16.   z->r=x->r+y->r;
  17.   z->i=x->i+y->i;
  18.   return z;
  19. }   /*cadd*/
  20.  
  21.  
  22. CPLX* csub(CPLX* x,CPLX* y,CPLX* z)
  23. {
  24.   z->r=x->r-y->r;
  25.   z->i=x->i-y->i;
  26.   return z;
  27. }   /*csub*/
  28.  
  29.  
  30. CPLX* cconj(CPLX* x)
  31. {
  32.   x->i=-x->i;
  33.   return x;
  34. }   /*cconj*/
  35.  
  36.  
  37. CPLX* cmul(CPLX* x,CPLX* y,CPLX* z)
  38. {
  39.   __cplx_tmp1=x->r*y->r-x->i*y->i;
  40.   z->i=x->r*y->i+x->i*y->r;
  41.   z->r=__cplx_tmp1;
  42.   return z;
  43. }   /*cmul*/
  44.  
  45.  
  46. CPLX* cdiv(CPLX* x,CPLX* y,CPLX* z)
  47. {
  48.   __cplx_tmp2=y->r*y->r+y->i*y->i;
  49.   __cplx_tmp1=x->r*y->r+x->i*y->i;
  50.   z->i=(x->i*y->r-x->r*y->i)/__cplx_tmp2;
  51.   z->r=__cplx_tmp1/__cplx_tmp2;
  52.   return z;
  53. }   /*cdiv*/
  54.  
  55.  
  56. CPLX* cexp(CPLX* x,CPLX* z)
  57. {       
  58.   __cplx_cos=cos(x->i);
  59.   __cplx_sin=sin(x->i);
  60.   __cplx_expp=exp(x->r);
  61.   z->r=__cplx_expp*__cplx_cos;
  62.   z->i=__cplx_expp*__cplx_sin;
  63.   return z;
  64. }   /*cexp*/
  65.  
  66.  
  67. CPLX* ccos(CPLX* x,CPLX* z)
  68. {
  69.   __cplx_cos=cos(x->r);
  70.   __cplx_sin=sin(x->r);
  71.   __cplx_expm=exp(-x->i);
  72.   __cplx_expp=exp(x->i);
  73.   z->r=(__cplx_cos/2.0)*(__cplx_expm+__cplx_expp);
  74.   z->i=(__cplx_sin/2.0)*(__cplx_expm-__cplx_expp);
  75.   return z;
  76. }   /*ccos*/
  77.  
  78.  
  79. CPLX* csin(CPLX* x,CPLX* z)
  80. {       
  81.   __cplx_cos=cos(x->r);
  82.   __cplx_sin=sin(x->r);
  83.   __cplx_expm=exp(-x->i);
  84.   __cplx_expp=exp(x->i);
  85.   z->r=(__cplx_sin/2.0)*(__cplx_expp+__cplx_expm);
  86.   z->i=(__cplx_cos/2.0)*(__cplx_expp-__cplx_expm);
  87.   return z;
  88. }   /*csin*/
  89.  
  90.  
  91.