1*> \brief <b> ZPTSV computes the solution to system of linear equations A * X = B for PT matrices</b>
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*> \htmlonly
9*> Download ZPTSV + dependencies
10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zptsv.f">
11*> [TGZ]</a>
12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zptsv.f">
13*> [ZIP]</a>
14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zptsv.f">
15*> [TXT]</a>
16*> \endhtmlonly
17*
18*  Definition:
19*  ===========
20*
21*       SUBROUTINE ZPTSV( N, NRHS, D, E, B, LDB, INFO )
22*
23*       .. Scalar Arguments ..
24*       INTEGER            INFO, LDB, N, NRHS
25*       ..
26*       .. Array Arguments ..
27*       DOUBLE PRECISION   D( * )
28*       COMPLEX*16         B( LDB, * ), E( * )
29*       ..
30*
31*
32*> \par Purpose:
33*  =============
34*>
35*> \verbatim
36*>
37*> ZPTSV computes the solution to a complex system of linear equations
38*> A*X = B, where A is an N-by-N Hermitian positive definite tridiagonal
39*> matrix, and X and B are N-by-NRHS matrices.
40*>
41*> A is factored as A = L*D*L**H, and the factored form of A is then
42*> used to solve the system of equations.
43*> \endverbatim
44*
45*  Arguments:
46*  ==========
47*
48*> \param[in] N
49*> \verbatim
50*>          N is INTEGER
51*>          The order of the matrix A.  N >= 0.
52*> \endverbatim
53*>
54*> \param[in] NRHS
55*> \verbatim
56*>          NRHS is INTEGER
57*>          The number of right hand sides, i.e., the number of columns
58*>          of the matrix B.  NRHS >= 0.
59*> \endverbatim
60*>
61*> \param[in,out] D
62*> \verbatim
63*>          D is DOUBLE PRECISION array, dimension (N)
64*>          On entry, the n diagonal elements of the tridiagonal matrix
65*>          A.  On exit, the n diagonal elements of the diagonal matrix
66*>          D from the factorization A = L*D*L**H.
67*> \endverbatim
68*>
69*> \param[in,out] E
70*> \verbatim
71*>          E is COMPLEX*16 array, dimension (N-1)
72*>          On entry, the (n-1) subdiagonal elements of the tridiagonal
73*>          matrix A.  On exit, the (n-1) subdiagonal elements of the
74*>          unit bidiagonal factor L from the L*D*L**H factorization of
75*>          A.  E can also be regarded as the superdiagonal of the unit
76*>          bidiagonal factor U from the U**H*D*U factorization of A.
77*> \endverbatim
78*>
79*> \param[in,out] B
80*> \verbatim
81*>          B is COMPLEX*16 array, dimension (LDB,NRHS)
82*>          On entry, the N-by-NRHS right hand side matrix B.
83*>          On exit, if INFO = 0, the N-by-NRHS solution matrix X.
84*> \endverbatim
85*>
86*> \param[in] LDB
87*> \verbatim
88*>          LDB is INTEGER
89*>          The leading dimension of the array B.  LDB >= max(1,N).
90*> \endverbatim
91*>
92*> \param[out] INFO
93*> \verbatim
94*>          INFO is INTEGER
95*>          = 0:  successful exit
96*>          < 0:  if INFO = -i, the i-th argument had an illegal value
97*>          > 0:  if INFO = i, the leading minor of order i is not
98*>                positive definite, and the solution has not been
99*>                computed.  The factorization has not been completed
100*>                unless i = N.
101*> \endverbatim
102*
103*  Authors:
104*  ========
105*
106*> \author Univ. of Tennessee
107*> \author Univ. of California Berkeley
108*> \author Univ. of Colorado Denver
109*> \author NAG Ltd.
110*
111*> \ingroup complex16PTsolve
112*
113*  =====================================================================
114      SUBROUTINE ZPTSV( N, NRHS, D, E, B, LDB, INFO )
115*
116*  -- LAPACK driver routine --
117*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
118*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
119*
120*     .. Scalar Arguments ..
121      INTEGER            INFO, LDB, N, NRHS
122*     ..
123*     .. Array Arguments ..
124      DOUBLE PRECISION   D( * )
125      COMPLEX*16         B( LDB, * ), E( * )
126*     ..
127*
128*  =====================================================================
129*
130*     .. External Subroutines ..
131      EXTERNAL           XERBLA, ZPTTRF, ZPTTRS
132*     ..
133*     .. Intrinsic Functions ..
134      INTRINSIC          MAX
135*     ..
136*     .. Executable Statements ..
137*
138*     Test the input parameters.
139*
140      INFO = 0
141      IF( N.LT.0 ) THEN
142         INFO = -1
143      ELSE IF( NRHS.LT.0 ) THEN
144         INFO = -2
145      ELSE IF( LDB.LT.MAX( 1, N ) ) THEN
146         INFO = -6
147      END IF
148      IF( INFO.NE.0 ) THEN
149         CALL XERBLA( 'ZPTSV ', -INFO )
150         RETURN
151      END IF
152*
153*     Compute the L*D*L**H (or U**H*D*U) factorization of A.
154*
155      CALL ZPTTRF( N, D, E, INFO )
156      IF( INFO.EQ.0 ) THEN
157*
158*        Solve the system A*X = B, overwriting B with X.
159*
160         CALL ZPTTRS( 'Lower', N, NRHS, D, E, B, LDB, INFO )
161      END IF
162      RETURN
163*
164*     End of ZPTSV
165*
166      END
167