193 SUBROUTINE slamswlq( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
194 $ LDT, C, LDC, WORK, LWORK, INFO )
201 CHARACTER SIDE, TRANS
202 INTEGER INFO, LDA, M, N, K, MB, NB, LDT, LWORK, LDC
205 REAL A( LDA, * ), WORK( * ), C(LDC, * ),
213 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
214 INTEGER I, II, KK, LW, CTR
227 notran = lsame( trans,
'N' )
228 tran = lsame( trans,
'T' )
229 left = lsame( side,
'L' )
230 right = lsame( side, 'r
' )
238.NOT..AND..NOT.
IF( LEFT RIGHT ) THEN
240.NOT..AND..NOT.
ELSE IF( TRAN NOTRAN ) THEN
242.LT.
ELSE IF( K0 ) THEN
244.LT.
ELSE IF( MK ) THEN
246.LT.
ELSE IF( N0 ) THEN
248.LT..OR..LT.
ELSE IF( KMB MB1) THEN
250.LT.
ELSE IF( LDAMAX( 1, K ) ) THEN
252.LT.
ELSE IF( LDTMAX( 1, MB) ) THEN
254.LT.
ELSE IF( LDCMAX( 1, M ) ) THEN
256.LT..AND..NOT.
ELSE IF(( LWORKMAX(1,LW))(LQUERY)) THEN
264 ELSE IF (LQUERY) THEN
271.EQ.
IF( MIN(M,N,K)0 ) THEN
275.LE..OR..GE.
IF((NBK)(NBMAX(M,N,K))) THEN
276 CALL SGEMLQT( SIDE, TRANS, M, N, K, MB, A, LDA,
277 $ T, LDT, C, LDC, WORK, INFO)
281.AND.
IF(LEFTTRAN) THEN
285 KK = MOD((M-K),(NB-K))
290 CALL STPMLQT('l
','t
',KK , N, K, 0, MB, A(1,II), LDA,
291 $ T(1,CTR*K+1), LDT, C(1,1), LDC,
292 $ C(II,1), LDC, WORK, INFO )
297 DO I=II-(NB-K),NB+1,-(NB-K)
302 CALL STPMLQT('l
','t
',NB-K , N, K, 0,MB, A(1,I), LDA,
303 $ T(1,CTR*K+1),LDT, C(1,1), LDC,
304 $ C(I,1), LDC, WORK, INFO )
309 CALL SGEMLQT('l
','t
',NB , N, K, MB, A(1,1), LDA, T
310 $ ,LDT ,C(1,1), LDC, WORK, INFO )
312.AND.
ELSE IF (LEFTNOTRAN) THEN
316 KK = MOD((M-K),(NB-K))
319 CALL SGEMLQT('l
','n
',NB , N, K, MB, A(1,1), LDA, T
320 $ ,LDT ,C(1,1), LDC, WORK, INFO )
322 DO I=NB+1,II-NB+K,(NB-K)
326 CALL STPMLQT('l
','n
',NB-K , N, K, 0,MB, A(1,I), LDA,
327 $ T(1,CTR * K+1), LDT, C(1,1), LDC,
328 $ C(I,1), LDC, WORK, INFO )
336 CALL STPMLQT('l
','n
',KK , N, K, 0, MB, A(1,II), LDA,
337 $ T(1,CTR*K+1), LDT, C(1,1), LDC,
338 $ C(II,1), LDC, WORK, INFO )
342.AND.
ELSE IF(RIGHTNOTRAN) THEN
346 KK = MOD((N-K),(NB-K))
350 CALL STPMLQT('r
','n
',M , KK, K, 0, MB, A(1, II), LDA,
351 $ T(1,CTR*K+1), LDT, C(1,1), LDC,
352 $ C(1,II), LDC, WORK, INFO )
357 DO I=II-(NB-K),NB+1,-(NB-K)
362 CALL STPMLQT('r
','n
', M, NB-K, K, 0, MB, A(1, I), LDA,
363 $ T(1,CTR*K+1), LDT, C(1,1), LDC,
364 $ C(1,I), LDC, WORK, INFO )
370 CALL SGEMLQT('r
','n
',M , NB, K, MB, A(1,1), LDA, T
371 $ ,LDT ,C(1,1), LDC, WORK, INFO )
373.AND.
ELSE IF (RIGHTTRAN) THEN
377 KK = MOD((N-K),(NB-K))
380 CALL SGEMLQT('r
','t
',M , NB, K, MB, A(1,1), LDA, T
381 $ ,LDT ,C(1,1), LDC, WORK, INFO )
383 DO I=NB+1,II-NB+K,(NB-K)
387 CALL STPMLQT('r
','t
',M , NB-K, K, 0,MB, A(1,I), LDA,
388 $ T(1, CTR*K+1), LDT, C(1,1), LDC,
389 $ C(1,I), LDC, WORK, INFO )
397 CALL STPMLQT('r
','t
',M , KK, K, 0,MB, A(1,II), LDA,
398 $ T(1,CTR*K+1),LDT, C(1,1), LDC,
399 $ C(1,II), LDC, WORK, INFO )
subroutine xerbla(srname, info)
XERBLA
subroutine sgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, work, info)
SGEMLQT
subroutine stpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, lda, b, ldb, work, info)
STPMLQT
subroutine slamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, ldc, work, lwork, info)
SLAMSWLQ