PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
int CORE_spltmg_circul ( int  M,
int  N,
float *  A,
int  LDA,
int  gM,
int  m0,
int  n0,
const float *  V 
)

CORE_spltmg_circul is a kernel used in circulant matrix generation

See http://www.mathworks.fr/fr/help/matlab/ref/gallery.html#f84-999880

Circulant matrix

A circulant matrix has the property that each row is obtained from the previous one by cyclically permuting the entries one step forward. It is a special Toeplitz matrix in which the diagonals "wrap around."

The eigensystem of C (n-by-n) is known explicitly: If t is an nth root of unity, then the inner product of v and w = [1 t t2 ... t(n – 1)] is an eigenvalue of C and w(n:-1:1) is an eigenvector, where v is the first column of C.

Parameters
[in]MThe number of rows of the tile A to initialize. M >= 2.
[in]NThe number of columns of the tile A to initialize. N >= 0.
[out]AOn entry, the M-by-N tile to be initialized.
[in]LDAThe leading dimension of the tile A. LDA >= max(1,M).
[in]gMThe global number of rows of the full matrix, A is belonging to. gM >= (m0+gM).
[in]m0The index of the first row of tile A in the full matrix. m0 >= 0.
[in]n0The index of the first column of tile A in the full matrix. n0 >= 0.
[in]VWorkspace of size gM, that contains the first clumn of the full matrix
Returns
Return values
PLASMA_SUCCESSsuccessful exit
<0if INFO = -k, the k-th argument had an illegal value