238      SUBROUTINE cdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
 
  239     +              THRESH, A, ASAV, AFAC, AINV, B,
 
  240     +              BSAV, XACT, X, ARF, ARFINV,
 
  241     +              C_WORK_CLATMS, C_WORK_CPOT02,
 
  242     +              C_WORK_CPOT03, S_WORK_CLATMS, S_WORK_CLANHE,
 
  243     +              S_WORK_CPOT01, S_WORK_CPOT02, S_WORK_CPOT03 )
 
  250      INTEGER            NN, NNS, NNT, NOUT
 
  254      INTEGER            NVAL( NN ), NSVAL( NNS ), NTVAL( NNT )
 
  265      COMPLEX            C_WORK_CLATMS( * )
 
  266      COMPLEX            C_WORK_CPOT02( * )
 
  267      COMPLEX            C_WORK_CPOT03( * )
 
  268      REAL               S_WORK_CLATMS( * )
 
  269      REAL               S_WORK_CLANHE( * )
 
  270      REAL               S_WORK_CPOT01( * )
 
  271      REAL               S_WORK_CPOT02( * )
 
  272      REAL               S_WORK_CPOT03( * )
 
  279      PARAMETER          ( ONE = 1.0e+0, zero = 0.0e+0 )
 
  281      PARAMETER          ( NTESTS = 4 )
 
  285      INTEGER            I, INFO, IUPLO, LDA, LDB, IMAT, NERRS, NFAIL,
 
  286     +                   nrhs, nrun, izero, ioff, k, nt, n, iform, iin,
 
  288      CHARACTER          DIST, CTYPE, UPLO, CFORM
 
  290      REAL               ANORM, AINVNM, CNDNUM, RCONDC
 
  293      CHARACTER          UPLOS( 2 ), FORMS( 2 )
 
  294      INTEGER            ISEED( 4 ), ISEEDY( 4 )
 
  295      REAL               RESULT( NTESTS )
 
  311      COMMON             / SRNAMC / SRNAMT
 
  314      DATA               iseedy / 1988, 1989, 1990, 1991 /
 
  315      DATA               uplos / 
'U', 
'L' /
 
  316      DATA               forms / 
'N', 
'C' /
 
  326         iseed( i ) = iseedy( i )
 
  345               IF( n.EQ.0 .AND. iit.GE.1 ) 
GO TO 120
 
  349               IF( imat.EQ.4 .AND. n.LE.1 ) 
GO TO 120
 
  350               IF( imat.EQ.5 .AND. n.LE.2 ) 
GO TO 120
 
  355                  uplo = uplos( iuplo )
 
  360                     cform = forms( iform )
 
  365                     CALL clatb4( 
'CPO', imat, n, n, ctype, kl, ku,
 
  366     +                            anorm, mode, cndnum, dist )
 
  369                     CALL clatms( n, n, dist, iseed, ctype,
 
  371     +                            mode, cndnum, anorm, kl, ku, uplo, a,
 
  372     +                            lda, c_work_clatms, info )
 
  377                        CALL alaerh( 
'CPF', 
'CLATMS', info, 0, uplo, n,
 
  378     +                               n, -1, -1, -1, iit, nfail, nerrs,
 
  386                     zerot = imat.GE.3 .AND. imat.LE.5
 
  390                        ELSE IF( iit.EQ.4 ) 
THEN 
  395                        ioff = ( izero-1 )*lda
 
  399                        IF( iuplo.EQ.1 ) 
THEN 
  400                           DO 20 i = 1, izero - 1
 
  410                           DO 40 i = 1, izero - 1
 
  425                     CALL claipd( n, a, lda+1, 0 )
 
  429                     CALL clacpy( uplo, n, n, a, lda, asav, lda )
 
  439                        anorm = clanhe( 
'1', uplo, n, a, lda,
 
  444                        CALL cpotrf( uplo, n, a, lda, info )
 
  448                        CALL cpotri( uplo, n, a, lda, info )
 
  454                           ainvnm = clanhe( 
'1', uplo, n, a, lda,
 
  456                           rcondc = ( one / anorm ) / ainvnm
 
  460                           CALL clacpy( uplo, n, n, asav, lda, a, lda )
 
  468                     CALL clarhs( 
'CPO', 
'N', uplo, 
' ', n, n, kl, ku,
 
  469     +                            nrhs, a, lda, xact, lda, b, lda,
 
  471                     CALL clacpy( 
'Full', n, nrhs, b, lda, bsav, lda )
 
  476                     CALL clacpy( uplo, n, n, a, lda, afac, lda )
 
  477                     CALL clacpy( 
'Full', n, nrhs, b, ldb, x, ldb )
 
  480                     CALL ctrttf( cform, uplo, n, afac, lda, arf, info )
 
  482                     CALL cpftrf( cform, uplo, n, arf, info )
 
  486                     IF( info.NE.izero ) 
THEN 
  492                         CALL alaerh( 
'CPF', 
'CPFSV ', info, izero,
 
  493     +                                uplo, n, n, -1, -1, nrhs, iit,
 
  494     +                                nfail, nerrs, nout )
 
  505                     CALL cpftrs( cform, uplo, n, nrhs, arf, x, ldb,
 
  509                     CALL ctfttr( cform, uplo, n, arf, afac, lda, info )
 
  514                     CALL clacpy( uplo, n, n, afac, lda, asav, lda )
 
  515                     CALL cpot01( uplo, n, a, lda, afac, lda,
 
  516     +                             s_work_cpot01, result( 1 ) )
 
  517                     CALL clacpy( uplo, n, n, asav, lda, afac, lda )
 
  521                    IF(mod(n,2).EQ.0)
THEN 
  522                       CALL clacpy( 
'A', n+1, n/2, arf, n+1, arfinv,
 
  525                       CALL clacpy( 
'A', n, (n+1)/2, arf, n, arfinv,
 
  530                     CALL cpftri( cform, uplo, n, arfinv , info )
 
  533                     CALL ctfttr( cform, uplo, n, arfinv, ainv, lda,
 
  539     +                  
CALL alaerh( 
'CPO', 
'CPFTRI', info, 0, uplo, n,
 
  540     +                               n, -1, -1, -1, imat, nfail, nerrs,
 
  543                     CALL cpot03( uplo, n, a, lda, ainv, lda,
 
  544     +                            c_work_cpot03, lda, s_work_cpot03,
 
  545     +                            rcondc, result( 2 ) )
 
  549                     CALL clacpy( 
'Full', n, nrhs, b, lda,
 
  550     +                            c_work_cpot02, lda )
 
  551                     CALL cpot02( uplo, n, nrhs, a, lda, x, lda,
 
  552     +                            c_work_cpot02, lda, s_work_cpot02,
 
  557                     CALL cget04( n, nrhs, x, lda, xact, lda, rcondc,
 
  565                        IF( result( k ).GE.thresh ) 
THEN 
  566                           IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
 
  567     +                        
CALL aladhd( nout, 
'CPF' )
 
  568                           WRITE( nout, fmt = 9999 )
'CPFSV ', uplo,
 
  569     +                            n, iit, k, result( k )
 
  582      CALL alasvm( 
'CPF', nout, nfail, nrun, nerrs )
 
  584 9999 
FORMAT( 1x, a6, 
', UPLO=''', a1, 
''', N =', i5, 
', type ', i1,
 
  585     +      
', test(', i1, 
')=', g12.5 )