169 SUBROUTINE sgemqr( SIDE, TRANS, M, N, K, A, LDA, T, TSIZE,
170 $ C, LDC, WORK, LWORK, INFO )
178 CHARACTER SIDE, TRANS
179 INTEGER INFO, LDA, M, N, K, TSIZE, LWORK, LDC
182 REAL A( lda, * ), T( * ), C( ldc, * ), WORK( * )
189 LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY
190 INTEGER MB, NB, LW, NBLCKS, MN
200 INTRINSIC int, max, min, mod
207 notran = lsame( trans,
'N' )
208 tran = lsame( trans,
'T' )
209 left = lsame( side,
'L' )
210 right = lsame( side,
'R' )
222 IF( ( mb.GT.k ) .AND. ( mn.GT.k ) )
THEN 223 IF( mod( mn - k, mb - k ).EQ.0 )
THEN 224 nblcks = ( mn - k ) / ( mb - k )
226 nblcks = ( mn - k ) / ( mb - k ) + 1
233 IF( .NOT.left .AND. .NOT.right )
THEN 235 ELSE IF( .NOT.tran .AND. .NOT.notran )
THEN 237 ELSE IF( m.LT.0 )
THEN 239 ELSE IF( n.LT.0 )
THEN 241 ELSE IF( k.LT.0 .OR. k.GT.mn )
THEN 243 ELSE IF( lda.LT.max( 1, mn ) )
THEN 245 ELSE IF( tsize.LT.5 )
THEN 247 ELSE IF( ldc.LT.max( 1, m ) )
THEN 249 ELSE IF( ( lwork.LT.max( 1, lw ) ) .AND. ( .NOT.lquery ) )
THEN 258 CALL xerbla(
'SGEMQR', -info )
260 ELSE IF( lquery )
THEN 266 IF( min( m, n, k ).EQ.0 )
THEN 270 IF( ( left .AND. m.LE.k ) .OR. ( right .AND. n.LE.k )
271 $ .OR. ( mb.LE.k ) .OR. ( mb.GE.max( m, n, k ) ) )
THEN 272 CALL sgemqrt( side, trans, m, n, k, nb, a, lda, t( 6 ),
273 $ nb, c, ldc, work, info )
275 CALL slamtsqr( side, trans, m, n, k, mb, nb, a, lda, t( 6 ),
276 $ nb, c, ldc, work, lwork, info )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slamtsqr(SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, LDT, C, LDC, WORK, LWORK, INFO)
subroutine sgemqr(SIDE, TRANS, M, N, K, A, LDA, T, TSIZE, C, LDC, WORK, LWORK, INFO)
subroutine sgemqrt(SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, C, LDC, WORK, INFO)
SGEMQRT