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