1 SUBROUTINE slarhs( 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 REAL a( lda, * ), b( ldb, * ), x( ldx, * )
134 parameter( one = 1.0e+0, zero = 0.0e+0 )
137 LOGICAL band, gen, notran, qrs, sym, tran, tri
147 EXTERNAL sgbmv, sgemm, slacpy, slarnv, ssbmv, sspmv,
148 $ ssymm, stbmv, stpmv, strmm,
xerbla
160 tran = lsame(
trans,
'T' ) .OR. lsame(
trans,
'C' )
162 gen = lsame( path( 2: 2 ),
'G' )
163 qrs = lsame( path( 2: 2 ),
'Q' ) .OR. lsame( path( 3: 3 ),
'Q' )
164 sym = lsame( path( 2: 2 ),
'P' ) .OR. lsame( path( 2: 2 ),
'S' )
165 tri = lsame( path( 2: 2 ),
'T' )
166 band = lsame( path( 3: 3 ),
'B' )
167 IF( .NOT.lsame( c1,
'Single precision' ) )
THEN
169 ELSE IF( .NOT.( lsame( xtype,
'N' ) .OR. lsame( xtype,
'C' ) ) )
172 ELSE IF( ( sym .OR. tri ) .AND. .NOT.
173 $ ( lsame(
uplo,
'U' ) .OR. lsame(
uplo,
'L' ) ) )
THEN
175 ELSE IF( ( gen .OR. qrs ) .AND. .NOT.
176 $ ( tran .OR. lsame(
trans,
'N' ) ) )
THEN
178 ELSE IF( m.LT.0 )
THEN
180 ELSE IF( n.LT.0 )
THEN
182 ELSE IF( band .AND. kl.LT.0 )
THEN
184 ELSE IF( band .AND. ku.LT.0 )
THEN
186 ELSE IF( nrhs.LT.0 )
THEN
188 ELSE IF( ( .NOT.band .AND. lda.LT.
max( 1, m ) ) .OR.
189 $ ( band .AND. ( sym .OR. tri ) .AND. lda.LT.kl+1 ) .OR.
190 $ ( band .AND. gen .AND. lda.LT.kl+ku+1 ) )
THEN
192 ELSE IF( ( notran .AND. ldx.LT.
max( 1, n ) ) .OR.
193 $ ( tran .AND. ldx.LT.
max( 1, m ) ) )
THEN
195 ELSE IF( ( notran .AND. ldb.LT.
max( 1, m ) ) .OR.
196 $ ( tran .AND. ldb.LT.
max( 1, n ) ) )
THEN
200 CALL
xerbla(
'SLARHS', -info )
213 IF( .NOT.lsame( xtype,
'C' ) )
THEN
215 CALL slarnv( 2, iseed, n, x( 1, j ) )
222 IF(
lsamen( 2, c2,
'GE' ) .OR.
lsamen( 2, c2,
'QR' ) .OR.
224 $
lsamen( 2, c2,
'RQ' ) )
THEN
228 CALL sgemm(
trans,
'N', mb, nrhs, nx, one, a, lda, x, ldx,
231 ELSE IF(
lsamen( 2, c2,
'PO' ) .OR.
lsamen( 2, c2,
'SY' ) )
THEN
235 CALL ssymm(
'Left',
uplo, n, nrhs, one, a, lda, x, ldx, zero,
238 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
243 CALL sgbmv(
trans, mb, nx, kl, ku, one, a, lda, x( 1, j ),
244 $ 1, zero, b( 1, j ), 1 )
247 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
252 CALL ssbmv(
uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
256 ELSE IF(
lsamen( 2, c2,
'PP' ) .OR.
lsamen( 2, c2,
'SP' ) )
THEN
261 CALL sspmv(
uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
265 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
271 CALL slacpy(
'Full', n, nrhs, x, ldx, b, ldb )
277 CALL strmm(
'Left',
uplo,
trans,
diag, n, nrhs, one, a, lda, b,
280 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
284 CALL slacpy(
'Full', n, nrhs, x, ldx, b, ldb )
294 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
298 CALL slacpy(
'Full', n, nrhs, x, ldx, b, ldb )
313 CALL
xerbla(
'SLARHS', -info )