112 SUBROUTINE zhpt01( UPLO, N, A, AFAC, IPIV, C, LDC, RWORK, RESID )
121 DOUBLE PRECISION RESID
125 DOUBLE PRECISION RWORK( * )
126 COMPLEX*16 A( * ), AFAC( * ), C( LDC, * )
132 DOUBLE PRECISION ZERO, ONE
133 parameter( zero = 0.0d+0, one = 1.0d+0 )
134 COMPLEX*16 CZERO, CONE
135 parameter( czero = ( 0.0d+0, 0.0d+0 ),
136 $ cone = ( 1.0d+0, 0.0d+0 ) )
139 INTEGER I, INFO, J, JC
140 DOUBLE PRECISION ANORM, EPS
144 DOUBLE PRECISION DLAMCH, ZLANHE, ZLANHP
145 EXTERNAL lsame, dlamch, zlanhe, zlanhp
151 INTRINSIC dble, dimag
164 eps = dlamch(
'Epsilon' )
165 anorm = zlanhp(
'1', uplo, n, a, rwork )
171 IF( lsame( uplo,
'U' ) )
THEN
173 IF( dimag( afac( jc ) ).NE.zero )
THEN
181 IF( dimag( afac( jc ) ).NE.zero )
THEN
191 CALL zlaset(
'Full', n, n, czero, cone, c, ldc )
195 CALL zlavhp( uplo,
'Conjugate',
'Non-unit', n, n, afac, ipiv, c,
200 CALL zlavhp( uplo,
'No transpose',
'Unit', n, n, afac, ipiv, c,
205 IF( lsame( uplo,
'U' ) )
THEN
209 c( i, j ) = c( i, j ) - a( jc+i )
211 c( j, j ) = c( j, j ) - dble( a( jc+j ) )
217 c( j, j ) = c( j, j ) - dble( a( jc ) )
219 c( i, j ) = c( i, j ) - a( jc+i-j )
227 resid = zlanhe(
'1', uplo, n, c, ldc, rwork )
229 IF( anorm.LE.zero )
THEN
233 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zlavhp(UPLO, TRANS, DIAG, N, NRHS, A, IPIV, B, LDB, INFO)
ZLAVHP
subroutine zhpt01(UPLO, N, A, AFAC, IPIV, C, LDC, RWORK, RESID)
ZHPT01
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.