--- rpl/lapack/lapack/dlagts.f 2011/07/22 07:38:06 1.8 +++ rpl/lapack/lapack/dlagts.f 2011/11/21 20:42:55 1.9 @@ -1,9 +1,170 @@ +*> \brief \b DLAGTS +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DLAGTS + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DLAGTS( JOB, N, A, B, C, D, IN, Y, TOL, INFO ) +* +* .. Scalar Arguments .. +* INTEGER INFO, JOB, N +* DOUBLE PRECISION TOL +* .. +* .. Array Arguments .. +* INTEGER IN( * ) +* DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ), Y( * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DLAGTS may be used to solve one of the systems of equations +*> +*> (T - lambda*I)*x = y or (T - lambda*I)**T*x = y, +*> +*> where T is an n by n tridiagonal matrix, for x, following the +*> factorization of (T - lambda*I) as +*> +*> (T - lambda*I) = P*L*U , +*> +*> by routine DLAGTF. The choice of equation to be solved is +*> controlled by the argument JOB, and in each case there is an option +*> to perturb zero or very small diagonal elements of U, this option +*> being intended for use in applications such as inverse iteration. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] JOB +*> \verbatim +*> JOB is INTEGER +*> Specifies the job to be performed by DLAGTS as follows: +*> = 1: The equations (T - lambda*I)x = y are to be solved, +*> but diagonal elements of U are not to be perturbed. +*> = -1: The equations (T - lambda*I)x = y are to be solved +*> and, if overflow would otherwise occur, the diagonal +*> elements of U are to be perturbed. See argument TOL +*> below. +*> = 2: The equations (T - lambda*I)**Tx = y are to be solved, +*> but diagonal elements of U are not to be perturbed. +*> = -2: The equations (T - lambda*I)**Tx = y are to be solved +*> and, if overflow would otherwise occur, the diagonal +*> elements of U are to be perturbed. See argument TOL +*> below. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrix T. +*> \endverbatim +*> +*> \param[in] A +*> \verbatim +*> A is DOUBLE PRECISION array, dimension (N) +*> On entry, A must contain the diagonal elements of U as +*> returned from DLAGTF. +*> \endverbatim +*> +*> \param[in] B +*> \verbatim +*> B is DOUBLE PRECISION array, dimension (N-1) +*> On entry, B must contain the first super-diagonal elements of +*> U as returned from DLAGTF. +*> \endverbatim +*> +*> \param[in] C +*> \verbatim +*> C is DOUBLE PRECISION array, dimension (N-1) +*> On entry, C must contain the sub-diagonal elements of L as +*> returned from DLAGTF. +*> \endverbatim +*> +*> \param[in] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N-2) +*> On entry, D must contain the second super-diagonal elements +*> of U as returned from DLAGTF. +*> \endverbatim +*> +*> \param[in] IN +*> \verbatim +*> IN is INTEGER array, dimension (N) +*> On entry, IN must contain details of the matrix P as returned +*> from DLAGTF. +*> \endverbatim +*> +*> \param[in,out] Y +*> \verbatim +*> Y is DOUBLE PRECISION array, dimension (N) +*> On entry, the right hand side vector y. +*> On exit, Y is overwritten by the solution vector x. +*> \endverbatim +*> +*> \param[in,out] TOL +*> \verbatim +*> TOL is DOUBLE PRECISION +*> On entry, with JOB .lt. 0, TOL should be the minimum +*> perturbation to be made to very small diagonal elements of U. +*> TOL should normally be chosen as about eps*norm(U), where eps +*> is the relative machine precision, but if TOL is supplied as +*> non-positive, then it is reset to eps*max( abs( u(i,j) ) ). +*> If JOB .gt. 0 then TOL is not referenced. +*> +*> On exit, TOL is changed as described above, only if TOL is +*> non-positive on entry. Otherwise TOL is unchanged. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0 : successful exit +*> .lt. 0: if INFO = -i, the i-th argument had an illegal value +*> .gt. 0: overflow would occur when computing the INFO(th) +*> element of the solution vector x. This can only occur +*> when JOB is supplied as positive and either means +*> that a diagonal element of U is very small, or that +*> the elements of the right-hand side vector y are very +*> large. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup auxOTHERauxiliary +* +* ===================================================================== SUBROUTINE DLAGTS( JOB, N, A, B, C, D, IN, Y, TOL, INFO ) * -* -- LAPACK auxiliary routine (version 3.3.1) -- +* -- LAPACK auxiliary routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* -- April 2011 -- +* November 2011 * * .. Scalar Arguments .. INTEGER INFO, JOB, N @@ -14,89 +175,6 @@ DOUBLE PRECISION A( * ), B( * ), C( * ), D( * ), Y( * ) * .. * -* Purpose -* ======= -* -* DLAGTS may be used to solve one of the systems of equations -* -* (T - lambda*I)*x = y or (T - lambda*I)**T*x = y, -* -* where T is an n by n tridiagonal matrix, for x, following the -* factorization of (T - lambda*I) as -* -* (T - lambda*I) = P*L*U , -* -* by routine DLAGTF. The choice of equation to be solved is -* controlled by the argument JOB, and in each case there is an option -* to perturb zero or very small diagonal elements of U, this option -* being intended for use in applications such as inverse iteration. -* -* Arguments -* ========= -* -* JOB (input) INTEGER -* Specifies the job to be performed by DLAGTS as follows: -* = 1: The equations (T - lambda*I)x = y are to be solved, -* but diagonal elements of U are not to be perturbed. -* = -1: The equations (T - lambda*I)x = y are to be solved -* and, if overflow would otherwise occur, the diagonal -* elements of U are to be perturbed. See argument TOL -* below. -* = 2: The equations (T - lambda*I)**Tx = y are to be solved, -* but diagonal elements of U are not to be perturbed. -* = -2: The equations (T - lambda*I)**Tx = y are to be solved -* and, if overflow would otherwise occur, the diagonal -* elements of U are to be perturbed. See argument TOL -* below. -* -* N (input) INTEGER -* The order of the matrix T. -* -* A (input) DOUBLE PRECISION array, dimension (N) -* On entry, A must contain the diagonal elements of U as -* returned from DLAGTF. -* -* B (input) DOUBLE PRECISION array, dimension (N-1) -* On entry, B must contain the first super-diagonal elements of -* U as returned from DLAGTF. -* -* C (input) DOUBLE PRECISION array, dimension (N-1) -* On entry, C must contain the sub-diagonal elements of L as -* returned from DLAGTF. -* -* D (input) DOUBLE PRECISION array, dimension (N-2) -* On entry, D must contain the second super-diagonal elements -* of U as returned from DLAGTF. -* -* IN (input) INTEGER array, dimension (N) -* On entry, IN must contain details of the matrix P as returned -* from DLAGTF. -* -* Y (input/output) DOUBLE PRECISION array, dimension (N) -* On entry, the right hand side vector y. -* On exit, Y is overwritten by the solution vector x. -* -* TOL (input/output) DOUBLE PRECISION -* On entry, with JOB .lt. 0, TOL should be the minimum -* perturbation to be made to very small diagonal elements of U. -* TOL should normally be chosen as about eps*norm(U), where eps -* is the relative machine precision, but if TOL is supplied as -* non-positive, then it is reset to eps*max( abs( u(i,j) ) ). -* If JOB .gt. 0 then TOL is not referenced. -* -* On exit, TOL is changed as described above, only if TOL is -* non-positive on entry. Otherwise TOL is unchanged. -* -* INFO (output) INTEGER -* = 0 : successful exit -* .lt. 0: if INFO = -i, the i-th argument had an illegal value -* .gt. 0: overflow would occur when computing the INFO(th) -* element of the solution vector x. This can only occur -* when JOB is supplied as positive and either means -* that a diagonal element of U is very small, or that -* the elements of the right-hand side vector y are very -* large. -* * ===================================================================== * * .. Parameters ..