version 1.2, 2010/04/21 13:45:18
|
version 1.12, 2012/12/14 12:30:24
|
Line 1
|
Line 1
|
|
*> \brief \b DLARRA computes the splitting points with the specified threshold. |
|
* |
|
* =========== DOCUMENTATION =========== |
|
* |
|
* Online html documentation available at |
|
* http://www.netlib.org/lapack/explore-html/ |
|
* |
|
*> \htmlonly |
|
*> Download DLARRA + dependencies |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarra.f"> |
|
*> [TGZ]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarra.f"> |
|
*> [ZIP]</a> |
|
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlarra.f"> |
|
*> [TXT]</a> |
|
*> \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 September 2012 |
|
* |
|
*> \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, |
SUBROUTINE DLARRA( N, D, E, E2, SPLTOL, TNRM, |
$ NSPLIT, ISPLIT, INFO ) |
$ NSPLIT, ISPLIT, INFO ) |
IMPLICIT NONE |
|
* |
* |
* -- LAPACK auxiliary routine (version 3.2) -- |
* -- LAPACK auxiliary routine (version 3.4.2) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2006 |
* September 2012 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER INFO, N, NSPLIT |
INTEGER INFO, N, NSPLIT |
Line 16
|
Line 150
|
DOUBLE PRECISION D( * ), E( * ), E2( * ) |
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 .. |
* .. Parameters .. |