126 DOUBLE PRECISION FUNCTION zlantp( NORM, UPLO, DIAG, N, AP, WORK )
134 CHARACTER diag, norm, uplo
138 DOUBLE PRECISION work( * )
145 DOUBLE PRECISION one, zero
146 parameter( one = 1.0d+0, zero = 0.0d+0 )
151 DOUBLE PRECISION scale, sum, value
161 INTRINSIC abs, max, sqrt
167 ELSE IF(
lsame( norm,
'M' ) )
THEN
172 IF(
lsame( diag,
'U' ) )
THEN
174 IF(
lsame( uplo,
'U' ) )
THEN
176 DO 10 i = k, k + j - 2
177 value = max( value, abs( ap( i ) ) )
183 DO 30 i = k + 1, k + n - j
184 value = max( value, abs( ap( i ) ) )
191 IF(
lsame( uplo,
'U' ) )
THEN
193 DO 50 i = k, k + j - 1
194 value = max( value, abs( ap( i ) ) )
200 DO 70 i = k, k + n - j
201 value = max( value, abs( ap( i ) ) )
207 ELSE IF( (
lsame( norm,
'O' ) ) .OR. ( norm.EQ.
'1' ) )
THEN
213 udiag =
lsame( diag,
'U' )
214 IF(
lsame( uplo,
'U' ) )
THEN
218 DO 90 i = k, k + j - 2
219 sum = sum + abs( ap( i ) )
223 DO 100 i = k, k + j - 1
224 sum = sum + abs( ap( i ) )
228 value = max( value, sum )
234 DO 120 i = k + 1, k + n - j
235 sum = sum + abs( ap( i ) )
239 DO 130 i = k, k + n - j
240 sum = sum + abs( ap( i ) )
244 value = max( value, sum )
247 ELSE IF(
lsame( norm,
'I' ) )
THEN
252 IF(
lsame( uplo,
'U' ) )
THEN
253 IF(
lsame( diag,
'U' ) )
THEN
259 work( i ) = work( i ) + abs( ap( k ) )
270 work( i ) = work( i ) + abs( ap( k ) )
276 IF(
lsame( diag,
'U' ) )
THEN
283 work( i ) = work( i ) + abs( ap( k ) )
293 work( i ) = work( i ) + abs( ap( k ) )
301 value = max( value, work( i ) )
303 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
307 IF(
lsame( uplo,
'U' ) )
THEN
308 IF(
lsame( diag,
'U' ) )
THEN
313 CALL
zlassq( j-1, ap( k ), 1, scale, sum )
321 CALL
zlassq( j, ap( k ), 1, scale, sum )
326 IF(
lsame( diag,
'U' ) )
THEN
331 CALL
zlassq( n-j, ap( k ), 1, scale, sum )
339 CALL
zlassq( n-j+1, ap( k ), 1, scale, sum )
344 value = scale*sqrt( sum )