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 ) /
subroutine ssymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SSYMM
subroutine ssgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RESULT)
SSGT01
subroutine sscal(N, SA, SX, INCX)
SSCAL