1 SUBROUTINE zlarhs( PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS,
2 $ a, lda, x, ldx, b, ldb, iseed, info )
11 INTEGER info, kl, ku, lda, ldb, ldx, m, n, nrhs
15 COMPLEX*16 a( lda, * ), b( ldb, * ), x( ldx, * )
139 parameter( one = ( 1.0d+0, 0.0d+0 ),
140 $ zero = ( 0.0d+0, 0.0d+0 ) )
143 LOGICAL band, gen, notran, qrs, sym, tran, tri
153 EXTERNAL xerbla, zgbmv, zgemm, zhbmv, zhemm, zhpmv,
167 tran = lsame(
trans,
'T' ) .OR. lsame(
trans,
'C' )
169 gen = lsame( path( 2: 2 ),
'G' )
170 qrs = lsame( path( 2: 2 ),
'Q' ) .OR. lsame( path( 3: 3 ),
'Q' )
171 sym = lsame( path( 2: 2 ),
'P' ) .OR.
172 $ lsame( path( 2: 2 ),
'S' ) .OR. lsame( path( 2: 2 ),
'H' )
173 tri = lsame( path( 2: 2 ),
'T' )
174 band = lsame( path( 3: 3 ),
'B' )
175 IF( .NOT.lsame( c1,
'Zomplex precision' ) )
THEN
177 ELSE IF( .NOT.( lsame( xtype,
'N' ) .OR. lsame( xtype,
'C' ) ) )
180 ELSE IF( ( sym .OR. tri ) .AND. .NOT.
181 $ ( lsame(
uplo,
'U' ) .OR. lsame(
uplo,
'L' ) ) )
THEN
183 ELSE IF( ( gen .OR. qrs ) .AND. .NOT.
184 $ ( tran .OR. lsame(
trans,
'N' ) ) )
THEN
186 ELSE IF( m.LT.0 )
THEN
188 ELSE IF( n.LT.0 )
THEN
190 ELSE IF( band .AND. kl.LT.0 )
THEN
192 ELSE IF( band .AND. ku.LT.0 )
THEN
194 ELSE IF( nrhs.LT.0 )
THEN
196 ELSE IF( ( .NOT.band .AND. lda.LT.
max( 1, m ) ) .OR.
197 $ ( band .AND. ( sym .OR. tri ) .AND. lda.LT.kl+1 ) .OR.
198 $ ( band .AND. gen .AND. lda.LT.kl+ku+1 ) )
THEN
200 ELSE IF( ( notran .AND. ldx.LT.
max( 1, n ) ) .OR.
201 $ ( tran .AND. ldx.LT.
max( 1, m ) ) )
THEN
203 ELSE IF( ( notran .AND. ldb.LT.
max( 1, m ) ) .OR.
204 $ ( tran .AND. ldb.LT.
max( 1, n ) ) )
THEN
208 CALL
xerbla(
'ZLARHS', -info )
221 IF( .NOT.lsame( xtype,
'C' ) )
THEN
223 CALL zlarnv( 2, iseed, n, x( 1, j ) )
230 IF(
lsamen( 2, c2,
'GE' ) .OR.
lsamen( 2, c2,
'QR' ) .OR.
232 $
lsamen( 2, c2,
'RQ' ) )
THEN
236 CALL zgemm(
trans,
'N', mb, nrhs, nx, one, a, lda, x, ldx,
239 ELSE IF(
lsamen( 2, c2,
'PO' ) .OR.
lsamen( 2, c2,
'HE' ) )
THEN
243 CALL zhemm(
'Left',
uplo, n, nrhs, one, a, lda, x, ldx, zero,
246 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
250 CALL zsymm(
'Left',
uplo, n, nrhs, one, a, lda, x, ldx, zero,
253 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
258 CALL zgbmv(
trans, m, n, kl, ku, one, a, lda, x( 1, j ), 1,
259 $ zero, b( 1, j ), 1 )
262 ELSE IF(
lsamen( 2, c2,
'PB' ) .OR.
lsamen( 2, c2,
'HB' ) )
THEN
267 CALL zhbmv(
uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
271 ELSE IF(
lsamen( 2, c2,
'SB' ) )
THEN
276 CALL
zsbmv(
uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
280 ELSE IF(
lsamen( 2, c2,
'PP' ) .OR.
lsamen( 2, c2,
'HP' ) )
THEN
285 CALL zhpmv(
uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
289 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
294 CALL
zspmv(
uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
298 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
304 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
310 CALL ztrmm(
'Left',
uplo,
trans,
diag, n, nrhs, one, a, lda, b,
313 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
317 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
327 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
331 CALL zlacpy(
'Full', n, nrhs, x, ldx, b, ldb )
346 CALL
xerbla(
'ZLARHS', -info )