207 SUBROUTINE clarhs( PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS,
208 $ A, LDA, X, LDX, B, LDB, ISEED, INFO )
215 CHARACTER TRANS, UPLO, XTYPE
217 INTEGER INFO, KL, KU, LDA, LDB, LDX, M, N, NRHS
221 COMPLEX A( LDA, * ), B( LDB, * ), X( LDX, * )
228 parameter( one = ( 1.0e+0, 0.0e+0 ),
229 $ zero = ( 0.0e+0, 0.0e+0 ) )
232 LOGICAL BAND, GEN, NOTRAN, QRS, SYM, TRAN, TRI
238 LOGICAL LSAME, LSAMEN
239 EXTERNAL lsame, lsamen
256 tran = lsame( trans,
'T' ) .OR. lsame( trans,
'C' )
258 gen = lsame( path( 2: 2 ),
'G' )
259 qrs = lsame( path( 2: 2 ),
'Q' ) .OR. lsame( path( 3: 3 ),
'Q' )
260 sym = lsame( path( 2: 2 ),
'P' ) .OR.
261 $ lsame( path( 2: 2 ),
'S' ) .OR. lsame( path( 2: 2 ),
'H' )
262 tri = lsame( path( 2: 2 ),
'T' )
263 band = lsame( path( 3: 3 ),
'B' )
264 IF( .NOT.lsame( c1,
'Complex precision' ) )
THEN
266 ELSE IF( .NOT.( lsame( xtype,
'N' ) .OR. lsame( xtype,
'C' ) ) )
269 ELSE IF( ( sym .OR. tri ) .AND. .NOT.
270 $ ( lsame( uplo,
'U' ) .OR. lsame( uplo,
'L' ) ) )
THEN
272 ELSE IF( ( gen.OR.qrs ) .AND.
273 $ .NOT.( tran .OR. lsame( trans,
'N' ) ) )
THEN
275 ELSE IF( m.LT.0 )
THEN
277 ELSE IF( n.LT.0 )
THEN
279 ELSE IF( band .AND. kl.LT.0 )
THEN
281 ELSE IF( band .AND. ku.LT.0 )
THEN
283 ELSE IF( nrhs.LT.0 )
THEN
285 ELSE IF( ( .NOT.band .AND. lda.LT.max( 1, m ) ) .OR.
286 $ ( band .AND. ( sym .OR. tri ) .AND. lda.LT.kl+1 ) .OR.
287 $ ( band .AND. gen .AND. lda.LT.kl+ku+1 ) )
THEN
289 ELSE IF( ( notran .AND. ldx.LT.max( 1, n ) ) .OR.
290 $ ( tran .AND. ldx.LT.max( 1, m ) ) )
THEN
292 ELSE IF( ( notran .AND. ldb.LT.max( 1, m ) ) .OR.
293 $ ( tran .AND. ldb.LT.max( 1, n ) ) )
THEN
297 CALL xerbla(
'CLARHS', -info )
310 IF( .NOT.lsame( xtype,
'C' ) )
THEN
312 CALL clarnv( 2, iseed, n, x( 1, j ) )
319 IF( lsamen( 2, c2,
'GE' ) .OR. lsamen( 2, c2,
'QR' ) .OR.
320 $ lsamen( 2, c2,
'LQ' ) .OR. lsamen( 2, c2,
'QL' ) .OR.
321 $ lsamen( 2, c2,
'RQ' ) )
THEN
325 CALL cgemm( trans,
'N', mb, nrhs, nx, one, a, lda, x, ldx,
328 ELSE IF( lsamen( 2, c2,
'PO' ) .OR. lsamen( 2, c2,
'HE' ) )
THEN
332 CALL chemm(
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
335 ELSE IF( lsamen( 2, c2,
'SY' ) )
THEN
339 CALL csymm(
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
342 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
347 CALL cgbmv( trans, m, n, kl, ku, one, a, lda, x( 1, j ), 1,
348 $ zero, b( 1, j ), 1 )
351 ELSE IF( lsamen( 2, c2,
'PB' ) .OR. lsamen( 2, c2,
'HB' ) )
THEN
356 CALL chbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
360 ELSE IF( lsamen( 2, c2,
'SB' ) )
THEN
365 CALL csbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
369 ELSE IF( lsamen( 2, c2,
'PP' ) .OR. lsamen( 2, c2,
'HP' ) )
THEN
374 CALL chpmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
378 ELSE IF( lsamen( 2, c2,
'SP' ) )
THEN
383 CALL cspmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
387 ELSE IF( lsamen( 2, c2,
'TR' ) )
THEN
393 CALL clacpy(
'Full', n, nrhs, x, ldx, b, ldb )
399 CALL ctrmm(
'Left', uplo, trans, diag, n, nrhs, one, a, lda, b,
402 ELSE IF( lsamen( 2, c2,
'TP' ) )
THEN
406 CALL clacpy(
'Full', n, nrhs, x, ldx, b, ldb )
413 CALL ctpmv( uplo, trans, diag, n, a, b( 1, j ), 1 )
416 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
420 CALL clacpy(
'Full', n, nrhs, x, ldx, b, ldb )
427 CALL ctbmv( uplo, trans, diag, n, kl, a, lda, b( 1, j ), 1 )
435 CALL xerbla(
'CLARHS', -info )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBMV
subroutine chbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CHBMV
subroutine cgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGBMV
subroutine chpmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
CHPMV
subroutine ctpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPMV
subroutine csymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CSYMM
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM
subroutine chemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHEMM
subroutine ctrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRMM
subroutine clarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
CLARHS
subroutine csbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CSBMV
subroutine clarnv(IDIST, ISEED, N, X)
CLARNV returns a vector of random numbers from a uniform or normal distribution.
subroutine cspmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
CSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.