206      SUBROUTINE clarhs( PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS,
 
  207     $                   A, LDA, X, LDX, B, LDB, ISEED, INFO )
 
  214      CHARACTER          TRANS, UPLO, XTYPE
 
  216      INTEGER            INFO, KL, KU, LDA, LDB, LDX, M, N, NRHS
 
  220      COMPLEX            A( LDA, * ), B( LDB, * ), X( LDX, * )
 
  227      parameter( one = ( 1.0e+0, 0.0e+0 ),
 
  228     $                   zero = ( 0.0e+0, 0.0e+0 ) )
 
  231      LOGICAL            BAND, GEN, NOTRAN, QRS, SYM, TRAN, TRI
 
  237      LOGICAL            LSAME, LSAMEN
 
  238      EXTERNAL           lsame, lsamen
 
  255      tran = lsame( trans, 
'T' ) .OR. lsame( trans, 
'C' )
 
  257      gen = lsame( path( 2: 2 ), 
'G' )
 
  258      qrs = lsame( path( 2: 2 ), 
'Q' ) .OR. lsame( path( 3: 3 ), 
'Q' )
 
  259      sym = lsame( path( 2: 2 ), 
'P' ) .OR.
 
  260     $      lsame( path( 2: 2 ), 
'S' ) .OR. lsame( path( 2: 2 ), 
'H' )
 
  261      tri = lsame( path( 2: 2 ), 
'T' )
 
  262      band = lsame( path( 3: 3 ), 
'B' )
 
  263      IF( .NOT.lsame( c1, 
'Complex precision' ) ) 
THEN 
  265      ELSE IF( .NOT.( lsame( xtype, 
'N' ) .OR. lsame( xtype, 
'C' ) ) )
 
  268      ELSE IF( ( sym .OR. tri ) .AND. .NOT.
 
  269     $         ( lsame( uplo, 
'U' ) .OR. lsame( uplo, 
'L' ) ) ) 
THEN 
  271      ELSE IF( ( gen.OR.qrs ) .AND.
 
  272     $   .NOT.( tran .OR. lsame( trans, 
'N' ) ) ) 
THEN 
  274      ELSE IF( m.LT.0 ) 
THEN 
  276      ELSE IF( n.LT.0 ) 
THEN 
  278      ELSE IF( band .AND. kl.LT.0 ) 
THEN 
  280      ELSE IF( band .AND. ku.LT.0 ) 
THEN 
  282      ELSE IF( nrhs.LT.0 ) 
THEN 
  284      ELSE IF( ( .NOT.band .AND. lda.LT.max( 1, m ) ) .OR.
 
  285     $         ( band .AND. ( sym .OR. tri ) .AND. lda.LT.kl+1 ) .OR.
 
  286     $         ( band .AND. gen .AND. lda.LT.kl+ku+1 ) ) 
THEN 
  288      ELSE IF( ( notran .AND. ldx.LT.max( 1, n ) ) .OR.
 
  289     $         ( tran .AND. ldx.LT.max( 1, m ) ) ) 
THEN 
  291      ELSE IF( ( notran .AND. ldb.LT.max( 1, m ) ) .OR.
 
  292     $         ( tran .AND. ldb.LT.max( 1, n ) ) ) 
THEN 
  296         CALL xerbla( 
'CLARHS', -info )
 
  309      IF( .NOT.lsame( xtype, 
'C' ) ) 
THEN 
  311            CALL clarnv( 2, iseed, n, x( 1, j ) )
 
  318      IF( lsamen( 2, c2, 
'GE' ) .OR. lsamen( 2, c2, 
'QR' ) .OR.
 
  319     $    lsamen( 2, c2, 
'LQ' ) .OR. lsamen( 2, c2, 
'QL' ) .OR.
 
  320     $    lsamen( 2, c2, 
'RQ' ) ) 
THEN 
  324         CALL cgemm( trans, 
'N', mb, nrhs, nx, one, a, lda, x, ldx,
 
  327      ELSE IF( lsamen( 2, c2, 
'PO' ) .OR. lsamen( 2, c2, 
'HE' ) ) 
THEN 
  331         CALL chemm( 
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
 
  334      ELSE IF( lsamen( 2, c2, 
'SY' ) ) 
THEN 
  338         CALL csymm( 
'Left', uplo, n, nrhs, one, a, lda, x, ldx, zero,
 
  341      ELSE IF( lsamen( 2, c2, 
'GB' ) ) 
THEN 
  346            CALL cgbmv( trans, m, n, kl, ku, one, a, lda, x( 1, j ), 1,
 
  347     $                  zero, b( 1, j ), 1 )
 
  350      ELSE IF( lsamen( 2, c2, 
'PB' ) .OR. lsamen( 2, c2, 
'HB' ) ) 
THEN 
  355            CALL chbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
 
  359      ELSE IF( lsamen( 2, c2, 
'SB' ) ) 
THEN 
  364            CALL csbmv( uplo, n, kl, one, a, lda, x( 1, j ), 1, zero,
 
  368      ELSE IF( lsamen( 2, c2, 
'PP' ) .OR. lsamen( 2, c2, 
'HP' ) ) 
THEN 
  373            CALL chpmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
 
  377      ELSE IF( lsamen( 2, c2, 
'SP' ) ) 
THEN 
  382            CALL cspmv( uplo, n, one, a, x( 1, j ), 1, zero, b( 1, j ),
 
  386      ELSE IF( lsamen( 2, c2, 
'TR' ) ) 
THEN 
  392         CALL clacpy( 
'Full', n, nrhs, x, ldx, b, ldb )
 
  398         CALL ctrmm( 
'Left', uplo, trans, diag, n, nrhs, one, a, lda, b,
 
  401      ELSE IF( lsamen( 2, c2, 
'TP' ) ) 
THEN 
  405         CALL clacpy( 
'Full', n, nrhs, x, ldx, b, ldb )
 
  412            CALL ctpmv( uplo, trans, diag, n, a, b( 1, j ), 1 )
 
  415      ELSE IF( lsamen( 2, c2, 
'TB' ) ) 
THEN 
  419         CALL clacpy( 
'Full', n, nrhs, x, ldx, b, ldb )
 
  426            CALL ctbmv( uplo, trans, diag, n, kl, a, lda, b( 1, j ), 1 )
 
  434         CALL xerbla( 
'CLARHS', -info )