160 SUBROUTINE cgebal( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
168 INTEGER IHI, ILO, INFO, LDA, N
179 parameter( zero = 0.0e+0, one = 1.0e+0 )
181 parameter( sclfac = 2.0e+0 )
183 parameter( factor = 0.95e+0 )
187 INTEGER I, ICA, IEXC, IRA, J, K, L, M
188 REAL C, CA, F, G, R, RA, S, SFMAX1, SFMAX2, SFMIN1,
192 LOGICAL SISNAN, LSAME
195 EXTERNAL sisnan, lsame, icamax, slamch, scnrm2
201 INTRINSIC abs, aimag, max, min, real
206 IF( .NOT.lsame( job,
'N' ) .AND. .NOT.lsame( job,
'P' ) .AND.
207 $ .NOT.lsame( job,
'S' ) .AND. .NOT.lsame( job,
'B' ) )
THEN
209 ELSE IF( n.LT.0 )
THEN
211 ELSE IF( lda.LT.max( 1, n ) )
THEN
215 CALL xerbla(
'CGEBAL', -info )
225 IF( lsame( job,
'N' ) )
THEN
232 IF( lsame( job,
'S' ) )
246 CALL cswap( l, a( 1, j ), 1, a( 1, m ), 1 )
247 CALL cswap( n-k+1, a( j, k ), lda, a( m, k ), lda )
265 IF( real( a( j, i ) ).NE.zero .OR. aimag( a( j, i ) ).NE.
287 IF( real( a( i, j ) ).NE.zero .OR. aimag( a( i, j ) ).NE.
301 IF( lsame( job,
'P' ) )
308 sfmin1 = slamch(
'S' ) / slamch(
'P' )
309 sfmax1 = one / sfmin1
310 sfmin2 = sfmin1*sclfac
311 sfmax2 = one / sfmin2
317 c = scnrm2( l-k+1, a( k, i ), 1 )
318 r = scnrm2( l-k+1, a( i , k ), lda )
319 ica = icamax( l, a( 1, i ), 1 )
320 ca = abs( a( ica, i ) )
321 ira = icamax( n-k+1, a( i, k ), lda )
322 ra = abs( a( i, ira+k-1 ) )
326 IF( c.EQ.zero .OR. r.EQ.zero )
332 IF( c.GE.g .OR. max( f, c, ca ).GE.sfmax2 .OR.
333 $ min( r, g, ra ).LE.sfmin2 )
GO TO 170
334 IF( sisnan( c+f+ca+r+g+ra ) )
THEN
339 CALL xerbla(
'CGEBAL', -info )
353 IF( g.LT.r .OR. max( r, ra ).GE.sfmax2 .OR.
354 $ min( f, c, g, ca ).LE.sfmin2 )
GO TO 190
366 IF( ( c+r ).GE.factor*s )
368 IF( f.LT.one .AND. scale( i ).LT.one )
THEN
369 IF( f*scale( i ).LE.sfmin1 )
372 IF( f.GT.one .AND. scale( i ).GT.one )
THEN
373 IF( scale( i ).GE.sfmax1 / f )
377 scale( i ) = scale( i )*f
380 CALL csscal( n-k+1, g, a( i, k ), lda )
381 CALL csscal( l, f, a( 1, i ), 1 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine csscal(N, SA, CX, INCX)
CSSCAL
subroutine cswap(N, CX, INCX, CY, INCY)
CSWAP
subroutine cgebal(JOB, N, A, LDA, ILO, IHI, SCALE, INFO)
CGEBAL