SUBROUTINE ZSYTRF( UPLO, N, A, LDA, IPIVOT, WORK, LDWORK, INFO) CHARACTER * 1 UPLO DOUBLE COMPLEX A(LDA,*), WORK(*) INTEGER N, LDA, LDWORK, INFO INTEGER IPIVOT(*) SUBROUTINE ZSYTRF_64( UPLO, N, A, LDA, IPIVOT, WORK, LDWORK, INFO) CHARACTER * 1 UPLO DOUBLE COMPLEX A(LDA,*), WORK(*) INTEGER*8 N, LDA, LDWORK, INFO INTEGER*8 IPIVOT(*)
SUBROUTINE SYTRF( UPLO, N, A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO]) CHARACTER(LEN=1) :: UPLO COMPLEX(8), DIMENSION(:) :: WORK COMPLEX(8), DIMENSION(:,:) :: A INTEGER :: N, LDA, LDWORK, INFO INTEGER, DIMENSION(:) :: IPIVOT SUBROUTINE SYTRF_64( UPLO, N, A, [LDA], IPIVOT, [WORK], [LDWORK], * [INFO]) CHARACTER(LEN=1) :: UPLO COMPLEX(8), DIMENSION(:) :: WORK COMPLEX(8), DIMENSION(:,:) :: A INTEGER(8) :: N, LDA, LDWORK, INFO INTEGER(8), DIMENSION(:) :: IPIVOT
void zsytrf(char uplo, int n, doublecomplex *a, int lda, int *ipivot, int *info);
void zsytrf_64(char uplo, long n, doublecomplex *a, long lda, long *ipivot, long *info);
A = U*D*U**T or A = L*D*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and D is symmetric and block diagonal with with 1-by-1 and 2-by-2 diagonal blocks.
This is the blocked version of the algorithm, calling Level 3 BLAS.
On exit, the block diagonal matrix D and the multipliers used to obtain the factor U or L (see below for further details).
If LDWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LDWORK is issued by XERBLA.