146 SUBROUTINE ssgt01( ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D,
156 INTEGER ITYPE, LDA, LDB, LDZ, M, N
159 REAL A( LDA, * ), B( LDB, * ), D( * ), RESULT( * ),
160 $ work( * ), z( ldz, * )
167 parameter( zero = 0.0e0, one = 1.0e0 )
174 REAL SLAMCH, SLANGE, SLANSY
175 EXTERNAL slamch, slange, slansy
186 ulp = slamch(
'Epsilon' )
190 anorm = slansy(
'1', uplo, n, a, lda, work )*
191 $ slange(
'1', n, m, z, ldz, work )
195 IF( itype.EQ.1 )
THEN
199 CALL ssymm(
'Left', uplo, n, m, one, a, lda, z, ldz, zero,
202 CALL sscal( n, d( i ), z( 1, i ), 1 )
204 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, z, ldz, -one,
207 result( 1 ) = ( slange(
'1', n, m, work, n, work ) / anorm ) /
210 ELSE IF( itype.EQ.2 )
THEN
214 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, z, ldz, zero,
217 CALL sscal( n, d( i ), z( 1, i ), 1 )
219 CALL ssymm(
'Left', uplo, n, m, one, a, lda, work, n, -one, z,
222 result( 1 ) = ( slange(
'1', n, m, z, ldz, work ) / anorm ) /
225 ELSE IF( itype.EQ.3 )
THEN
229 CALL ssymm(
'Left', uplo, n, m, one, a, lda, z, ldz, zero,
232 CALL sscal( n, d( i ), z( 1, i ), 1 )
234 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, work, n, -one, z,
237 result( 1 ) = ( slange(
'1', n, m, z, ldz, work ) / anorm ) /