145 SUBROUTINE ssbt21( UPLO, N, KA, KS, A, LDA, D, E, U, LDU, WORK,
154 INTEGER KA, KS, LDA, LDU, N
157 REAL A( LDA, * ), D( * ), E( * ), RESULT( 2 ),
158 $ u( ldu, * ), work( * )
165 parameter( zero = 0.0e0, one = 1.0e0 )
170 INTEGER IKA, , , JR, LW
171 REAL ANORM, ULP, UNFL,
175 REAL SLAMCH, SLANGE, SLANSB, SLANSP
176 EXTERNAL lsame, slamch, slange, slansb, slansp
193 ika =
max( 0,
min( n-1, ka ) )
194 lw = ( n*( n+1 ) ) / 2
196 IF( lsame( uplo,
'U' ) )
THEN
204 unfl = slamch(
'Safe minimum' )
205 ulp = slamch( 'epsilon
' )*SLAMCH( 'base
' )
213 ANORM = MAX( SLANSB( '1
', CUPLO, N, IKA, A, LDA, WORK ), UNFL )
222 DO 10 JR = 1, MIN( IKA+1, N+1-JC )
224 WORK( J ) = A( JR, JC )
226 DO 20 JR = IKA + 2, N + 1 - JC
231 DO 30 JR = IKA + 2, JC
235 DO 40 JR = MIN( IKA, JC-1 ), 0, -1
237 WORK( J ) = A( IKA+1-JR, JC )
243 CALL SSPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
246.GT..AND..EQ.
IF( N1 KS1 ) THEN
248 CALL SSPR2( CUPLO, N, -E( J ), U( 1, J ), 1, U( 1, J+1 ), 1,
252 WNORM = SLANSP( '1
', CUPLO, N, WORK, WORK( LW+1 ) )
254.GT.
IF( ANORMWNORM ) THEN
255 RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
257.LT.
IF( ANORMONE ) THEN
258 RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
260 RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
268 CALL SGEMM( 'n
', 'c
', N, N, N, ONE, U, LDU, U, LDU, ZERO, WORK,
272 WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - ONE
275 RESULT( 2 ) = MIN( SLANGE( '1
', N, N, WORK, N, WORK( N**2+1 ) ),
276 $ REAL( N ) ) / ( N*ULP )
subroutine sspr2(uplo, n, alpha, x, incx, y, incy, ap)
SSPR2
subroutine sspr(uplo, n, alpha, x, incx, ap)
SSPR
subroutine sgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMM
subroutine ssbt21(uplo, n, ka, ks, a, lda, d, e, u, ldu, work, result)
SSBT21