Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

dptsvx (3p)

Name

dptsvx - use the factorization A = L*D*L**T to compute the solution to a real system of linear equations A*X = B, where A is an N-by-N symmet- ric positive definite tridiagonal matrix and X and B are N-by-NRHS matrices

Synopsis

SUBROUTINE DPTSVX(FACT, N, NRHS, D, E, DF, EF, B, LDB, X,
LDX, RCOND, FERR, BERR, WORK, INFO)

CHARACTER*1 FACT
INTEGER N, NRHS, LDB, LDX, INFO
DOUBLE PRECISION RCOND
DOUBLE PRECISION D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*), FERR(*),
BERR(*), WORK(*)

SUBROUTINE DPTSVX_64(FACT, N, NRHS, D, E, DF, EF, B, LDB,
X, LDX, RCOND, FERR, BERR, WORK, INFO)

CHARACTER*1 FACT
INTEGER*8 N, NRHS, LDB, LDX, INFO
DOUBLE PRECISION RCOND
DOUBLE PRECISION D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*), FERR(*),
BERR(*), WORK(*)




F95 INTERFACE
SUBROUTINE PTSVX(FACT, N, NRHS, D, E, DF, EF, B, LDB,
X, LDX, RCOND, FERR, BERR, WORK, INFO)

CHARACTER(LEN=1) :: FACT
INTEGER :: N, NRHS, LDB, LDX, INFO
REAL(8) :: RCOND
REAL(8), DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
REAL(8), DIMENSION(:,:) :: B, X

SUBROUTINE PTSVX_64(FACT, N, NRHS, D, E, DF, EF, B,
LDB, X, LDX, RCOND, FERR, BERR, WORK, INFO)

CHARACTER(LEN=1) :: FACT
INTEGER(8) :: N, NRHS, LDB, LDX, INFO
REAL(8) :: RCOND
REAL(8), DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
REAL(8), DIMENSION(:,:) :: B, X




C INTERFACE
#include <sunperf.h>

void dptsvx(char fact, int n, int nrhs, double *d,  double  *e,  double
*df, double *ef, double *b, int ldb, double *x, int ldx, dou-
ble *rcond, double *ferr, double *berr, int *info);

void dptsvx_64(char fact, long n, long nrhs, double *d, double *e, dou-
ble  *df,  double  *ef,  double *b, long ldb, double *x, long
ldx, double *rcond, double *ferr, double *berr, long *info);

Description

Oracle Solaris Studio Performance Library                           dptsvx(3P)



NAME
       dptsvx  - use the factorization A = L*D*L**T to compute the solution to
       a real system of linear equations A*X = B, where A is an N-by-N symmet-
       ric  positive  definite  tridiagonal  matrix  and X and B are N-by-NRHS
       matrices


SYNOPSIS
       SUBROUTINE DPTSVX(FACT, N, NRHS, D, E, DF, EF, B, LDB, X,
             LDX, RCOND, FERR, BERR, WORK, INFO)

       CHARACTER*1 FACT
       INTEGER N, NRHS, LDB, LDX, INFO
       DOUBLE PRECISION RCOND
       DOUBLE PRECISION D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*), FERR(*),
       BERR(*), WORK(*)

       SUBROUTINE DPTSVX_64(FACT, N, NRHS, D, E, DF, EF, B, LDB,
             X, LDX, RCOND, FERR, BERR, WORK, INFO)

       CHARACTER*1 FACT
       INTEGER*8 N, NRHS, LDB, LDX, INFO
       DOUBLE PRECISION RCOND
       DOUBLE PRECISION D(*), E(*), DF(*), EF(*), B(LDB,*), X(LDX,*), FERR(*),
       BERR(*), WORK(*)




   F95 INTERFACE
       SUBROUTINE PTSVX(FACT, N, NRHS, D, E, DF, EF, B, LDB,
              X, LDX, RCOND, FERR, BERR, WORK, INFO)

       CHARACTER(LEN=1) :: FACT
       INTEGER :: N, NRHS, LDB, LDX, INFO
       REAL(8) :: RCOND
       REAL(8), DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
       REAL(8), DIMENSION(:,:) :: B, X

       SUBROUTINE PTSVX_64(FACT, N, NRHS, D, E, DF, EF, B,
              LDB, X, LDX, RCOND, FERR, BERR, WORK, INFO)

       CHARACTER(LEN=1) :: FACT
       INTEGER(8) :: N, NRHS, LDB, LDX, INFO
       REAL(8) :: RCOND
       REAL(8), DIMENSION(:) :: D, E, DF, EF, FERR, BERR, WORK
       REAL(8), DIMENSION(:,:) :: B, X




   C INTERFACE
       #include <sunperf.h>

       void dptsvx(char fact, int n, int nrhs, double *d,  double  *e,  double
                 *df, double *ef, double *b, int ldb, double *x, int ldx, dou-
                 ble *rcond, double *ferr, double *berr, int *info);

       void dptsvx_64(char fact, long n, long nrhs, double *d, double *e, dou-
                 ble  *df,  double  *ef,  double *b, long ldb, double *x, long
                 ldx, double *rcond, double *ferr, double *berr, long *info);



