124 SUBROUTINE zhet01( UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC,
133 INTEGER LDA, LDAFAC, LDC, N
134 DOUBLE PRECISION RESID
138 DOUBLE PRECISION RWORK( * )
139 COMPLEX*16 A( LDA, * ), AFAC( LDAFAC, * ), C( LDC, * )
145 DOUBLE PRECISION ZERO, ONE
146 parameter( zero = 0.0d+0, one = 1.0d+0 )
147 COMPLEX*16 CZERO, CONE
148 parameter( czero = ( 0.0d+0, 0.0d+0 ),
149 $ cone = ( 1.0d+0, 0.0d+0 ) )
153 DOUBLE PRECISION ANORM, EPS
157 DOUBLE PRECISION DLAMCH, ZLANHE
158 EXTERNAL lsame, dlamch, zlanhe
164 INTRINSIC dble, dimag
177 eps = dlamch(
'Epsilon' )
178 anorm = zlanhe(
'1', uplo, n, a, lda, rwork )
184 IF( dimag( afac( j, j ) ).NE.zero )
THEN
192 CALL zlaset(
'Full', n, n, czero, cone, c, ldc )
196 CALL zlavhe( uplo,
'Conjugate',
'Non-unit', n, n, afac, ldafac,
197 $ ipiv, c, ldc, info )
201 CALL zlavhe( uplo,
'No transpose',
'Unit', n, n, afac, ldafac,
202 $ ipiv, c, ldc, info )
206 IF( lsame( uplo,
'U' ) )
THEN
209 c( i, j ) = c( i, j ) - a( i, j )
211 c( j, j ) = c( j, j ) - dble( a( j, j ) )
215 c( j, j ) = c( j, j ) - dble( a( j, j ) )
217 c( i, j ) = c( i, j ) - a( i, j )
224 resid = zlanhe(
'1', uplo, n, c, ldc, rwork )
226 IF( anorm.LE.zero )
THEN
230 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zlavhe(UPLO, TRANS, DIAG, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
ZLAVHE
subroutine zhet01(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
ZHET01
subroutine zlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.