LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ dptts2()

subroutine dptts2 ( integer n,
integer nrhs,
double precision, dimension( * ) d,
double precision, dimension( * ) e,
double precision, dimension( ldb, * ) b,
integer ldb )

DPTTS2 solves a tridiagonal system of the form AX=B using the L D LH factorization computed by spttrf.

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

Purpose:
!>
!> DPTTS2 solves a tridiagonal system of the form
!>    A * X = B
!> using the L*D*L**T factorization of A computed by DPTTRF.  D is a
!> diagonal matrix specified in the vector D, L is a unit bidiagonal
!> matrix whose subdiagonal is specified in the vector E, and X and B
!> are N by NRHS matrices.
!> 
Parameters
[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
!>          L*D*L**T factorization of A.
!> 
[in]E
!>          E is DOUBLE PRECISION array, dimension (N-1)
!>          The (n-1) subdiagonal elements of the unit bidiagonal factor
!>          L from the L*D*L**T factorization of A.  E can also be regarded
!>          as the superdiagonal of the unit bidiagonal factor U from the
!>          factorization A = U**T*D*U.
!> 
[in,out]B
!>          B is DOUBLE PRECISION 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).
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 99 of file dptts2.f.

100*
101* -- LAPACK computational routine --
102* -- LAPACK is a software package provided by Univ. of Tennessee, --
103* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
104*
105* .. Scalar Arguments ..
106 INTEGER LDB, N, NRHS
107* ..
108* .. Array Arguments ..
109 DOUBLE PRECISION B( LDB, * ), D( * ), E( * )
110* ..
111*
112* =====================================================================
113*
114* .. Local Scalars ..
115 INTEGER I, J
116* ..
117* .. External Subroutines ..
118 EXTERNAL dscal
119* ..
120* .. Executable Statements ..
121*
122* Quick return if possible
123*
124 IF( n.LE.1 ) THEN
125 IF( n.EQ.1 )
126 $ CALL dscal( nrhs, 1.d0 / d( 1 ), b, ldb )
127 RETURN
128 END IF
129*
130* Solve A * X = B using the factorization A = L*D*L**T,
131* overwriting each right hand side vector with its solution.
132*
133 DO 30 j = 1, nrhs
134*
135* Solve L * x = b.
136*
137 DO 10 i = 2, n
138 b( i, j ) = b( i, j ) - b( i-1, j )*e( i-1 )
139 10 CONTINUE
140*
141* Solve D * L**T * x = b.
142*
143 b( n, j ) = b( n, j ) / d( n )
144 DO 20 i = n - 1, 1, -1
145 b( i, j ) = b( i, j ) / d( i ) - b( i+1, j )*e( i )
146 20 CONTINUE
147 30 CONTINUE
148*
149 RETURN
150*
151* End of DPTTS2
152*
subroutine dscal(n, da, dx, incx)
DSCAL
Definition dscal.f:79
Here is the call graph for this function:
Here is the caller graph for this function: