203 SUBROUTINE dlarhs( PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS,
204 $ A, LDA, X, LDX, B, LDB, ISEED, INFO )
211 CHARACTER TRANS, UPLO, XTYPE
213 INTEGER INFO, KL, KU, LDA, LDB, LDX, M, N, NRHS
217 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), X( LDX, * )
223 DOUBLE PRECISION ONE, ZERO
224 parameter( one = 1.0d+0, zero = 0.0d+0 )
227 LOGICAL BAND, GEN, NOTRAN, QRS, SYM, TRAN, TRI
233 LOGICAL LSAME, LSAMEN
250 tran = lsame( trans,
'T' ) .OR. lsame( trans,
'C' )
252 gen = lsame( path( 2: 2 ),
'G' )
253 qrs = lsame( path( 2: 2 ),
'Q' ) .OR. lsame( path( 3: 3 ),
'Q' )
254 sym = lsame( path( 2: 2 ),
'P' ) .OR. lsame( path( 2: 2 ),
'S' )
255 tri = lsame( path( 2: 2 ),
'T' )
256 band = lsame( path( 3: 3 ),
'B' )
257 IF( .NOT.lsame( c1,
'Double precision' ) )
THEN
259 ELSE IF( .NOT.( lsame( xtype,
'N' ) .OR. lsame( xtype,
'C' ) ) )
262 ELSE IF( ( sym .OR. tri ) .AND. .NOT.
263 $ ( lsame( uplo,
'U' ) .OR. lsame( uplo,
'L' ) ) )
THEN
265 ELSE IF( ( gen .OR. qrs ) .AND. .NOT.
266 $ ( tran .OR. lsame( trans, 'n
' ) ) ) THEN
268.LT.
ELSE IF( M0 ) THEN
270.LT.
ELSE IF( N0 ) THEN
272.AND..LT.
ELSE IF( BAND KL0 ) THEN
274.AND..LT.
ELSE IF( BAND KU0 ) THEN
276.LT.
ELSE IF( NRHS0 ) THEN
278.NOT..AND..LT..OR.
ELSE IF( ( BAND LDAMAX( 1, M ) )
279.AND..OR..AND..LT..OR.
$ ( BAND ( SYM TRI ) LDAKL+1 )
280.AND..AND..LT.
$ ( BAND GEN LDAKL+KU+1 ) ) THEN
282.AND..LT..OR.
ELSE IF( ( NOTRAN LDXMAX( 1, N ) )
283.AND..LT.
$ ( TRAN LDXMAX( 1, M ) ) ) THEN
285.AND..LT..OR.
ELSE IF( ( NOTRAN LDBMAX( 1, M ) )
286.AND..LT.
$ ( TRAN LDBMAX( 1, N ) ) ) THEN
290 CALL XERBLA( 'dlarhs', -INFO )
303.NOT.
IF( LSAME( XTYPE, 'c
' ) ) THEN
305 CALL DLARNV( 2, ISEED, N, X( 1, J ) )
312 IF( LSAMEN( 2, C2, 'ge.OR.
' ) LSAMEN( 2, C2, 'qr.OR.
' )
313 $ LSAMEN( 2, C2, 'lq.OR.
' ) LSAMEN( 2, C2, 'ql.OR.
' )
314 $ LSAMEN( 2, C2, 'rq
' ) ) THEN
318 CALL DGEMM( TRANS, 'n
', MB, NRHS, NX, ONE, A, LDA, X, LDX,
321 ELSE IF( LSAMEN( 2, C2, 'po.OR.
' ) LSAMEN( 2, C2, 'sy
' ) ) THEN
325 CALL DSYMM( 'left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
328 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
333 CALL dgbmv( trans, mb, nx, kl, ku, one, a, lda, x( 1, j ),
334 $ 1, zero, b( 1, j ), 1 )
337 ELSE IF( lsamen( 2, c2,
'PB' ) )
THEN
342 CALL dsbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
346 ELSE IF( lsamen( 2, c2,
'PP' ) .OR. lsamen( 2, c2,
'SP' ) )
THEN
351 CALL dspmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
355 ELSE IF( lsamen( 2, c2,
'TR' ) )
THEN
361 CALL dlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
367 CALL dtrmm(
'Left', uplo, trans, diag, n, nrhs, one, a, lda, b,
370 ELSE IF( lsamen( 2, c2,
'TP' ) )
THEN
374 CALL dlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
381 CALL dtpmv( uplo, trans, diag, n, a, b( 1, j ), 1 )
384 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
388 CALL dlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
395 CALL dtbmv( uplo, trans, diag, n, kl, a, lda, b( 1, j ), 1 )
403 CALL xerbla(
'DLARHS', -info )
subroutine dlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
DLARHS