ccnvcor - compute the convolution or correlation of complex vectors
SUBROUTINE CCNVCOR( CNVCOR, FOUR, NX, X, IFX, INCX, NY, NPRE, M, Y, * IFY, INC1Y, INC2Y, NZ, K, Z, IFZ, INC1Z, INC2Z, WORK, LWORK) CHARACTER * 1 CNVCOR, FOUR COMPLEX X(*), Y(*), Z(*), WORK(*) INTEGER NX, IFX, INCX, NY, NPRE, M, IFY, INC1Y, INC2Y, NZ, K, IFZ, INC1Z, INC2Z, LWORK
SUBROUTINE CCNVCOR_64( CNVCOR, FOUR, NX, X, IFX, INCX, NY, NPRE, M, * Y, IFY, INC1Y, INC2Y, NZ, K, Z, IFZ, INC1Z, INC2Z, WORK, LWORK) CHARACTER * 1 CNVCOR, FOUR COMPLEX X(*), Y(*), Z(*), WORK(*) INTEGER*8 NX, IFX, INCX, NY, NPRE, M, IFY, INC1Y, INC2Y, NZ, K, IFZ, INC1Z, INC2Z, LWORK
SUBROUTINE CNVCOR( CNVCOR, FOUR, NX, X, IFX, [INCX], NY, NPRE, M, Y, * IFY, INC1Y, INC2Y, NZ, K, Z, IFZ, INC1Z, INC2Z, WORK, [LWORK]) CHARACTER(LEN=1) :: CNVCOR, FOUR COMPLEX, DIMENSION(:) :: X, Y, Z, WORK INTEGER :: NX, IFX, INCX, NY, NPRE, M, IFY, INC1Y, INC2Y, NZ, K, IFZ, INC1Z, INC2Z, LWORK
SUBROUTINE CNVCOR_64( CNVCOR, FOUR, NX, X, IFX, [INCX], NY, NPRE, M, * Y, IFY, INC1Y, INC2Y, NZ, K, Z, IFZ, INC1Z, INC2Z, WORK, [LWORK]) CHARACTER(LEN=1) :: CNVCOR, FOUR COMPLEX, DIMENSION(:) :: X, Y, Z, WORK INTEGER(8) :: NX, IFX, INCX, NY, NPRE, M, IFY, INC1Y, INC2Y, NZ, K, IFZ, INC1Z, INC2Z, LWORK
#include <sunperf.h>
void ccnvcor(char cnvcor, char four, int nx, complex *x, int ifx, int incx, int ny, int npre, int m, complex *y, int ify, int inc1y, int inc2y, int nz, int k, complex *z, int ifz, int inc1z, int inc2z, complex *work, int lwork);
void ccnvcor_64(char cnvcor, char four, long nx, complex *x, long ifx, long incx, long ny, long npre, long m, complex *y, long ify, long inc1y, long inc2y, long nz, long k, complex *z, long ifz, long inc1z, long inc2z, complex *work, long lwork);
ccnvcor computes the convolution or correlation of complex vectors.
CHARACTER
\'V' or 'v' if convolution is desired, 'R' or 'r' if correlation is desired.
CHARACTER
\'T' or 't' if the Fourier transform method is to be used, 'D' or 'd' if the computation should be done directly from the definition. The Fourier transform method is generally faster, but it may introduce noticeable errors into certain results, notably when both the real and imaginary parts of the filter and data vectors consist entirely of integers or vectors where elements of either the filter vector or a given data vector differ significantly in magnitude from the 1-norm of the vector.
dimension(*)
Filter vector.
dimension(*)
Input vectors.
dimension(*)
Result vectors.
dimension(LWORK)
Scratch space. Before the first call to CCNVCOR with particular values of the integer arguments the first element of WORK must be set to zero. If WORK is written between calls to CCNVCOR or if CCNVCOR is called with different values of the integer arguments then the first element of WORK must again be set to zero before each call. If WORK has not been written and the same values of the integer arguments are used then the first element of WORK to zero. This can avoid certain initializations that store their results into WORK, and avoiding the initialization can make CCNVCOR run faster.