275 SUBROUTINE cspsvx( FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X,
276 $ LDX, RCOND, FERR, BERR, WORK, RWORK, INFO )
284 INTEGER INFO, LDB, LDX, N, NRHS
289 REAL BERR( * ), FERR( * ), RWORK( * )
290 COMPLEX AFP( * ), AP( * ), B( LDB, * ), WORK( * ),
298 parameter( zero = 0.0e+0 )
307 EXTERNAL lsame, clansp, slamch
321 nofact = lsame( fact,
'N' )
322 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN
324 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
327 ELSE IF( n.LT.0 )
THEN
329 ELSE IF( nrhs.LT.0 )
THEN
331 ELSE IF( ldb.LT.max( 1, n ) )
THEN
333 ELSE IF( ldx.LT.max( 1, n ) )
THEN
337 CALL xerbla(
'CSPSVX', -info )
345 CALL ccopy( n*( n+1 ) / 2, ap, 1, afp, 1 )
346 CALL csptrf( uplo, n, afp, ipiv, info )
358 anorm = clansp(
'I', uplo, n, ap, rwork )
362 CALL cspcon( uplo, n, afp, ipiv, anorm, rcond, work, info )
366 CALL clacpy(
'Full', n, nrhs, b, ldb, x, ldx )
367 CALL csptrs( uplo, n, nrhs, afp, ipiv, x, ldx, info )
372 CALL csprfs( uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr,
373 $ berr, work, rwork, info )
377 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine xerbla(srname, info)
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine cspcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
CSPCON
subroutine csprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CSPRFS
subroutine cspsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
CSPSVX computes the solution to system of linear equations A * X = B for OTHER matrices
subroutine csptrf(uplo, n, ap, ipiv, info)
CSPTRF
subroutine csptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
CSPTRS
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.