144 SUBROUTINE ssgt01( ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D,
153 INTEGER ITYPE, LDA, LDB, LDZ, M, N
156 REAL A( LDA, * ), B( LDB, * ), D( * ), RESULT( * ),
157 $ work( * ), z( ldz, * )
164 parameter( zero = 0.0e0, one = 1.0e0 )
171 REAL SLAMCH, SLANGE, SLANSY
172 EXTERNAL slamch, slange, slansy
183 ulp = slamch(
'Epsilon' )
187 anorm = slansy(
'1', uplo, n, a, lda, work )*
188 $ slange(
'1', n, m, z, ldz, work )
192 IF( itype.EQ.1 )
THEN
196 CALL ssymm(
'Left', uplo, n, m, one, a, lda, z, ldz, zero,
199 CALL sscal( n, d( i ), z( 1, i ), 1 )
201 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, z, ldz, -one,
204 result( 1 ) = ( slange(
'1', n, m, work, n, work ) / anorm ) /
207 ELSE IF( itype.EQ.2 )
THEN
211 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, z, ldz, zero,
214 CALL sscal( n, d( i ), z( 1, i ), 1 )
216 CALL ssymm(
'Left', uplo, n, m, one, a, lda, work, n, -one, z,
219 result( 1 ) = ( slange(
'1', n, m, z, ldz, work ) / anorm ) /
222 ELSE IF( itype.EQ.3 )
THEN
226 CALL ssymm(
'Left', uplo, n, m, one, a, lda, z, ldz, zero,
229 CALL sscal( n, d( i ), z( 1, i ), 1 )
231 CALL ssymm(
'Left', uplo, n, m, one, b, ldb, work, n, -one, z,
234 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 sscal(n, sa, sx, incx)
SSCAL
subroutine ssgt01(itype, uplo, n, m, a, lda, b, ldb, z, ldz, d, work, result)
SSGT01