150 SUBROUTINE csgt01( ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D,
151 $ WORK, RWORK, RESULT )
159 INTEGER ITYPE, LDA, LDB, LDZ, M, N
162 REAL D( * ), RESULT( * ), RWORK( * )
163 COMPLEX A( LDA, * ), B( LDB, * ), WORK( * ),
171 parameter( zero = 0.0e+0, one = 1.0e+0 )
173 parameter( czero = ( 0.0e+0, 0.0e+0 ),
174 $ cone = ( 1.0e+0, 0.0e+0 ) )
181 REAL CLANGE, CLANHE, SLAMCH
182 EXTERNAL clange, clanhe, slamch
193 ulp = slamch(
'Epsilon' )
197 anorm = clanhe(
'1', uplo, n, a, lda, rwork )*
198 $ clange(
'1', n, m, z, ldz, rwork )
202 IF( itype.EQ.1 )
THEN
206 CALL chemm(
'Left', uplo, n, m, cone, a, lda, z, ldz, czero,
209 CALL csscal( n, d( i ), z( 1, i ), 1 )
211 CALL chemm(
'Left', uplo, n, m, cone, b, ldb, z, ldz, -cone,
214 result( 1 ) = ( clange(
'1', n, m, work, n, rwork ) / anorm ) /
217 ELSE IF( itype.EQ.2 )
THEN
221 CALL chemm(
'Left', uplo, n, m, cone, b, ldb, z, ldz, czero,
224 CALL csscal( n, d( i ), z( 1, i ), 1 )
226 CALL chemm(
'Left', uplo, n, m, cone, a, lda, work, n, -cone,
229 result( 1 ) = ( clange(
'1', n, m, z, ldz, rwork ) / anorm ) /
232 ELSE IF( itype.EQ.3 )
THEN
236 CALL chemm(
'Left', uplo, n, m, cone, a, lda, z, ldz, czero,
239 CALL csscal( n, d( i ), z( 1, i ), 1 )
241 CALL chemm(
'Left', uplo, n, m, cone, b, ldb, work, n, -cone,
244 result( 1 ) = ( clange(
'1', n, m, z, ldz, rwork ) / anorm ) /
subroutine csgt01(itype, uplo, n, m, a, lda, b, ldb, z, ldz, d, work, rwork, result)
CSGT01