Annotation of rpl/lapack/lapack/dptts2.f, revision 1.1
1.1 ! bertrand 1: SUBROUTINE DPTTS2( N, NRHS, D, E, B, LDB )
! 2: *
! 3: * -- LAPACK routine (version 3.2) --
! 4: * -- LAPACK is a software package provided by Univ. of Tennessee, --
! 5: * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
! 6: * November 2006
! 7: *
! 8: * .. Scalar Arguments ..
! 9: INTEGER LDB, N, NRHS
! 10: * ..
! 11: * .. Array Arguments ..
! 12: DOUBLE PRECISION B( LDB, * ), D( * ), E( * )
! 13: * ..
! 14: *
! 15: * Purpose
! 16: * =======
! 17: *
! 18: * DPTTS2 solves a tridiagonal system of the form
! 19: * A * X = B
! 20: * using the L*D*L' factorization of A computed by DPTTRF. D is a
! 21: * diagonal matrix specified in the vector D, L is a unit bidiagonal
! 22: * matrix whose subdiagonal is specified in the vector E, and X and B
! 23: * are N by NRHS matrices.
! 24: *
! 25: * Arguments
! 26: * =========
! 27: *
! 28: * N (input) INTEGER
! 29: * The order of the tridiagonal matrix A. N >= 0.
! 30: *
! 31: * NRHS (input) INTEGER
! 32: * The number of right hand sides, i.e., the number of columns
! 33: * of the matrix B. NRHS >= 0.
! 34: *
! 35: * D (input) DOUBLE PRECISION array, dimension (N)
! 36: * The n diagonal elements of the diagonal matrix D from the
! 37: * L*D*L' factorization of A.
! 38: *
! 39: * E (input) DOUBLE PRECISION array, dimension (N-1)
! 40: * The (n-1) subdiagonal elements of the unit bidiagonal factor
! 41: * L from the L*D*L' factorization of A. E can also be regarded
! 42: * as the superdiagonal of the unit bidiagonal factor U from the
! 43: * factorization A = U'*D*U.
! 44: *
! 45: * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
! 46: * On entry, the right hand side vectors B for the system of
! 47: * linear equations.
! 48: * On exit, the solution vectors, X.
! 49: *
! 50: * LDB (input) INTEGER
! 51: * The leading dimension of the array B. LDB >= max(1,N).
! 52: *
! 53: * =====================================================================
! 54: *
! 55: * .. Local Scalars ..
! 56: INTEGER I, J
! 57: * ..
! 58: * .. External Subroutines ..
! 59: EXTERNAL DSCAL
! 60: * ..
! 61: * .. Executable Statements ..
! 62: *
! 63: * Quick return if possible
! 64: *
! 65: IF( N.LE.1 ) THEN
! 66: IF( N.EQ.1 )
! 67: $ CALL DSCAL( NRHS, 1.D0 / D( 1 ), B, LDB )
! 68: RETURN
! 69: END IF
! 70: *
! 71: * Solve A * X = B using the factorization A = L*D*L',
! 72: * overwriting each right hand side vector with its solution.
! 73: *
! 74: DO 30 J = 1, NRHS
! 75: *
! 76: * Solve L * x = b.
! 77: *
! 78: DO 10 I = 2, N
! 79: B( I, J ) = B( I, J ) - B( I-1, J )*E( I-1 )
! 80: 10 CONTINUE
! 81: *
! 82: * Solve D * L' * x = b.
! 83: *
! 84: B( N, J ) = B( N, J ) / D( N )
! 85: DO 20 I = N - 1, 1, -1
! 86: B( I, J ) = B( I, J ) / D( I ) - B( I+1, J )*E( I )
! 87: 20 CONTINUE
! 88: 30 CONTINUE
! 89: *
! 90: RETURN
! 91: *
! 92: * End of DPTTS2
! 93: *
! 94: END
CVSweb interface <joel.bertrand@systella.fr>