SUBROUTINE ZCHDC( A, LDA, N, WORK, IPIVOT, JOB, INFO) DOUBLE COMPLEX A(LDA,*), WORK(*) INTEGER LDA, N, JOB, INFO INTEGER IPIVOT(*) SUBROUTINE ZCHDC_64( A, LDA, N, WORK, IPIVOT, JOB, INFO) DOUBLE COMPLEX A(LDA,*), WORK(*) INTEGER*8 LDA, N, JOB, INFO INTEGER*8 IPIVOT(*)
void zchdc(doublecomplex *a, int lda, int n, int *ipivot, int job, int *info);
void zchdc_64(doublecomplex *a, long lda, long n, long *ipivot, long job, long *info);
IPIVOT(k) > 0 A(k,k) is an initial element.
IPIVOT(k) = 0 A(k,k) is a free element.
IPIVOT(k) < 0 A(k,k) is a final element.
Before the decomposition is computed, symmetric row and column interchanges are used to move initial elements to the beginning of A and final elements to the end of A. During the computation, symmetric row and column interchanges are used to move the largest remaining free diagonal element into the pivot position. On exit, IPIVOT(k) contains the index of the diagonal element of A that was moved into the kth position.
0 without pivoting
not 0 with pivoting