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
subroutine chemm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
CHEMM
subroutine csscal(n, sa, cx, incx)
CSSCAL