SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIVOT, WORK, LDWORK, INFO) CHARACTER * 1 UPLO INTEGER N, LDA, LDWORK, INFO INTEGER IPIVOT(*) DOUBLE PRECISION A(LDA,*), WORK(*) SUBROUTINE DSYTRF_64( UPLO, N, A, LDA, IPIVOT, WORK, LDWORK, INFO) CHARACTER * 1 UPLO INTEGER*8 N, LDA, LDWORK, INFO INTEGER*8 IPIVOT(*) DOUBLE PRECISION A(LDA,*), WORK(*)
SUBROUTINE SYTRF( UPLO, N, A, [LDA], IPIVOT, [WORK], [LDWORK], [INFO]) CHARACTER(LEN=1) :: UPLO INTEGER :: N, LDA, LDWORK, INFO INTEGER, DIMENSION(:) :: IPIVOT REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A SUBROUTINE SYTRF_64( UPLO, N, A, [LDA], IPIVOT, [WORK], [LDWORK], * [INFO]) CHARACTER(LEN=1) :: UPLO INTEGER(8) :: N, LDA, LDWORK, INFO INTEGER(8), DIMENSION(:) :: IPIVOT REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A
void dsytrf(char uplo, int n, double *a, int lda, int *ipivot, int *info);
void dsytrf_64(char uplo, long n, double *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 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.