144 SUBROUTINE sgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
145 $ WORK, IWORK, INFO )
153 INTEGER INFO, KL, KU, LDAB, N
157 INTEGER IPIV( * ), IWORK( * )
158 REAL AB( LDAB, * ), WORK( * )
165 parameter( one = 1.0e+0, zero = 0.0e+0 )
170 INTEGER , J, JP, KASE, KASE1, KD, LM
171 REAL AINVNM, SCALE, SMLNUM, T
180 EXTERNAL lsame, isamax, sdot, slamch
193 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
194 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
196 ELSE IF( n.LT.0 )
THEN
198 ELSE IF( kl.LT.0 )
THEN
200 ELSE IF( ku.LT.0 )
THEN
202 ELSE IF( ldab.LT.2*kl+ku+1 )
THEN
204 ELSE IF( anorm.LT.zero )
THEN
208 CALL xerbla(
'SGBCON', -info )
218 ELSE IF( anorm.EQ.zero )
THEN
222 smlnum = slamch(
'Safe minimum' )
237 CALL SLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
239.EQ.
IF( KASEKASE1 ) THEN
249 WORK( JP ) = WORK( J )
252 CALL SAXPY( LM, -T, AB( KD+1, J ), 1, WORK( J+1 ), 1 )
258 CALL SLATBS( 'upper
', 'no transpose
', 'non-unit
', NORMIN, N,
259 $ KL+KU, AB, LDAB, WORK, SCALE, WORK( 2*N+1 ),
265 CALL SLATBS( 'upper
', 'transpose
', 'non-unit
', NORMIN, N,
266 $ KL+KU, AB, LDAB, WORK, SCALE, WORK( 2*N+1 ),
272 DO 30 J = N - 1, 1, -1
274 WORK( J ) = WORK( J ) - SDOT( LM, AB( KD+1, J ), 1,
279 WORK( JP ) = WORK( J )
289.NE.
IF( SCALEONE ) THEN
290 IX = ISAMAX( N, WORK, 1 )
291.LT..OR..EQ.
IF( SCALEABS( WORK( IX ) )*SMLNUM SCALEZERO )
293 CALL SRSCL( N, SCALE, WORK, 1 )
301 $ RCOND = ( ONE / AINVNM ) / ANORM
subroutine xerbla(srname, info)
XERBLA
subroutine sgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork, info)
SGBCON
subroutine slatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, scale, cnorm, info)
SLATBS solves a triangular banded system of equations.
subroutine srscl(n, sa, sx, incx)
SRSCL multiplies a vector by the reciprocal of a real scalar.
subroutine slacn2(n, v, x, isgn, est, kase, isave)
SLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...
subroutine saxpy(n, sa, sx, incx, sy, incy)
SAXPY