00001 namespace FFT { 00002 00003 /// 00004 /// Convolution of two vectors of complex numbers. 00005 /// 00006 public interface IConvolution 00007 { 00008 /// 00009 /// Calculates the convolution of two vectors. 00010 /// 00011 /// A convolution of two vectors 00012 /// \f$ \mathbf{a}=[a_0,\ldots,a_{n-1}]\f$ and 00013 /// \f$ \mathbf{b}=[b_0,\ldots,b_{m-1}]\f$, 00014 /// denoted \f$\mathbf{a}\otimes \mathbf{b}\f$, is defined 00015 /// as a vector \f$ \mathbf{c} =[c_{0},\ldots,c_{n+m-2}] \f$, where 00016 /// \f$ c_i=\sum_{|j-k|=i} a_j*b_k \f$. 00017 /// 00018 /// For example, the convolution of 00019 /// \f$ \mathbf{a}=[1,2,3] \f$ and 00020 /// \f$ \mathbf{b}=[4,5] \f$ is 00021 /// \f$ \mathbf{a}\otimes \mathbf{b}=[1*4,1*5+2*4,2*5+3*4,3*5]\f$. 00022 /// 00023 /// \param a The first vector of complex numbers. 00024 /// \param b The second vector of complex numbers. 00025 /// \returns The convolution of the two input vectors. 00026 /// 00027 Complex[] Convolution(Complex[] a, Complex[] b); 00028 00029 /// 00030 /// Returns the name of the convolution algorithm. 00031 /// 00032 string ToString(); 00033 } 00034 }