1 SUBROUTINE clascl( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
9 INTEGER info, kl, ku, lda, m, n
79 parameter( zero = 0.0e0, one = 1.0e0 )
83 INTEGER i,
itype, j, k1, k2, k3, k4
84 REAL bignum, cfrom1, cfromc, cto1, ctoc, mul, smlnum
89 EXTERNAL lsame, slamch, sisnan
103 IF( lsame( type,
'G' ) )
THEN
105 ELSE IF( lsame( type,
'L' ) )
THEN
107 ELSE IF( lsame( type,
'U' ) )
THEN
109 ELSE IF( lsame( type,
'H' ) )
THEN
111 ELSE IF( lsame( type,
'B' ) )
THEN
113 ELSE IF( lsame( type,
'Q' ) )
THEN
115 ELSE IF( lsame( type,
'Z' ) )
THEN
121 IF(
itype.EQ.-1 )
THEN
123 ELSE IF( cfrom.EQ.zero .OR. sisnan(cfrom) )
THEN
125 ELSE IF( sisnan(cto) )
THEN
127 ELSE IF( m.LT.0 )
THEN
129 ELSE IF( n.LT.0 .OR. (
itype.EQ.4 .AND. n.NE.m ) .OR.
130 $ (
itype.EQ.5 .AND. n.NE.m ) )
THEN
132 ELSE IF(
itype.LE.3 .AND. lda.LT.
max( 1, m ) )
THEN
134 ELSE IF(
itype.GE.4 )
THEN
135 IF( kl.LT.0 .OR. kl.GT.
max( m-1, 0 ) )
THEN
137 ELSE IF( ku.LT.0 .OR. ku.GT.
max( n-1, 0 ) .OR.
138 $ ( (
itype.EQ.4 .OR.
itype.EQ.5 ) .AND. kl.NE.ku ) )
141 ELSE IF( (
itype.EQ.4 .AND. lda.LT.kl+1 ) .OR.
142 $ (
itype.EQ.5 .AND. lda.LT.ku+1 ) .OR.
143 $ (
itype.EQ.6 .AND. lda.LT.2*kl+ku+1 ) )
THEN
149 CALL
xerbla(
'CLASCL', -info )
155 IF( n.EQ.0 .OR. m.EQ.0 )
160 smlnum = slamch(
'S' )
161 bignum = one / smlnum
167 cfrom1 = cfromc*smlnum
168 IF( cfrom1.EQ.cfromc )
THEN
176 IF( cto1.EQ.ctoc )
THEN
182 ELSE IF( abs( cfrom1 ).GT.abs( ctoc ) .AND. ctoc.NE.zero )
THEN
186 ELSE IF( abs( cto1 ).GT.abs( cfromc ) )
THEN
196 IF(
itype.EQ.0 )
THEN
202 a( i, j ) = a( i, j )*mul
206 ELSE IF(
itype.EQ.1 )
THEN
212 a( i, j ) = a( i, j )*mul
216 ELSE IF(
itype.EQ.2 )
THEN
221 DO 60 i = 1,
min( j, m )
222 a( i, j ) = a( i, j )*mul
226 ELSE IF(
itype.EQ.3 )
THEN
231 DO 80 i = 1,
min( j+1, m )
232 a( i, j ) = a( i, j )*mul
236 ELSE IF(
itype.EQ.4 )
THEN
243 DO 100 i = 1,
min( k3, k4-j )
244 a( i, j ) = a( i, j )*mul
248 ELSE IF(
itype.EQ.5 )
THEN
255 DO 120 i =
max( k1-j, 1 ), k3
256 a( i, j ) = a( i, j )*mul
260 ELSE IF(
itype.EQ.6 )
THEN
269 DO 140 i =
max( k1-j, k2 ),
min( k3, k4-j )
270 a( i, j ) = a( i, j )*mul