153 SUBROUTINE sgemlqt( SIDE, TRANS, M, N, K, MB, V, LDV, T, LDT,
154 $ C, LDC, WORK, INFO )
162 CHARACTER SIDE, TRANS
163 INTEGER INFO, K, LDV, LDC, M, N, MB, LDT
166 REAL V( LDV, * ), C( LDC, * ), T( LDT, * ), WORK( * )
173 LOGICAL LEFT, RIGHT, TRAN, NOTRAN
174 INTEGER I, IB, LDWORK, KF
191 left = lsame( side,
'L' )
192 right = lsame( side,
'R' )
193 tran = lsame( trans,
'T' )
194 notran = lsame( trans,
'N' )
198 ELSE IF ( right )
THEN
201 IF( .NOT.left .AND. .NOT.right )
THEN
203 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN
205 ELSE IF( m.LT.0 )
THEN
207 ELSE IF( n.LT.0 )
THEN
209 ELSE IF( k.LT.0)
THEN
211 ELSE IF( mb.LT.1 .OR. (mb.GT.k .AND. k.GT.0))
THEN
213 ELSE IF( ldv.LT.max( 1, k ) )
THEN
215 ELSE IF( ldt.LT.mb )
THEN
217 ELSE IF( ldc.LT.max( 1, m ) )
THEN
222 CALL xerbla(
'SGEMLQT', -info )
228 IF( m.EQ.0 .OR. n.EQ.0 .OR. k.EQ.0 )
RETURN
230 IF( left .AND. notran )
THEN
233 ib = min( mb, k-i+1 )
234 CALL slarfb(
'L',
'T',
'F',
'R', m-i+1, n, ib,
235 $ v( i, i ), ldv, t( 1, i ), ldt,
236 $ c( i, 1 ), ldc, work, ldwork )
239 ELSE IF( right .AND. tran )
THEN
242 ib = min( mb, k-i+1 )
243 CALL slarfb(
'R',
'N',
'F',
'R', m, n-i+1, ib,
244 $ v( i, i ), ldv, t( 1, i ), ldt,
245 $ c( 1, i ), ldc, work, ldwork )
248 ELSE IF( left .AND. tran )
THEN
252 ib = min( mb, k-i+1 )
253 CALL slarfb(
'L',
'N',
'F',
'R', m-i+1, n, ib,
254 $ v( i, i ), ldv, t( 1, i ), ldt,
255 $ c( i, 1 ), ldc, work, ldwork )
258 ELSE IF( right .AND. notran )
THEN
262 ib = min( mb, k-i+1 )
263 CALL slarfb(
'R',
'T',
'F',
'R', m, n-i+1, ib,
264 $ v( i, i ), ldv, t( 1, i ), ldt,
265 $ c( 1, i ), ldc, work, ldwork )