Circulant

An \(n \times n\) matrix \(A\) is called circulant if there exists a vector \(b\) such that

\[A(i,j) = b((i-j) \bmod n).\]

The following routines generate a circulant matrix using the vector a.

C++ API

void Circulant(Matrix<T> &A, const std::vector<T> &a)
void Circulant(AbstractDistMatrix<T> &A, const std::vector<T> &a)

C API

ElError ElCirculant_i(ElMatrix_i A, ElInt aSize, ElInt* aBuf)
ElError ElCirculant_s(ElMatrix_s A, ElInt aSize, float* aBuf)
ElError ElCirculant_d(ElMatrix_d A, ElInt aSize, double* aBuf)
ElError ElCirculant_c(ElMatrix_c A, ElInt aSize, complex_float* aBuf)
ElError ElCirculant_z(ElMatrix_z A, ElInt aSize, complex_double* aBuf)
ElError ElCirculantDist_i(ElDistMatrix_i A, ElInt aSize, ElInt* aBuf)
ElError ElCirculantDist_s(ElDistMatrix_s A, ElInt aSize, float* aBuf)
ElError ElCirculantDist_d(ElDistMatrix_d A, ElInt aSize, double* aBuf)
ElError ElCirculantDist_c(ElDistMatrix_c A, ElInt aSize, complex_float* aBuf)
ElError ElCirculantDist_z(ElDistMatrix_z A, ElInt aSize, complex_double* aBuf)

Python API

Circulant(A, a)