159 SUBROUTINE zgbequb( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND,
167 INTEGER INFO, KL, KU, LDAB, M, N
168 DOUBLE PRECISION AMAX, COLCND, ROWCND
171 DOUBLE PRECISION C( * ), R( * )
172 COMPLEX*16 AB( LDAB, * )
178 DOUBLE PRECISION ONE, ZERO
179 parameter( one = 1.0d+0, zero = 0.0d+0 )
183 DOUBLE PRECISION BIGNUM, RCMAX, RCMIN, SMLNUM, RADIX,
188 DOUBLE PRECISION DLAMCH
195 INTRINSIC abs,
max,
min, log, real, dimag
198 DOUBLE PRECISION CABS1
201 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
210 ELSE IF( n.LT.0 )
THEN
212 ELSE IF( kl.LT.0 )
THEN
214 ELSE IF( ku.LT.0 )
THEN
216 ELSE IF( ldab.LT.kl+ku+1 )
THEN
220 CALL xerbla(
'ZGBEQUB', -info )
226 IF( m.EQ.0 .OR. n.EQ.0 )
THEN
235 smlnum = dlamch( 's
' )
236 BIGNUM = ONE / SMLNUM
237 RADIX = DLAMCH( 'b
' )
250 DO 20 I = MAX( J-KU, 1 ), MIN( J+KL, M )
251 R( I ) = MAX( R( I ), CABS1( AB( KD+I-J, J ) ) )
255.GT.
IF( R( I )ZERO ) THEN
256 R( I ) = RADIX**INT( LOG( R( I ) ) / LOGRDX )
265 RCMAX = MAX( RCMAX, R( I ) )
266 RCMIN = MIN( RCMIN, R( I ) )
270.EQ.
IF( RCMINZERO ) THEN
275.EQ.
IF( R( I )ZERO ) THEN
285 R( I ) = ONE / MIN( MAX( R( I ), SMLNUM ), BIGNUM )
290 ROWCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
303 DO 80 I = MAX( J-KU, 1 ), MIN( J+KL, M )
304 C( J ) = MAX( C( J ), CABS1( AB( KD+I-J, J ) )*R( I ) )
306.GT.
IF( C( J )ZERO ) THEN
307 C( J ) = RADIX**INT( LOG( C( J ) ) / LOGRDX )
316 RCMIN = MIN( RCMIN, C( J ) )
317 RCMAX = MAX( RCMAX, C( J ) )
320.EQ.
IF( RCMINZERO ) THEN
325.EQ.
IF( C( J )ZERO ) THEN
335 C( J ) = ONE / MIN( MAX( C( J ), SMLNUM ), BIGNUM )
340 COLCND = MAX( RCMIN, SMLNUM ) / MIN( RCMAX, BIGNUM )
subroutine zgbequb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info)
ZGBEQUB