Swap

Entire matrices

The following routines replace \(A\) and \(B\) with each other, their transpose, or their adjoint.

C++ API

void Swap(Orientation orientation, Matrix<T> &A, Matrix<T> &B)
void Swap(Orientation orientation, AbstractDistMatrix<T> &A, AbstractDistMatrix<T> &B)

C API

ElError ElSwap_i(ElOrientation orientation, ElMatrix_i X, ElMatrix_i Y)
ElError ElSwap_s(ElOrientation orientation, ElMatrix_s X, ElMatrix_s Y)
ElError ElSwap_d(ElOrientation orientation, ElMatrix_d X, ElMatrix_d Y)
ElError ElSwap_c(ElOrientation orientation, ElMatrix_c X, ElMatrix_c Y)
ElError ElSwap_z(ElOrientation orientation, ElMatrix_z X, ElMatrix_z Y)
ElError ElSwapDist_i(ElOrientation orientation, ElDistMatrix_i X, ElDistMatrix_i Y)
ElError ElSwapDist_s(ElOrientation orientation, ElDistMatrix_s X, ElDistMatrix_s Y)
ElError ElSwapDist_d(ElOrientation orientation, ElDistMatrix_d X, ElDistMatrix_d Y)
ElError ElSwapDist_c(ElOrientation orientation, ElDistMatrix_c X, ElDistMatrix_c Y)
ElError ElSwapDist_z(ElOrientation orientation, ElDistMatrix_z X, ElDistMatrix_z Y)

Pairs of rows

Swap rows to and from in the matrix.

C++ API

void RowSwap(Matrix<T> &A, Int to, Int from)
void RowSwap(AbstractDistMatrix<T> &A, Int to, Int from)

C API

ElError ElRowSwap_i(ElMatrix_i A, ElInt to, ElInt from)
ElError ElRowSwap_s(ElMatrix_s A, ElInt to, ElInt from)
ElError ElRowSwap_d(ElMatrix_d A, ElInt to, ElInt from)
ElError ElRowSwap_c(ElMatrix_c A, ElInt to, ElInt from)
ElError ElRowSwap_z(ElMatrix_z A, ElInt to, ElInt from)
ElError ElRowSwapDist_i(ElDistMatrix_i A, ElInt to, ElInt from)
ElError ElRowSwapDist_s(ElDistMatrix_s A, ElInt to, ElInt from)
ElError ElRowSwapDist_d(ElDistMatrix_d A, ElInt to, ElInt from)
ElError ElRowSwapDist_c(ElDistMatrix_c A, ElInt to, ElInt from)
ElError ElRowSwapDist_z(ElDistMatrix_z A, ElInt to, ElInt from)

Pairs of columns

Swap columns to and from in the matrix.

C++ API

void ColSwap(Matrix<T> &A, Int to, Int from)
void ColSwap(AbstractDistMatrix<T> &A, Int to, Int from)

C API

ElError ElColSwap_i(ElMatrix_i A, ElInt to, ElInt from)
ElError ElColSwap_s(ElMatrix_s A, ElInt to, ElInt from)
ElError ElColSwap_d(ElMatrix_d A, ElInt to, ElInt from)
ElError ElColSwap_c(ElMatrix_c A, ElInt to, ElInt from)
ElError ElColSwap_z(ElMatrix_z A, ElInt to, ElInt from)
ElError ElColSwapDist_i(ElDistMatrix_i A, ElInt to, ElInt from)
ElError ElColSwapDist_s(ElDistMatrix_s A, ElInt to, ElInt from)
ElError ElColSwapDist_d(ElDistMatrix_d A, ElInt to, ElInt from)
ElError ElColSwapDist_c(ElDistMatrix_c A, ElInt to, ElInt from)
ElError ElColSwapDist_z(ElDistMatrix_z A, ElInt to, ElInt from)

Symmetric/Hermitian swap

Symmetrically permute the to and from degrees of freedom within the implicitly symmetric (Hermitian) matrix \(A\) which stores its data in the specified triangle.

C++ API

void SymmetricSwap(UpperOrLower uplo, Matrix<T> &A, Int to, Int from, bool conjugate = false)
void SymmetricSwap(UpperOrLower uplo, AbstractDistMatrix<T> &A, Int to, Int from, bool conjugate = false)
void HermitianSwap(UpperOrLower uplo, Matrix<T> &A, Int to, Int from)
void HermitianSwap(UpperOrLower uplo, AbstractDistMatrix<T> &A, Int to, Int from)

C API

ElError ElSymmetricSwap_i(ElUpperOrLower uplo, ElMatrix_i A, ElInt to, ElInt from)
ElError ElSymmetricSwap_s(ElUpperOrLower uplo, ElMatrix_s A, ElInt to, ElInt from)
ElError ElSymmetricSwap_d(ElUpperOrLower uplo, ElMatrix_d A, ElInt to, ElInt from)
ElError ElSymmetricSwap_c(ElUpperOrLower uplo, ElMatrix_c A, ElInt to, ElInt from)
ElError ElSymmetricSwap_z(ElUpperOrLower uplo, ElMatrix_z A, ElInt to, ElInt from)
ElError ElSymmetricSwapDist_i(ElUpperOrLower uplo, ElDistMatrix_i A, ElInt to, ElInt from)
ElError ElSymmetricSwapDist_s(ElUpperOrLower uplo, ElDistMatrix_s A, ElInt to, ElInt from)
ElError ElSymmetricSwapDist_d(ElUpperOrLower uplo, ElDistMatrix_d A, ElInt to, ElInt from)
ElError ElSymmetricSwapDist_c(ElUpperOrLower uplo, ElDistMatrix_c A, ElInt to, ElInt from)
ElError ElSymmetricSwapDist_z(ElUpperOrLower uplo, ElDistMatrix_z A, ElInt to, ElInt from)
ElError ElHermitianSwap_c(ElUpperOrLower uplo, ElMatrix_c A, ElInt to, ElInt from)
ElError ElHermitianSwap_z(ElUpperOrLower uplo, ElMatrix_z A, ElInt to, ElInt from)
ElError ElHermitianSwapDist_c(ElUpperOrLower uplo, ElDistMatrix_c A, ElInt to, ElInt from)
ElError ElHermitianSwapDist_z(ElUpperOrLower uplo, ElDistMatrix_z A, ElInt to, ElInt from)