1 SUBROUTINE ddbtrf( M, N, KL, KU, AB, LDAB, INFO )
15 INTEGER, KU, LDAB, M, N
18 DOUBLE PRECISION ( LDAB, * )
86 DOUBLE PRECISION ONE, ZERO
87 parameter( one = 1.0d+0 )
88 parameter( zero = 0.0d
90 parameter( nbmax = 64, ldwork = nbmax+1 )
93 INTEGER I, I2, I3, II, J
97 DOUBLE PRECISION WORK13( LDWORK, NBMAX ),
98 $ WORK31( LDWORK, NBMAX )
102EXTERNAL ilaenv, isamax
122 ELSE IF( n.LT.0 )
THEN
124 ELSE IF( kl.LT.0 )
THEN
126 ELSE IF( ku.LT.0 )
THEN
128 ELSE IF( ldab.LT.
min(
min( kl+kv+1,m ),n ) )
THEN
132 CALL xerbla(
'DDBTRF', -info )
143 nb = ilaenv( 1, '
ddbtrf', ' ', M, N, KL, KU )
148 NB = MIN( NB, NBMAX )
150.LE..OR..GT.
IF( NB1 NBKL ) THEN
154 CALL DDBTF2( M, N, KL, KU, AB, LDAB, INFO )
163 WORK13( I, J ) = ZERO
171 WORK31( I, J ) = ZERO
180 DO 180 J = 1, MIN( M, N ), NB
181 JB = MIN( NB, MIN( M, N )-J+1 )
195 I2 = MIN( KL-JB, M-J-JB+1 )
196 I3 = MIN( JB, M-J-KL+1 )
202 DO 80 JJ = J, J + JB - 1
209.NE.
IF( AB( KV+JP, JJ )ZERO ) THEN
210 JU = MAX( JU, MIN( JJ+KU+JP-1, N ) )
214 CALL DSCAL( KM, ONE / AB( KV+1, JJ ), AB( KV+2, JJ ),
221 JM = MIN( JU, J+JB-1 )
223 CALL DGER( KM, JM-JJ, -ONE, AB( KV+2, JJ ), 1,
224 $ AB( KV, JJ+1 ), LDAB-1,
225 $ AB( KV+1, JJ+1 ), LDAB-1 )
231 NW = MIN( JJ-J+1, I3 )
233 $ CALL DCOPY( NW, AB( KV+KL+1-JJ+J, JJ ), 1,
234 $ WORK31( 1, JJ-J+1 ), 1 )
240 J2 = MIN( JU-J+1, KV ) - JB
241 J3 = MAX( 0, JU-J-KV+1 )
249 CALL DTRSM( 'left
', 'lower
', 'no transpose
', 'unit
',
250 $ JB, J2, ONE, AB( KV+1, J ), LDAB-1,
251 $ AB( KV+1-JB, J+JB ), LDAB-1 )
257 CALL DGEMM( 'no transpose
', 'no transpose
', I2, J2,
258 $ JB, -ONE, AB( KV+1+JB, J ), LDAB-1,
259 $ AB( KV+1-JB, J+JB ), LDAB-1, ONE,
260 $ AB( KV+1, J+JB ), LDAB-1 )
267 CALL DGEMM( 'no transpose
', 'no transpose
', I3, J2,
268 $ JB, -ONE, WORK31, LDWORK,
269 $ AB( KV+1-JB, J+JB ), LDAB-1, ONE,
270 $ AB( KV+KL+1-JB, J+JB ), LDAB-1 )
281 WORK13( II, JJ ) = AB( II-JJ+1, JJ+J+KV-1 )
287 CALL DTRSM( 'left
', 'lower
', 'no transpose
', 'unit
',
288 $ JB, J3, ONE, AB( KV+1, J ), LDAB-1,
295 CALL DGEMM( 'no transpose
', 'no transpose
', I2, J3,
296 $ JB, -ONE, AB( KV+1+JB, J ), LDAB-1,
297 $ WORK13, LDWORK, ONE, AB( 1+JB, J+KV ),
305 CALL DGEMM( 'no transpose
', 'no transpose
', I3, J3,
306 $ JB, -ONE, WORK31, LDWORK, WORK13,
307 $ LDWORK, ONE, AB( 1+KL, J+KV ), LDAB-1 )
314 AB( II-JJ+1, JJ+J+KV-1 ) = WORK13( II, JJ )
323 DO 170 JJ = J + JB - 1, J, -1
327 NW = MIN( I3, JJ-J+1 )
329 $ CALL DCOPY( NW, WORK31( 1, JJ-J+1 ), 1,
330 $ AB( KV+KL+1-JJ+J, JJ ), 1 )
subroutine ddbtf2(m, n, kl, ku, ab, ldab, info)
subroutine ddbtrf(m, n, kl, ku, ab, ldab, info)
subroutine xerbla(srname, info)
XERBLA
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dswap(n, dx, incx, dy, incy)
DSWAP
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER
subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM