140 REAL FUNCTION SLA_PORCOND( UPLO, N, A, LDA, AF, LDAF, CMODE, C,
141 $ INFO, WORK, IWORK )
150 INTEGER n, lda, ldaf, info, cmode
151 REAL a( lda, * ), af( ldaf, * ), work( * ),
187 CALL xerbla(
'SLA_PORCOND', -info )
196 IF (
lsame( uplo,
'U' ) ) up = .true.
204 IF ( cmode .EQ. 1 )
THEN
206 tmp = tmp + abs( a( j, i ) * c( j ) )
209 tmp = tmp + abs( a( i, j ) * c( j ) )
211 ELSE IF ( cmode .EQ. 0 )
THEN
213 tmp = tmp + abs( a( j, i ) )
216 tmp = tmp + abs( a( i, j ) )
220 tmp = tmp + abs( a( j ,i ) / c( j ) )
223 tmp = tmp + abs( a( i, j ) / c( j ) )
231 IF ( cmode .EQ. 1 )
THEN
233 tmp = tmp + abs( a( i, j ) * c( j ) )
236 tmp = tmp + abs( a( j, i ) * c( j ) )
238 ELSE IF ( cmode .EQ. 0 )
THEN
240 tmp = tmp + abs( a( i, j ) )
243 tmp = tmp + abs( a( j, i ) )
247 tmp = tmp + abs( a( i, j ) / c( j ) )
250 tmp = tmp + abs( a( j, i ) / c( j ) )
263 CALL slacn2( n, work( n+1 ), work, iwork, ainvnm, kase, isave )
270 work( i ) = work( i ) * work( 2*n+i )
274 CALL spotrs(
'Upper', n, 1, af, ldaf, work, n, info )
276 CALL spotrs(
'Lower', n, 1, af, ldaf, work, n, info )
281 IF ( cmode .EQ. 1 )
THEN
283 work( i ) = work( i ) / c( i )
285 ELSE IF ( cmode .EQ. -1 )
THEN
287 work( i ) = work( i ) * c( i )
294 IF ( cmode .EQ. 1 )
THEN
296 work( i ) = work( i ) / c( i )
298 ELSE IF ( cmode .EQ. -1 )
THEN
300 work( i ) = work( i ) * c( i )
305 CALL spotrs(
'Upper', n, 1, af, ldaf, work, n, info )
307 CALL spotrs(
'Lower', n, 1, af, ldaf, work, n, info )
313 work( i ) = work( i ) * work( 2*n+i )
321 IF( ainvnm .NE. 0.0 )