diff options
Diffstat (limited to 'SRC/zlaqgb.f')
-rw-r--r-- | SRC/zlaqgb.f | 226 |
1 files changed, 154 insertions, 72 deletions
diff --git a/SRC/zlaqgb.f b/SRC/zlaqgb.f index 7296feae..61004f53 100644 --- a/SRC/zlaqgb.f +++ b/SRC/zlaqgb.f @@ -1,10 +1,163 @@ +*> \brief \b ZLAQGB +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +* Definition +* ========== +* +* SUBROUTINE ZLAQGB( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, +* AMAX, EQUED ) +* +* .. Scalar Arguments .. +* CHARACTER EQUED +* INTEGER KL, KU, LDAB, M, N +* DOUBLE PRECISION AMAX, COLCND, ROWCND +* .. +* .. Array Arguments .. +* DOUBLE PRECISION C( * ), R( * ) +* COMPLEX*16 AB( LDAB, * ) +* .. +* +* Purpose +* ======= +* +*>\details \b Purpose: +*>\verbatim +*> +*> ZLAQGB equilibrates a general M by N band matrix A with KL +*> subdiagonals and KU superdiagonals using the row and scaling factors +*> in the vectors R and C. +*> +*>\endverbatim +* +* Arguments +* ========= +* +*> \param[in] M +*> \verbatim +*> M is INTEGER +*> The number of rows of the matrix A. M >= 0. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The number of columns of the matrix A. N >= 0. +*> \endverbatim +*> +*> \param[in] KL +*> \verbatim +*> KL is INTEGER +*> The number of subdiagonals within the band of A. KL >= 0. +*> \endverbatim +*> +*> \param[in] KU +*> \verbatim +*> KU is INTEGER +*> The number of superdiagonals within the band of A. KU >= 0. +*> \endverbatim +*> +*> \param[in,out] AB +*> \verbatim +*> AB is COMPLEX*16 array, dimension (LDAB,N) +*> On entry, the matrix A in band storage, in rows 1 to KL+KU+1. +*> The j-th column of A is stored in the j-th column of the +*> array AB as follows: +*> AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl) +*> \endverbatim +*> \verbatim +*> On exit, the equilibrated matrix, in the same storage format +*> as A. See EQUED for the form of the equilibrated matrix. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDA >= KL+KU+1. +*> \endverbatim +*> +*> \param[in] R +*> \verbatim +*> R is DOUBLE PRECISION array, dimension (M) +*> The row scale factors for A. +*> \endverbatim +*> +*> \param[in] C +*> \verbatim +*> C is DOUBLE PRECISION array, dimension (N) +*> The column scale factors for A. +*> \endverbatim +*> +*> \param[in] ROWCND +*> \verbatim +*> ROWCND is DOUBLE PRECISION +*> Ratio of the smallest R(i) to the largest R(i). +*> \endverbatim +*> +*> \param[in] COLCND +*> \verbatim +*> COLCND is DOUBLE PRECISION +*> Ratio of the smallest C(i) to the largest C(i). +*> \endverbatim +*> +*> \param[in] AMAX +*> \verbatim +*> AMAX is DOUBLE PRECISION +*> Absolute value of largest matrix entry. +*> \endverbatim +*> +*> \param[out] EQUED +*> \verbatim +*> EQUED is CHARACTER*1 +*> Specifies the form of equilibration that was done. +*> = 'N': No equilibration +*> = 'R': Row equilibration, i.e., A has been premultiplied by +*> diag(R). +*> = 'C': Column equilibration, i.e., A has been postmultiplied +*> by diag(C). +*> = 'B': Both row and column equilibration, i.e., A has been +*> replaced by diag(R) * A * diag(C). +*> \endverbatim +*> \verbatim +*> Internal Parameters +*> =================== +*> \endverbatim +*> \verbatim +*> THRESH is a threshold value used to decide if row or column scaling +*> should be done based on the ratio of the row or column scaling +*> factors. If ROWCND < THRESH, row scaling is done, and if +*> COLCND < THRESH, column scaling is done. +*> \endverbatim +*> \verbatim +*> LARGE and SMALL are threshold values used to decide if row scaling +*> should be done based on the absolute size of the largest matrix +*> element. If AMAX > LARGE or AMAX < SMALL, row scaling is done. +*> \endverbatim +*> +* +* Authors +* ======= +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup complex16GBauxiliary +* +* ===================================================================== SUBROUTINE ZLAQGB( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, $ AMAX, EQUED ) * * -- LAPACK auxiliary routine (version 3.2) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2006 +* November 2011 * * .. Scalar Arguments .. CHARACTER EQUED @@ -16,77 +169,6 @@ COMPLEX*16 AB( LDAB, * ) * .. * -* Purpose -* ======= -* -* ZLAQGB equilibrates a general M by N band matrix A with KL -* subdiagonals and KU superdiagonals using the row and scaling factors -* in the vectors R and C. -* -* Arguments -* ========= -* -* M (input) INTEGER -* The number of rows of the matrix A. M >= 0. -* -* N (input) INTEGER -* The number of columns of the matrix A. N >= 0. -* -* KL (input) INTEGER -* The number of subdiagonals within the band of A. KL >= 0. -* -* KU (input) INTEGER -* The number of superdiagonals within the band of A. KU >= 0. -* -* AB (input/output) COMPLEX*16 array, dimension (LDAB,N) -* On entry, the matrix A in band storage, in rows 1 to KL+KU+1. -* The j-th column of A is stored in the j-th column of the -* array AB as follows: -* AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl) -* -* On exit, the equilibrated matrix, in the same storage format -* as A. See EQUED for the form of the equilibrated matrix. -* -* LDAB (input) INTEGER -* The leading dimension of the array AB. LDA >= KL+KU+1. -* -* R (input) DOUBLE PRECISION array, dimension (M) -* The row scale factors for A. -* -* C (input) DOUBLE PRECISION array, dimension (N) -* The column scale factors for A. -* -* ROWCND (input) DOUBLE PRECISION -* Ratio of the smallest R(i) to the largest R(i). -* -* COLCND (input) DOUBLE PRECISION -* Ratio of the smallest C(i) to the largest C(i). -* -* AMAX (input) DOUBLE PRECISION -* Absolute value of largest matrix entry. -* -* EQUED (output) CHARACTER*1 -* Specifies the form of equilibration that was done. -* = 'N': No equilibration -* = 'R': Row equilibration, i.e., A has been premultiplied by -* diag(R). -* = 'C': Column equilibration, i.e., A has been postmultiplied -* by diag(C). -* = 'B': Both row and column equilibration, i.e., A has been -* replaced by diag(R) * A * diag(C). -* -* Internal Parameters -* =================== -* -* THRESH is a threshold value used to decide if row or column scaling -* should be done based on the ratio of the row or column scaling -* factors. If ROWCND < THRESH, row scaling is done, and if -* COLCND < THRESH, column scaling is done. -* -* LARGE and SMALL are threshold values used to decide if row scaling -* should be done based on the absolute size of the largest matrix -* element. If AMAX > LARGE or AMAX < SMALL, row scaling is done. -* * ===================================================================== * * .. Parameters .. |