207 SUBROUTINE zlarhs( 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*16 A( LDA, * ), B( LDB, * ), X( LDX, * )
228 parameter( one = ( 1.0d+0, 0.0d+0 ),
229 $ zero = ( 0.0d+0, 0.0d+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,
'Zomplex 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. .NOT.
273 $ ( 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(
'ZLARHS', -info )
310 IF( .NOT.lsame( xtype,
'C' ) )
THEN
312 CALL zlarnv( 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 zgemm( 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 zhemm(
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
335 ELSE IF( lsamen( 2, c2,
'SY' ) )
THEN
339 CALL zsymm(
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
342 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
347 CALL zgbmv( 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 zhbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
360 ELSE IF( lsamen( 2, c2,
'SB' ) )
THEN
365 CALL zsbmv( 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 zhpmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
378 ELSE IF( lsamen( 2, c2,
'SP' ) )
THEN
383 CALL zspmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
387 ELSE IF( lsamen( 2, c2,
'TR' ) )
THEN
393 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
399 CALL ztrmm(
'Left', uplo, trans, diag, n, nrhs, one, a, lda, b,
402 ELSE IF( lsamen( 2, c2,
'TP' ) )
THEN
406 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
413 CALL ztpmv( uplo, trans, diag, n, a, b( 1, j ), 1 )
416 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
420 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
427 CALL ztbmv( uplo, trans, diag, n, kl, a, lda, b( 1, j ), 1 )
435 CALL xerbla(
'ZLARHS', -info )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
subroutine zhbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHBMV
subroutine zgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGBMV
subroutine zhpmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
ZHPMV
subroutine ztpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPMV
subroutine zsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZSYMM
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine zhemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZHEMM
subroutine ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM
subroutine zsbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZSBMV
subroutine zlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
ZLARHS
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlarnv(IDIST, ISEED, N, X)
ZLARNV returns a vector of random numbers from a uniform or normal distribution.
subroutine zspmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
ZSPMV computes a matrix-vector product for complex vectors using a complex symmetric packed matrix