122 DOUBLE PRECISION FUNCTION zlansy( NORM, UPLO, N, A, LDA, WORK )
134 DOUBLE PRECISION work( * )
135 COMPLEX*16 a( lda, * )
141 DOUBLE PRECISION one, zero
142 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 DOUBLE PRECISION absa, sum, value
149 DOUBLE PRECISION ssq( 2 ), colssq( 2 )
165 ELSE IF(
lsame( norm,
'M' ) )
THEN
170 IF(
lsame( uplo,
'U' ) )
THEN
173 sum = abs( a( i, j ) )
174 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
180 sum = abs( a( i, j ) )
181 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
185 ELSE IF( (
lsame( norm,
'I' ) ) .OR. (
lsame( norm,
'O' ) ) .OR.
186 $ ( norm.EQ.
'1' ) )
THEN
191 IF(
lsame( uplo,
'U' ) )
THEN
195 absa = abs( a( i, j ) )
197 work( i ) = work( i ) + absa
199 work( j ) = sum + abs( a( j, j ) )
203 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
210 sum = work( j ) + abs( a( j, j ) )
212 absa = abs( a( i, j ) )
214 work( i ) = work( i ) + absa
216 IF(
VALUE .LT. sum .OR.
disnan( sum ) )
VALUE = sum
219 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
231 IF(
lsame( uplo,
'U' ) )
THEN
235 CALL zlassq( j-1, a( 1, j ), 1, colssq(1), colssq(2) )
242 CALL zlassq( n-j, a( j+1, j ), 1, colssq(1), colssq(2) )
246 ssq( 2 ) = 2*ssq( 2 )
252 CALL zlassq( n, a, lda+1, colssq( 1 ), colssq( 2 ) )
254 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
subroutine zlassq(N, X, INCX, SCALE, SUMSQ)
ZLASSQ updates a sum of squares represented in scaled form.
double precision function zlansy(NORM, UPLO, N, A, LDA, WORK)
ZLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...