home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vcfmath.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-06  |  11.4 KB  |  234 lines

  1. /*  VCFmath.h
  2.  
  3.   vector management functions:
  4.   arithmetic and math functions performed on each individual element
  5.   of an array or vector of data type "fComplex"  (complex float)
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VCFMATH_H
  12. #define __VCFMATH_H
  13.  
  14. #ifndef __VCFSTD_H 
  15. #include <VCFstd.h>
  16. #endif
  17.  
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /********************* Comparisons ****************************/
  24.  
  25. ui   __vf   VCF_cmp_eq0( cfVector Y, cfVector X, ui size );
  26. ui   __vf   VCF_cmp_ne0( cfVector Y, cfVector X, ui size );
  27. ui   __vf   VCF_cmp_eqC( cfVector Y, cfVector X, ui size, fComplex C );
  28. ui   __vf   VCF_cmp_neC( cfVector Y, cfVector X, ui size, fComplex C );
  29. ui   __vf   VCF_cmp_eqV( cfVector Z, cfVector X, cfVector Y, ui size );
  30. ui   __vf   VCF_cmp_neV( cfVector Z, cfVector X, cfVector Y, ui size );
  31. ui   __vf   VCF_cmp_eq0ind( uiVector Ind, cfVector X, ui size );
  32. ui   __vf   VCF_cmp_ne0ind( uiVector Ind, cfVector X, ui size );
  33. ui   __vf   VCF_cmp_eqCind( uiVector Ind, cfVector X, ui size, fComplex C );
  34. ui   __vf   VCF_cmp_neCind( uiVector Ind, cfVector X, ui size, fComplex C );
  35. ui   __vf   VCF_cmp_eqVind( uiVector Ind, cfVector X, cfVector Y, ui size );
  36. ui   __vf   VCF_cmp_neVind( uiVector Ind, cfVector X, cfVector Y, ui size );
  37.  
  38.  
  39. /********************  Standard Arithmetics   ***************************/
  40.  
  41. void  __vf   VCF_limit(  cfVector Y, cfVector X, ui size, fComplex Min,
  42.                                                           fComplex Max );
  43. void  __vf   VCF_flush0( cfVector Y, cfVector X, ui size, fComplex AbsMin );
  44. void  __vf   VCF_flushInv( cfVector Y, cfVector X, ui size, fComplex AbsMin );
  45.  
  46. void  __vf   VCFx_equV(  cfVector Y, cfVector X, ui size,
  47.                          fComplex A, fComplex B );
  48. void  __vf   VCF_addC(   cfVector Y, cfVector X, ui size, fComplex C );
  49. void  __vf   VCF_subC(   cfVector Y, cfVector X, ui size, fComplex C );
  50. void  __vf   VCF_subrC(  cfVector Y, cfVector X, ui size, fComplex C );
  51. void  __vf   VCF_mulC(   cfVector Y, cfVector X, ui size, fComplex C );
  52. void  __vf   VCF_divC(   cfVector Y, cfVector X, ui size, fComplex C );
  53. void  __vf   VCF_divrC(  cfVector Y, cfVector X, ui size, fComplex C );
  54. void  __vf   VCFx_divrC( cfVector Y, cfVector X, ui size,
  55.                          fComplex A, fComplex B, fComplex C );
  56.  
  57. void  __vf   VCF_addReC(  cfVector Y, cfVector X, ui size, float CRe );
  58. void  __vf   VCF_subReC(  cfVector Y, cfVector X, ui size, float CRe );
  59. void  __vf   VCF_subrReC( cfVector Y, cfVector X, ui size, float CRe );
  60. void  __vf   VCF_mulReC(  cfVector Y, cfVector X, ui size, float CRe );
  61. void  __vf   VCF_divReC(  cfVector Y, cfVector X, ui size, float CRe );
  62. void  __vf   VCF_divrReC( cfVector Y, cfVector X, ui size, float CRe );
  63.  
  64. void  __vf   VCF_addV(  cfVector Z, cfVector X, cfVector Y, ui size );
  65. void  __vf   VCF_subV(  cfVector Z, cfVector X, cfVector Y, ui size );
  66. void  __vf   VCF_subrV( cfVector Z, cfVector X, cfVector Y, ui size );
  67. void  __vf   VCF_mulV(  cfVector Z, cfVector X, cfVector Y, ui size );
  68. void  __vf   VCF_divV(  cfVector Z, cfVector X, cfVector Y, ui size );
  69. void  __vf   VCF_divrV( cfVector Z, cfVector X, cfVector Y, ui size );
  70.  
  71. void  __vf   VCF_addReV(  cfVector Z, cfVector X, fVector Y, ui size );
  72. void  __vf   VCF_subReV(  cfVector Z, cfVector X, fVector Y, ui size );
  73. void  __vf   VCF_subrReV( cfVector Z, cfVector X, fVector Y, ui size );
  74. void  __vf   VCF_mulReV(  cfVector Z, cfVector X, fVector Y, ui size );
  75. void  __vf   VCF_divReV(  cfVector Z, cfVector X, fVector Y, ui size );
  76. void  __vf   VCF_divrReV( cfVector Z, cfVector X, fVector Y, ui size );
  77.  
  78. void  __vf   VCFx_addV(  cfVector Z, cfVector X, cfVector Y, ui size,
  79.                          fComplex A, fComplex B );
  80. void  __vf   VCFx_subV(  cfVector Z, cfVector X, cfVector Y, ui size,
  81.                          fComplex A, fComplex B );
  82. void  __vf   VCFx_subrV( cfVector Z, cfVector X, cfVector Y, ui size,
  83.                          fComplex A, fComplex B );
  84. void  __vf   VCFx_mulV(  cfVector Z, cfVector X, cfVector Y, ui size,
  85.                          fComplex A, fComplex B );
  86. void  __vf   VCFx_divV(  cfVector Z, cfVector X, cfVector Y, ui size,
  87.                          fComplex A, fComplex B );
  88. void  __vf   VCFx_divrV( cfVector Z, cfVector X, cfVector Y, ui size,
  89.                          fComplex A, fComplex B );
  90.  
  91. void  __vf   VCFx_addReV(  cfVector Z, cfVector X, fVector Y, ui size,
  92.                            fComplex A, fComplex B );
  93. void  __vf   VCFx_subReV(  cfVector Z, cfVector X, fVector Y, ui size,
  94.                            fComplex A, fComplex B );
  95. void  __vf   VCFx_subrReV( cfVector Z, cfVector X, fVector Y, ui size,
  96.                            fComplex A, fComplex B );
  97. void  __vf   VCFx_mulReV(  cfVector Z, cfVector X, fVector Y, ui size,
  98.                            fComplex A, fComplex B );
  99. void  __vf   VCFx_divReV(  cfVector Z, cfVector X, fVector Y, ui size,
  100.                            fComplex A, fComplex B );
  101. void  __vf   VCFx_divrReV( cfVector Z, cfVector X, fVector Y, ui size,
  102.                            fComplex A, fComplex B );
  103.  
  104. void __vf VCF_lincomb( cfVector Z, cfVector X, cfVector Y, ui size,
  105.                        fComplex CX, fComplex CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  106.  
  107. /******************** Accumulation (Y += X) ******************************/
  108.  
  109. void __vf VCF_accV( cfVector Y, cfVector  X, ui size );
  110.  
  111.  
  112. /*************** Functions of a sub-set of elements  ********************/
  113.  
  114. void  __vf  VCF_subvector_equC(  cfVector Y, ui subsiz, unsigned samp,
  115.                                  fComplex C );
  116. void  __vf  VCF_subvector_equV(  cfVector Y, ui subsiz, unsigned samp,
  117.                                  cfVector X );
  118.  
  119. void  __vf  VCF_subvector_addC(  cfVector Y, ui subsiz, unsigned samp,
  120.                                  fComplex C );
  121. void  __vf  VCF_subvector_subC(  cfVector Y, ui subsiz, unsigned samp,
  122.                                  fComplex C );
  123. void  __vf  VCF_subvector_subrC( cfVector Y, ui subsiz, unsigned samp,
  124.                                  fComplex C );
  125. void  __vf  VCF_subvector_mulC(  cfVector Y, ui subsiz, unsigned samp,
  126.                                  fComplex C );
  127. void  __vf  VCF_subvector_divC(  cfVector Y, ui subsiz, unsigned samp,
  128.                                  fComplex C );
  129. void  __vf  VCF_subvector_divrC( cfVector Y, ui subsiz, unsigned samp,
  130.                                  fComplex C );
  131.  
  132. void  __vf  VCF_subvector_addV(  cfVector Y, ui subsiz, unsigned samp,
  133.                                  cfVector X );
  134. void  __vf  VCF_subvector_subV(  cfVector Y, ui subsiz, unsigned samp,
  135.                                  cfVector X );
  136. void  __vf  VCF_subvector_subrV( cfVector Y, ui subsiz, unsigned samp,
  137.                                  cfVector X );
  138. void  __vf  VCF_subvector_mulV(  cfVector Y, ui subsiz, unsigned samp,
  139.                                  cfVector X );
  140. void  __vf  VCF_subvector_divV(  cfVector Y, ui subsiz, unsigned samp,
  141.                                  cfVector X );
  142. void  __vf  VCF_subvector_divrV( cfVector Y, ui subsiz, unsigned samp,
  143.                                  cfVector X );
  144.  
  145.  
  146. /*********************  Mathematical Functions *************************/
  147.  
  148. int   __vf   VCF_neg(  cfVector Y, cfVector X, ui size );
  149. int   __vf   VCF_conj( cfVector Y, cfVector X, ui size );
  150. int   __vf   VCF_abs(   fVector Y, cfVector X, ui size );
  151. int   __vf   VCF_inv(  cfVector Y, cfVector X, ui size );
  152. int   __vf   VCFx_inv( cfVector Y, cfVector X, ui size,
  153.                        fComplex A, fComplex B );
  154.  
  155. int  __vf   VCF_square(   cfVector Y, cfVector X, ui size );
  156. int  __vf   VCFx_square(  cfVector Y, cfVector X, ui size,
  157.                           fComplex A, fComplex B );
  158. int  __vf   VCF_cubic(    cfVector Y, cfVector X, ui size );
  159. int  __vf   VCFx_cubic(   cfVector Y, cfVector X, ui size,
  160.                           fComplex A, fComplex B );
  161. int  __vf   VCF_quartic(  cfVector Y, cfVector X, ui size );
  162. int  __vf   VCFx_quartic( cfVector Y, cfVector X, ui size,
  163.                           fComplex A, fComplex B );
  164. int  __vf   VCF_ipow(     cfVector Y, cfVector X, ui size, int ipow );
  165. int  __vf   VCFx_ipow(    cfVector Y, cfVector X, ui size, int ipow,
  166.                           fComplex A, fComplex B, fComplex C );
  167. int  __vf   VCF_pow(      cfVector Y, cfVector X, ui size, fComplex Expo );
  168. int  __vf   VCFx_pow(     cfVector Y, cfVector X, ui size, fComplex Expo,
  169.                           fComplex A, fComplex B, fComplex C );
  170. int  __vf   VCF_powReExpo(  cfVector Y, cfVector X, ui size, float Expo );
  171. int  __vf   VCFx_powReExpo( cfVector Y, cfVector X, ui size, float Expo,
  172.                             fComplex A, fComplex B, fComplex C );
  173.  
  174. int  __vf   VCF_sqrt(  cfVector Y, cfVector X, ui size );
  175. int  __vf   VCFx_sqrt( cfVector Y, cfVector X, ui size,
  176.                        fComplex A, fComplex B, fComplex C );
  177.  
  178. int  __vf   VCF_log(   cfVector Y, cfVector X, ui size );
  179. int  __vf   VCF_log2(  cfVector Y, cfVector X, ui size );
  180. int  __vf   VCF_log10( cfVector Y, cfVector X, ui size );
  181. #define     VCF_ln   VCF_log
  182. int  __vf   VCFx_log(  cfVector Y, cfVector X, ui size,
  183.                        fComplex A, fComplex B, fComplex C );
  184. int  __vf   VCFx_log2( cfVector Y, cfVector X, ui size,
  185.                        fComplex A, fComplex B, fComplex C );
  186. int  __vf   VCFx_log10( cfVector Y, cfVector X, ui size,
  187.                        fComplex A, fComplex B, fComplex C );
  188. #define     VCFx_ln    VCFx_log
  189.  
  190. int  __vf   VCF_exp(  cfVector Y, cfVector X, ui size );
  191. int  __vf   VCFx_exp( cfVector Y, cfVector X, ui size,
  192.                       fComplex A, fComplex B, fComplex C );
  193. int  __vf   VCF_expArbBase(  cfVector Y, cfVector X, ui size, fComplex Base );
  194. int  __vf   VCFx_expArbBase( cfVector Y, cfVector X, ui size, fComplex Base,
  195.                              fComplex A, fComplex B, fComplex C );
  196.  
  197. int  __vf   VCF_sin(  cfVector Y, cfVector X, ui size );
  198. int  __vf   VCFx_sin( cfVector Y, cfVector X, ui size,
  199.                       fComplex A, fComplex B, fComplex C );
  200. int  __vf   VCF_cos(  cfVector Y, cfVector X, ui size );
  201. int  __vf   VCFx_cos( cfVector Y, cfVector X, ui size,
  202.                       fComplex A, fComplex B, fComplex C );
  203. int  __vf   VCF_tan(  cfVector Y, cfVector X, ui size );
  204. int  __vf   VCFx_tan( cfVector Y, cfVector X, ui size,
  205.                       fComplex A, fComplex B, fComplex C );
  206.  
  207. int  __vf   VCF_asin(  cfVector Y, cfVector X, ui size );
  208. int  __vf   VCFx_asin( cfVector Y, cfVector X, ui size,
  209.                        fComplex A, fComplex B, fComplex C );
  210. int  __vf   VCF_acos(  cfVector Y, cfVector X, ui size );
  211. int  __vf   VCFx_acos( cfVector Y, cfVector X, ui size,
  212.                        fComplex A, fComplex B, fComplex C );
  213. int  __vf   VCF_atan(  cfVector Y, cfVector X, ui size );
  214. int  __vf   VCFx_atan( cfVector Y, cfVector X, ui size,
  215.                        fComplex A, fComplex B, fComplex C );
  216.  
  217. int  __vf   VCF_sinh(  cfVector Y, cfVector X, ui size );
  218. int  __vf   VCFx_sinh( cfVector Y, cfVector X, ui size,
  219.                        fComplex A, fComplex B, fComplex C );
  220. int  __vf   VCF_cosh(  cfVector Y, cfVector X, ui size );
  221. int  __vf   VCFx_cosh( cfVector Y, cfVector X, ui size,
  222.                        fComplex A, fComplex B, fComplex C );
  223. int  __vf   VCF_tanh(  cfVector Y, cfVector X, ui size );
  224. int  __vf   VCFx_tanh( cfVector Y, cfVector X, ui size,
  225.                        fComplex A, fComplex B, fComplex C );
  226.  
  227.  
  228. #ifdef __cplusplus
  229. }
  230. #endif
  231.  
  232.  
  233. #endif /* __VCFMATH_H */
  234.