94 SUBROUTINE zppt01( UPLO, N, A, AFAC, RWORK, RESID )
103 DOUBLE PRECISION RESID
106 DOUBLE PRECISION RWORK( * )
107 COMPLEX*16 A( * ), AFAC( * )
113 DOUBLE PRECISION ZERO, ONE
114 parameter( zero = 0.0d+0, one = 1.0d+0 )
118 DOUBLE PRECISION ANORM, EPS, TR
123 DOUBLE PRECISION DLAMCH, ZLANHP
125 EXTERNAL lsame, dlamch, zlanhp, zdotc
131 INTRINSIC dble, dimag
144 eps = dlamch(
'Epsilon' )
145 anorm = zlanhp(
'1', uplo, n, a, rwork )
146 IF( anorm.LE.zero )
THEN
155 IF( lsame( uplo,
'U' ) )
THEN
157 IF( dimag( afac( kc ) ).NE.zero )
THEN
165 IF( dimag( afac( kc ) ).NE.zero )
THEN
175 IF( lsame( uplo,
'U' ) )
THEN
176 kc = ( n*( n-1 ) ) / 2 + 1
181 tr = dble( zdotc( k, afac( kc ), 1, afac( kc ), 1 ) )
187 CALL ztpmv(
'Upper',
'Conjugate',
'Non-unit', k-1, afac,
198 afac( kc+i-1 ) = afac( kc+i-1 ) - a( kc+i-1 )
200 afac( kc+k-1 ) = afac( kc+k-1 ) - dble( a( kc+k-1 ) )
207 kc = ( n*( n+1 ) ) / 2
214 $
CALL zhpr(
'Lower', n-k, one, afac( kc+1 ), 1,
220 CALL zscal( n-k+1, tc, afac( kc ), 1 )
229 afac( kc ) = afac( kc ) - dble( a( kc ) )
231 afac( kc+i-k ) = afac( kc+i-k ) - a( kc+i-k )
239 resid = zlanhp(
'1', uplo, n, afac, rwork )
241 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zhpr(uplo, n, alpha, x, incx, ap)
ZHPR
subroutine ztpmv(uplo, trans, diag, n, ap, x, incx)
ZTPMV