114 DOUBLE PRECISION FUNCTION zlansp( NORM, UPLO, N, AP, WORK )
126 DOUBLE PRECISION work( * )
133 DOUBLE PRECISION one, zero
134 parameter( one = 1.0d+0, zero = 0.0d+0 )
138 DOUBLE PRECISION absa, sum, value
141 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
151 INTRINSIC abs, dble, dimag, sqrt
157 ELSE IF(
lsame( norm,
'M' ) )
THEN
162 IF(
lsame( uplo,
'U' ) )
THEN
165 DO 10 i = k, k + j - 1
167 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
174 DO 30 i = k, k + n - j
176 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
181 ELSE IF( (
lsame( norm,
'I' ) ) .OR. (
lsame( norm,
'O' ) ) .OR.
182 $ ( norm.EQ.
'1' ) )
THEN
188 IF(
lsame( uplo,
'U' ) )
THEN
192 absa = abs( ap( k ) )
194 work( i ) = work( i ) + absa
197 work( j ) = sum + abs( ap( k ) )
202 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
209 sum = work( j ) + abs( ap( k ) )
212 absa = abs( ap( k ) )
214 work( i ) = work( i ) + absa
217 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
220 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
233 IF(
lsame( uplo,
'U' ) )
THEN
237 CALL zlassq( j-1, ap( k ), 1, colssq( 1 ), colssq( 2 ) )
245 CALL zlassq( n-j, ap( k ), 1, colssq( 1 ), colssq( 2 ) )
250 ssq( 2 ) = 2*ssq( 2 )
258 IF( dble( ap( k ) ).NE.zero )
THEN
259 absa = abs( dble( ap( k ) ) )
260 IF( colssq( 1 ).LT.absa )
THEN
261 colssq( 2 ) = one + colssq(2)*( colssq(1) / absa )**2
264 colssq( 2 ) = colssq( 2 ) + ( absa / colssq( 1 ) )**2
267 IF( dimag( ap( k ) ).NE.zero )
THEN
268 absa = abs( dimag( ap( k ) ) )
269 IF( colssq( 1 ).LT.absa )
THEN
270 colssq( 2 ) = one + colssq(2)*( colssq(1) / absa )**2
273 colssq( 2 ) = colssq( 2 ) + ( absa / colssq( 1 ) )**2
276 IF(
lsame( uplo,
'U' ) )
THEN
283 VALUE = ssq( 1 )*sqrt( ssq( 2 ) )
logical function disnan(DIN)
DISNAN tests input for NaN.
subroutine dcombssq(V1, V2)
DCOMBSSQ adds two scaled sum of squares quantities.
logical function lsame(CA, CB)
LSAME
double precision function zlansp(NORM, UPLO, N, AP, WORK)
ZLANSP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine zlassq(N, X, INCX, SCALE, SUMSQ)
ZLASSQ updates a sum of squares represented in scaled form.