142 SUBROUTINE zlascl( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
151DOUBLE PRECISION CFROM, CTO
154 COMPLEX*16 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
169 LOGICAL LSAME, DISNAN
170 DOUBLE PRECISION DLAMCH
171 EXTERNAL lsame, dlamch, disnan
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 IF( itype.EQ.-1 )
THEN
205 ELSE IF( cfrom.EQ.zero .OR. disnan(cfrom) )
THEN
207 ELSE IF( disnan(cto) )
THEN
209 ELSE IF( m.LT.0 )
THEN
211 ELSE IF( n.LT.0 .OR. ( itype.EQ.4 .AND. n.NE.m ) .OR.
212 $ ( itype.EQ.5 .AND. n.NE.m ) )
THEN
214 ELSE IF( itype.LE.3 .AND. lda.LT.
max( 1, m ) )
THEN
216 ELSE IF( itype.GE.4 )
THEN
217 IF( kl.LT.0 .OR. kl.GT.
max( m-1, 0 ) )
THEN
219 ELSE IF( ku.LT.0 .OR. ku.GT.
max( n-1, 0 ) .OR.
220 $ ( ( itype.EQ.4 .OR. itype.EQ.5 ) .AND. kl.NE.ku ) )
223 ELSE IF( ( itype.EQ.4 .AND. lda.LT.kl+1 ) .OR.
224 $ ( itype.EQ.5 .AND. lda.LT.ku+1 ) .OR.
225 $ ( itype.EQ.6 .AND. lda.LT.2*kl+ku+1 ) )
THEN
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 zlascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
ZLASCL multiplies a general rectangular matrix by a real scalar defined as cto/cfrom.