VFb_xcorr  VDb_xcorr  VEb_xcorr 

Function  Crosscorrelation function of two vectors. 

Syntax C/C++  #include <VFstd.h>
void VF_xcorr( fVector Z, fVector X, fVector Y, ui size );
void VFb_xcorr( fVector Z, fVector X, fVector Y, ui size, fVector Buf ); 
C++ VecObj  #include <OptiVec.h>
void vector<T>::xcorr( const vector<T>& X, const vector<T>& Y ); void vector<T>::b_xcorr( const vector<T>& X, const vector<T>& Y, vector<T>& Buf ); 
Pascal/Delphi  uses VFstd;
procedure VF_xcorr( Z, X, Y:fVector; size:UIntSize );
procedure VFb_xcorr( Z, X, Y:fVector; size:UIntSize; Buf:fVector ); 

CUDA function C/C++  #include <cudaVFstd.h>
int cudaVF_xcorr( fVector d_Z, fVector d_X, fVector d_Y, ui size );
void VFcu_xcorr( fVector h_Z, fVector h_X, fVector h_Y, ui size );

CUDA function Pascal/Delphi  uses VFstd;
function cudaVF_xcorr( d_Z, d_X, d_Y:fVector; size:UIntSize ): IntBool;
procedure VFcu_xcorr( h_Z, h_X, h_Y:fVector; size:UIntSize );


Description  The crosscorrelation function (CCF) of X and Y is calculated and stored in Z in wraparound order: Z_{0} to Z_{size/2−1} contain the CCF for zero and positive lags. Beginning with the most negative lag in Z_{size/2+1}, the elements up to Z_{size−1} contain the CCF for negative lags. Since this function assumes X to be periodic, the CCF for the most positive lag is identical to the CCF for the most negative lag. This element is stored as Z_{size/2}.
To get the CCF into normal order, you may call
VF_rotate( Z, Z, size, size/2 );
After that, the zero point is at the position size/2.
In case X is nonperiodic, end effects should be avoided by the methods described in connection with VF_convolve.
Internally, VF_xcorr allocates and frees additional workspace memory. For repeated calls, this would be inefficient. In such a case, it is recommended to use VFb_xcorr instead. The size of Buf must be ≥ 3*size. Additionally, Buf must be 128bit (P8) or 256bit (P9) aligned. This usually means you can only take a vector allocated by the VF_vector family as Buf. 

Error handling  If size is not a power of 2, VF_FFT (on which VF_xcorr is based) complains "Size must be an integer power of 2" and the program is aborted. 


