LAPACK  3.6.1 LAPACK: Linear Algebra PACKage
 subroutine slaqge ( integer M, integer N, real, dimension( lda, * ) A, integer LDA, real, dimension( * ) R, real, dimension( * ) C, real ROWCND, real COLCND, real AMAX, character EQUED )

SLAQGE scales a general rectangular matrix, using row and column scaling factors computed by sgeequ.

Purpose:
``` SLAQGE equilibrates a general M by N matrix A using the row and
column scaling factors in the vectors R and C.```
Parameters
 [in] M ``` M is INTEGER The number of rows of the matrix A. M >= 0.``` [in] N ``` N is INTEGER The number of columns of the matrix A. N >= 0.``` [in,out] A ``` A is REAL array, dimension (LDA,N) On entry, the M by N matrix A. On exit, the equilibrated matrix. See EQUED for the form of the equilibrated matrix.``` [in] LDA ``` LDA is INTEGER The leading dimension of the array A. LDA >= max(M,1).``` [in] R ``` R is REAL array, dimension (M) The row scale factors for A.``` [in] C ``` C is REAL array, dimension (N) The column scale factors for A.``` [in] ROWCND ``` ROWCND is REAL Ratio of the smallest R(i) to the largest R(i).``` [in] COLCND ``` COLCND is REAL Ratio of the smallest C(i) to the largest C(i).``` [in] AMAX ``` AMAX is REAL Absolute value of largest matrix entry.``` [out] EQUED ``` 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).```
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.```
Date
September 2012

Definition at line 144 of file slaqge.f.

144 *
145 * -- LAPACK auxiliary routine (version 3.4.2) --
146 * -- LAPACK is a software package provided by Univ. of Tennessee, --
147 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
148 * September 2012
149 *
150 * .. Scalar Arguments ..
151  CHARACTER equed
152  INTEGER lda, m, n
153  REAL amax, colcnd, rowcnd
154 * ..
155 * .. Array Arguments ..
156  REAL a( lda, * ), c( * ), r( * )
157 * ..
158 *
159 * =====================================================================
160 *
161 * .. Parameters ..
162  REAL one, thresh
163  parameter ( one = 1.0e+0, thresh = 0.1e+0 )
164 * ..
165 * .. Local Scalars ..
166  INTEGER i, j
167  REAL cj, large, small
168 * ..
169 * .. External Functions ..
170  REAL slamch
171  EXTERNAL slamch
172 * ..
173 * .. Executable Statements ..
174 *
175 * Quick return if possible
176 *
177  IF( m.LE.0 .OR. n.LE.0 ) THEN
178  equed = 'N'
179  RETURN
180  END IF
181 *
182 * Initialize LARGE and SMALL.
183 *
184  small = slamch( 'Safe minimum' ) / slamch( 'Precision' )
185  large = one / small
186 *
187  IF( rowcnd.GE.thresh .AND. amax.GE.small .AND. amax.LE.large )
188  \$ THEN
189 *
190 * No row scaling
191 *
192  IF( colcnd.GE.thresh ) THEN
193 *
194 * No column scaling
195 *
196  equed = 'N'
197  ELSE
198 *
199 * Column scaling
200 *
201  DO 20 j = 1, n
202  cj = c( j )
203  DO 10 i = 1, m
204  a( i, j ) = cj*a( i, j )
205  10 CONTINUE
206  20 CONTINUE
207  equed = 'C'
208  END IF
209  ELSE IF( colcnd.GE.thresh ) THEN
210 *
211 * Row scaling, no column scaling
212 *
213  DO 40 j = 1, n
214  DO 30 i = 1, m
215  a( i, j ) = r( i )*a( i, j )
216  30 CONTINUE
217  40 CONTINUE
218  equed = 'R'
219  ELSE
220 *
221 * Row and column scaling
222 *
223  DO 60 j = 1, n
224  cj = c( j )
225  DO 50 i = 1, m
226  a( i, j ) = cj*r( i )*a( i, j )
227  50 CONTINUE
228  60 CONTINUE
229  equed = 'B'
230  END IF
231 *
232  RETURN
233 *
234 * End of SLAQGE
235 *
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:69

Here is the caller graph for this function: