LAPACK  3.10.1
LAPACK: Linear Algebra PACKage

◆ zpttrs()

subroutine zpttrs ( character  UPLO,
integer  N,
integer  NRHS,
double precision, dimension( * )  D,
complex*16, dimension( * )  E,
complex*16, dimension( ldb, * )  B,
integer  LDB,
integer  INFO 
)

ZPTTRS

Download ZPTTRS + dependencies [TGZ] [ZIP] [TXT]

Purpose:
 ZPTTRS solves a tridiagonal system of the form
    A * X = B
 using the factorization A = U**H *D* U or A = L*D*L**H computed by ZPTTRF.
 D is a diagonal matrix specified in the vector D, U (or L) is a unit
 bidiagonal matrix whose superdiagonal (subdiagonal) is specified in
 the vector E, and X and B are N by NRHS matrices.
Parameters
[in]UPLO
          UPLO is CHARACTER*1
          Specifies the form of the factorization and whether the
          vector E is the superdiagonal of the upper bidiagonal factor
          U or the subdiagonal of the lower bidiagonal factor L.
          = 'U':  A = U**H *D*U, E is the superdiagonal of U
          = 'L':  A = L*D*L**H, E is the subdiagonal of L
[in]N
          N is INTEGER
          The order of the tridiagonal matrix A.  N >= 0.
[in]NRHS
          NRHS is INTEGER
          The number of right hand sides, i.e., the number of columns
          of the matrix B.  NRHS >= 0.
[in]D
          D is DOUBLE PRECISION array, dimension (N)
          The n diagonal elements of the diagonal matrix D from the
          factorization A = U**H *D*U or A = L*D*L**H.
[in]E
          E is COMPLEX*16 array, dimension (N-1)
          If UPLO = 'U', the (n-1) superdiagonal elements of the unit
          bidiagonal factor U from the factorization A = U**H*D*U.
          If UPLO = 'L', the (n-1) subdiagonal elements of the unit
          bidiagonal factor L from the factorization A = L*D*L**H.
[in,out]B
          B is COMPLEX*16 array, dimension (LDB,NRHS)
          On entry, the right hand side vectors B for the system of
          linear equations.
          On exit, the solution vectors, X.
[in]LDB
          LDB is INTEGER
          The leading dimension of the array B.  LDB >= max(1,N).
[out]INFO
          INFO is INTEGER
          = 0: successful exit
          < 0: if INFO = -k, the k-th argument had an illegal value
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 120 of file zpttrs.f.

121 *
122 * -- LAPACK computational routine --
123 * -- LAPACK is a software package provided by Univ. of Tennessee, --
124 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
125 *
126 * .. Scalar Arguments ..
127  CHARACTER UPLO
128  INTEGER INFO, LDB, N, NRHS
129 * ..
130 * .. Array Arguments ..
131  DOUBLE PRECISION D( * )
132  COMPLEX*16 B( LDB, * ), E( * )
133 * ..
134 *
135 * =====================================================================
136 *
137 * .. Local Scalars ..
138  LOGICAL UPPER
139  INTEGER IUPLO, J, JB, NB
140 * ..
141 * .. External Functions ..
142  INTEGER ILAENV
143  EXTERNAL ilaenv
144 * ..
145 * .. External Subroutines ..
146  EXTERNAL xerbla, zptts2
147 * ..
148 * .. Intrinsic Functions ..
149  INTRINSIC max, min
150 * ..
151 * .. Executable Statements ..
152 *
153 * Test the input arguments.
154 *
155  info = 0
156  upper = ( uplo.EQ.'U' .OR. uplo.EQ.'u' )
157  IF( .NOT.upper .AND. .NOT.( uplo.EQ.'L' .OR. uplo.EQ.'l' ) ) THEN
158  info = -1
159  ELSE IF( n.LT.0 ) THEN
160  info = -2
161  ELSE IF( nrhs.LT.0 ) THEN
162  info = -3
163  ELSE IF( ldb.LT.max( 1, n ) ) THEN
164  info = -7
165  END IF
166  IF( info.NE.0 ) THEN
167  CALL xerbla( 'ZPTTRS', -info )
168  RETURN
169  END IF
170 *
171 * Quick return if possible
172 *
173  IF( n.EQ.0 .OR. nrhs.EQ.0 )
174  $ RETURN
175 *
176 * Determine the number of right-hand sides to solve at a time.
177 *
178  IF( nrhs.EQ.1 ) THEN
179  nb = 1
180  ELSE
181  nb = max( 1, ilaenv( 1, 'ZPTTRS', uplo, n, nrhs, -1, -1 ) )
182  END IF
183 *
184 * Decode UPLO
185 *
186  IF( upper ) THEN
187  iuplo = 1
188  ELSE
189  iuplo = 0
190  END IF
191 *
192  IF( nb.GE.nrhs ) THEN
193  CALL zptts2( iuplo, n, nrhs, d, e, b, ldb )
194  ELSE
195  DO 10 j = 1, nrhs, nb
196  jb = min( nrhs-j+1, nb )
197  CALL zptts2( iuplo, n, jb, d, e, b( 1, j ), ldb )
198  10 CONTINUE
199  END IF
200 *
201  RETURN
202 *
203 * End of ZPTTRS
204 *
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
ILAENV
Definition: ilaenv.f:162
subroutine xerbla(SRNAME, INFO)
XERBLA
Definition: xerbla.f:60
subroutine zptts2(IUPLO, N, NRHS, D, E, B, LDB)
ZPTTS2 solves a tridiagonal system of the form AX=B using the L D LH factorization computed by spttrf...
Definition: zptts2.f:113
Here is the call graph for this function:
Here is the caller graph for this function: