PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
void CORE_zpltmg_toeppd2 ( int  M,
int  N,
int  K,
int  m0,
int  n0,
const PLASMA_Complex64_t *  W,
PLASMA_Complex64_t *  A,
int  LDA 
)

CORE_zpltmg_toeppd2 is the first kernel used in toeppd matrix generation.

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

A toeppd matrix is an n-by-n symmetric, positive semi-definite (SPD) Toeplitz matrix composed of the sum of m rank 2 (or, for certain theta, rank 1) SPD Toeplitz matrices. Specifically,

T = w(1)*T(theta(1)) + ... + w(m)*T(theta(m))

where T(theta(k)) has (i,j) element cos(2*pi*theta(k)*(i-j)).

In this matrix generation: w = rand(m,1), and theta = rand(m,1).

This kernel adds to the tile A the local sum of: w(1)*T(theta(1)) + ... + w(K) * T(theta(K))

Parameters
[in]MThe number of rows of the tile A. M >= 0.
[in]NThe number of columns of the tile A. N >= 0.
[in]KThe number of matrices W() * T(theta()) to apply.
[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]WThe 2-by-K array that stores the values of W and 2*pi*Theta. W being stored on the first row, 2*pi*theta on the second.
[in,out]AOn entry, the M-by-N tile to be initialized with a partial sum of the Toeppliz matrices. On exit, the M-by-N tile update with the sum of K extra Toepplitz matrices
[in]LDAThe leading dimension of the tile A. LDA >= max(1,M).