--- rpl/lapack/lapack/dlarra.f 2010/12/21 13:53:31 1.8 +++ rpl/lapack/lapack/dlarra.f 2011/11/21 20:42:57 1.9 @@ -1,11 +1,145 @@ +*> \brief \b DLARRA +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DLARRA + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DLARRA( N, D, E, E2, SPLTOL, TNRM, +* NSPLIT, ISPLIT, INFO ) +* +* .. Scalar Arguments .. +* INTEGER INFO, N, NSPLIT +* DOUBLE PRECISION SPLTOL, TNRM +* .. +* .. Array Arguments .. +* INTEGER ISPLIT( * ) +* DOUBLE PRECISION D( * ), E( * ), E2( * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> Compute the splitting points with threshold SPLTOL. +*> DLARRA sets any "small" off-diagonal elements to zero. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrix. N > 0. +*> \endverbatim +*> +*> \param[in] D +*> \verbatim +*> D is DOUBLE PRECISION array, dimension (N) +*> On entry, the N diagonal elements of the tridiagonal +*> matrix T. +*> \endverbatim +*> +*> \param[in,out] E +*> \verbatim +*> E is DOUBLE PRECISION array, dimension (N) +*> On entry, the first (N-1) entries contain the subdiagonal +*> elements of the tridiagonal matrix T; E(N) need not be set. +*> On exit, the entries E( ISPLIT( I ) ), 1 <= I <= NSPLIT, +*> are set to zero, the other entries of E are untouched. +*> \endverbatim +*> +*> \param[in,out] E2 +*> \verbatim +*> E2 is DOUBLE PRECISION array, dimension (N) +*> On entry, the first (N-1) entries contain the SQUARES of the +*> subdiagonal elements of the tridiagonal matrix T; +*> E2(N) need not be set. +*> On exit, the entries E2( ISPLIT( I ) ), +*> 1 <= I <= NSPLIT, have been set to zero +*> \endverbatim +*> +*> \param[in] SPLTOL +*> \verbatim +*> SPLTOL is DOUBLE PRECISION +*> The threshold for splitting. Two criteria can be used: +*> SPLTOL<0 : criterion based on absolute off-diagonal value +*> SPLTOL>0 : criterion that preserves relative accuracy +*> \endverbatim +*> +*> \param[in] TNRM +*> \verbatim +*> TNRM is DOUBLE PRECISION +*> The norm of the matrix. +*> \endverbatim +*> +*> \param[out] NSPLIT +*> \verbatim +*> NSPLIT is INTEGER +*> The number of blocks T splits into. 1 <= NSPLIT <= N. +*> \endverbatim +*> +*> \param[out] ISPLIT +*> \verbatim +*> ISPLIT is INTEGER array, dimension (N) +*> The splitting points, at which T breaks up into blocks. +*> The first block consists of rows/columns 1 to ISPLIT(1), +*> the second of rows/columns ISPLIT(1)+1 through ISPLIT(2), +*> etc., and the NSPLIT-th consists of rows/columns +*> ISPLIT(NSPLIT-1)+1 through ISPLIT(NSPLIT)=N. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup auxOTHERauxiliary +* +*> \par Contributors: +* ================== +*> +*> Beresford Parlett, University of California, Berkeley, USA \n +*> Jim Demmel, University of California, Berkeley, USA \n +*> Inderjit Dhillon, University of Texas, Austin, USA \n +*> Osni Marques, LBNL/NERSC, USA \n +*> Christof Voemel, University of California, Berkeley, USA +* +* ===================================================================== SUBROUTINE DLARRA( N, D, E, E2, SPLTOL, TNRM, $ NSPLIT, ISPLIT, INFO ) - IMPLICIT NONE * -* -- LAPACK auxiliary routine (version 3.2.2) -- +* -- 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..-- -* June 2010 +* November 2011 * * .. Scalar Arguments .. INTEGER INFO, N, NSPLIT @@ -16,67 +150,6 @@ DOUBLE PRECISION D( * ), E( * ), E2( * ) * .. * -* Purpose -* ======= -* -* Compute the splitting points with threshold SPLTOL. -* DLARRA sets any "small" off-diagonal elements to zero. -* -* Arguments -* ========= -* -* N (input) INTEGER -* The order of the matrix. N > 0. -* -* D (input) DOUBLE PRECISION array, dimension (N) -* On entry, the N diagonal elements of the tridiagonal -* matrix T. -* -* E (input/output) DOUBLE PRECISION array, dimension (N) -* On entry, the first (N-1) entries contain the subdiagonal -* elements of the tridiagonal matrix T; E(N) need not be set. -* On exit, the entries E( ISPLIT( I ) ), 1 <= I <= NSPLIT, -* are set to zero, the other entries of E are untouched. -* -* E2 (input/output) DOUBLE PRECISION array, dimension (N) -* On entry, the first (N-1) entries contain the SQUARES of the -* subdiagonal elements of the tridiagonal matrix T; -* E2(N) need not be set. -* On exit, the entries E2( ISPLIT( I ) ), -* 1 <= I <= NSPLIT, have been set to zero -* -* SPLTOL (input) DOUBLE PRECISION -* The threshold for splitting. Two criteria can be used: -* SPLTOL<0 : criterion based on absolute off-diagonal value -* SPLTOL>0 : criterion that preserves relative accuracy -* -* TNRM (input) DOUBLE PRECISION -* The norm of the matrix. -* -* NSPLIT (output) INTEGER -* The number of blocks T splits into. 1 <= NSPLIT <= N. -* -* ISPLIT (output) INTEGER array, dimension (N) -* The splitting points, at which T breaks up into blocks. -* The first block consists of rows/columns 1 to ISPLIT(1), -* the second of rows/columns ISPLIT(1)+1 through ISPLIT(2), -* etc., and the NSPLIT-th consists of rows/columns -* ISPLIT(NSPLIT-1)+1 through ISPLIT(NSPLIT)=N. -* -* -* INFO (output) INTEGER -* = 0: successful exit -* -* Further Details -* =============== -* -* Based on contributions by -* Beresford Parlett, University of California, Berkeley, USA -* Jim Demmel, University of California, Berkeley, USA -* Inderjit Dhillon, University of Texas, Austin, USA -* Osni Marques, LBNL/NERSC, USA -* Christof Voemel, University of California, Berkeley, USA -* * ===================================================================== * * .. Parameters ..