112 SUBROUTINE zhpt01( UPLO, N, A, AFAC, IPIV, C, LDC, RWORK, RESID )
121 DOUBLE PRECISION RESID
125 DOUBLE PRECISION RWORK( * )
126 COMPLEX*16 A( * ), ( * ), 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.NE.
IF( DIMAG( AFAC( JC ) )ZERO ) THEN
181.NE.
IF( DIMAG( AFAC( JC ) )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.LE.
IF( ANORMZERO ) THEN
233 RESID = ( ( RESID / DBLE( N ) ) / ANORM ) / EPS
logical function lsame(ca, cb)
LSAME
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.
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