Common Library Parameters

 

  data

Array containing input and output data for in-place processing

  dir

Processing direction, Forward=1, Inverse=-1

  N

Signal size in the horizontal dimension

  M

Signal size in the vertical dimension

  batch

Number of batch problems in the input array

 

 

Library Function Declarations

 

//---- Complex Fourier Transform (cFFT)  -----------------------------------

int KFourier(float2* data, int dir, int N, int M, int batch);

 


 

//---- Real Fourier Transform (rFFT)  -----------------------------------

int KReal(float* data, int dir, int N, int M, int batch);

int KReal(float2* data, int dir, int N, int M, int batch);

 

Note: For forward transforms, the input is real (size N) and the output is complex (size N/2), with the Nyquist frequency (element N/2+1) stored in the imaginary part of the first element. For inverse transforms the input is complex (size N/2), while the output is real (size N). Despite the common interface, 2D rFFT transforms are not currently supported.

 


 

//---- Discrete Cosine Transform (DCT)  -----------------------------------

int KCosine(float* data, int dir, int N, int M, int batch);

 


 

//---- Hartley Fast Transform (Hart)  -----------------------------------

int KHartley(float* data, int dir, int N, int M, int batch);

 


 

//---- Tridiagonal systems - Wang&Mou pattern (TS-WM)  -----------------------------------

int KTridiagWM(float* data, int dir, int N, int M, int batch);

 

Note: In all TS solvers, the input is treated as a 2D array of size N*M, where M=4. This means that the algorithm expects the coefficients of the tridiagonal equations stored consecutively in memory. The processing will be performed in-place, and the output of the problem will be stored in the fourth element of each equation, overwriting the independent term. Dir parameter has no effect here.

 


 

//---- Tridiagonal systems - Parallel Cyclic Reduction pattern (TS-PCR)  -----------------------------------

int KTridiagPCR(float* data, int dir, int N, int M, int batch);

 


 

//---- Tridiagonal systems - Cyclic Reduction pattern (TS-CR)  -----------------------------------

int KTridiagCR(float* data, int dir, int N, int M, int batch);

 


 

//---- Tridiagonal systems - Ladner&Fischer pattern (TS-LF)  -----------------------------------

int KTridiagLF(float* data, int dir, int N, int M, int batch);

 


 

//---- Scan - Ladner&Fischer pattern (scan-LF)  -----------------------------------

int KScanLF(float* data, int dir, int N, int M, int batch);

 

Note: Dir parameter has no effect here.

 


 

//---- Scan - Kogge&Stone pattern (scan-KS)  -----------------------------------

int KScanKS(float* data, int dir, int N, int M, int batch);

 


 

//---- BMCS Sort (BMCS)  -----------------------------------

int KSort(float* data, int dir, int N, int M, int batch);

 

Note: This sorting algorithm is based on BMCS (Bitonic Merge Comb Sort . Dir parameter has no effect here.).