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.).