PURPOSE
       dptsvx uses the factorization A = L*D*L**T to compute the solution to a
       real system of linear equations A*X = B, where A is an N-by-N symmetric
       positive definite tridiagonal matrix and X and B are  N-by-NRHS  matri-
       ces.

       Error  bounds  on  the  solution and a condition estimate are also pro-
       vided.

       The following steps are performed:

       1. If FACT = 'N', the matrix A is factored as A = L*D*L**T, where L
          is a unit lower bidiagonal matrix and D is diagonal.  The
          factorization can also be regarded as having the form
          A = U**T*D*U.

       2. If the leading i-by-i principal minor is not positive definite,
          then the routine returns with INFO = i. Otherwise, the factored
          form of A is used to estimate the condition number of the matrix
          A.  If the reciprocal of the condition number is less than machine
          precision, INFO = N+1 is returned as a warning, but the routine
          still goes on to solve for X and compute error bounds as
          described below.

       3. The system of equations is solved for X using the factored form
          of A.

       4. Iterative refinement is applied to improve the computed solution
          matrix and calculate error bounds and backward error estimates
          for it.


ARGUMENTS
       FACT (input)
                 Specifies whether or not the factored form of A has been sup-
                 plied on entry.  = 'F':  On entry, DF and EF contain the fac-
                 tored form of A.  D, E, DF, and EF will not be  modified.   =
                 'N':   The matrix A will be copied to DF and EF and factored.


       N (input) The order of the matrix A.  N >= 0.


       NRHS (input)
                 The number of right hand sides, i.e., the number  of  columns
                 of the matrices B and X.  NRHS >= 0.


       D (input) The n diagonal elements of the tridiagonal matrix A.


       E (input) The (n-1) subdiagonal elements of the tridiagonal matrix A.


       DF (input or output)
                 If FACT = 'F', then DF is an input argument and on entry con-
                 tains the n diagonal elements of the diagonal matrix  D  from
                 the  L*D*L**T  factorization of A.  If FACT = 'N', then DF is
                 an output argument and on exit contains the n  diagonal  ele-
                 ments  of  the diagonal matrix D from the L*D*L**T factoriza-
                 tion of A.


       EF (input or output)
                 If FACT = 'F', then EF is an input argument and on entry con-
                 tains  the  (n-1) subdiagonal elements of the unit bidiagonal
                 factor L from the L*D*L**T factorization of  A.   If  FACT  =
                 'N',  then  EF is an output argument and on exit contains the
                 (n-1) subdiagonal elements of the unit  bidiagonal  factor  L
                 from the L*D*L**T factorization of A.


       B (input) The N-by-NRHS right hand side matrix B.


       LDB (input)
                 The leading dimension of the array B.  LDB >= max(1,N).


       X (output)
                 If INFO = 0 of INFO = N+1, the N-by-NRHS solution matrix X.


       LDX (input)
                 The leading dimension of the array X.  LDX >= max(1,N).


       RCOND (output)
                 The reciprocal condition number of the matrix A.  If RCOND is
                 less than the machine precision (in particular,  if  RCOND  =
                 0), the matrix is singular to working precision.  This condi-
                 tion is indicated by a return code of INFO > 0.


       FERR (output)
                 The forward error bound for each solution vector X(j) (the j-
                 th  column  of  the solution matrix X).  If XTRUE is the true
                 solution corresponding to X(j), FERR(j) is an estimated upper
                 bound  for  the  magnitude  of the largest element in (X(j) -
                 XTRUE) divided by the magnitude of  the  largest  element  in
                 X(j).


       BERR (output)
                 The  componentwise  relative  backward error of each solution
                 vector X(j) (i.e., the smallest relative change in  any  ele-
                 ment of A or B that makes X(j) an exact solution).


       WORK (workspace)
                 dimension(2*N)

       INFO (output)
                 = 0:  successful exit
                 < 0:  if INFO = -i, the i-th argument had an illegal value
                 > 0:  if INFO = i, and i is
                 <= N:  the leading minor of order i of A is not positive def-
                 inite, so the factorization could not be completed,  and  the
                 solution  has  not  been  computed. RCOND = 0 is returned.  =
                 N+1: U is nonsingular, but RCOND is less than machine  preci-
                 sion,  meaning  that the matrix is singular to working preci-
                 sion.  Nevertheless, the solution and error bounds  are  com-
                 puted because there are a number of situations where the com-
                 puted solution can be more accurate than the value  of  RCOND
                 would suggest.




                                  7 Nov 2015                        dptsvx(3P)