142 SUBROUTINE dlascl( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
150 INTEGER INFO, KL, KU, LDA, M, N
151 DOUBLE PRECISION CFROM, CTO
154 DOUBLE PRECISION A( LDA, * )
160 DOUBLE PRECISION ZERO, ONE
161 parameter( zero = 0.0d0, one = 1.0d0 )
165 INTEGER I, ITYPE, J, K1, K2, K3, K4
166 DOUBLE PRECISION BIGNUM, CFROM1, CFROMC, CTO1, CTOC, MUL, SMLNUM
185 IF(
lsame(
TYPE,
'G' ) ) then
187 ELSE IF(
lsame(
TYPE,
'L' ) ) then
189 ELSE IF(
lsame(
TYPE,
'U' ) ) then
191 ELSE IF(
lsame(
TYPE, 'h
' ) ) THEN
193 ELSE IF( LSAME( TYPE, 'b
' ) ) THEN
195 ELSE IF( LSAME( TYPE, 'q
' ) ) THEN
197 ELSE IF( LSAME( TYPE, 'z
' ) ) THEN
203.EQ.
IF( ITYPE-1 ) THEN
205.EQ..OR.
ELSE IF( CFROMZERO DISNAN(CFROM) ) THEN
207 ELSE IF( DISNAN(CTO) ) THEN
209.LT.
ELSE IF( M0 ) THEN
211.LT..OR..EQ..AND..NE..OR.
ELSE IF( N0 ( ITYPE4 NM )
212.EQ..AND..NE.
$ ( ITYPE5 NM ) ) THEN
214.LE..AND..LT.
ELSE IF( ITYPE3 LDAMAX( 1, M ) ) THEN
216.GE.
ELSE IF( ITYPE4 ) THEN
217.LT..OR..GT.
IF( KL0 KLMAX( M-1, 0 ) ) THEN
219.LT..OR..GT..OR.
ELSE IF( KU0 KUMAX( N-1, 0 )
220.EQ..OR..EQ..AND..NE.
$ ( ( ITYPE4 ITYPE5 ) KLKU ) )
223.EQ..AND..LT..OR.
ELSE IF( ( ITYPE4 LDAKL+1 )
224.EQ..AND..LT..OR.
$ ( ITYPE5 LDAKU+1 )
225.EQ..AND..LT.
$ ( ITYPE6 LDA2*KL+KU+1 ) ) THEN
231 CALL XERBLA( 'dlascl', -INFO )
237.EQ..OR..EQ.
IF( N0 M0 )
242 SMLNUM = DLAMCH( 's
' )
243 BIGNUM = ONE / SMLNUM
249 CFROM1 = CFROMC*SMLNUM
250.EQ.
IF( CFROM1CFROMC ) THEN
251! CFROMC is an inf. Multiply by a correctly signed zero for
252! finite CTOC, or a NaN if CTOC is infinite.
258.EQ.
IF( CTO1CTOC ) THEN
259! CTOC is either 0 or an inf. In both cases, CTOC itself
260! serves as the correct multiplication factor.
264.GT..AND..NE.
ELSE IF( ABS( CFROM1 )ABS( CTOC ) CTOCZERO ) THEN
268.GT.
ELSE IF( ABS( CTO1 )ABS( CFROMC ) ) THEN
278.EQ.
IF( ITYPE0 ) THEN
284 A( I, J ) = A( I, J )*MUL
288.EQ.
ELSE IF( ITYPE1 ) THEN
294 A( I, J ) = A( I, J )*MUL
298.EQ.
ELSE IF( ITYPE2 ) THEN
303 DO 60 I = 1, MIN( J, M )
304 A( I, J ) = A( I, J )*MUL
308.EQ.
ELSE IF( ITYPE3 ) THEN
313 DO 80 I = 1, MIN( J+1, M )
314 A( I, J ) = A( I, J )*MUL
318.EQ.
ELSE IF( ITYPE4 ) THEN
325 DO 100 I = 1, MIN( K3, K4-J )
326 A( I, J ) = A( I, J )*MUL
330.EQ.
ELSE IF( ITYPE5 ) THEN
337 DO 120 I = MAX( K1-J, 1 ), K3
338 A( I, J ) = A( I, J )*MUL
342.EQ.
ELSE IF( ITYPE6 ) THEN
351 DO 140 I = MAX( K1-J, K2 ), MIN( K3, K4-J )
352 A( I, J ) = A( I, J )*MUL
subroutine dlascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
DLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.