Go to the documentation of this file.00001 DOUBLE PRECISION FUNCTION ZLANHS( NORM, N, A, LDA, WORK )
00002
00003
00004
00005
00006
00007
00008
00009 CHARACTER NORM
00010 INTEGER LDA, N
00011
00012
00013 DOUBLE PRECISION WORK( * )
00014 COMPLEX*16 A( LDA, * )
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 DOUBLE PRECISION ONE, ZERO
00068 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
00069
00070
00071 INTEGER I, J
00072 DOUBLE PRECISION SCALE, SUM, VALUE
00073
00074
00075 LOGICAL LSAME
00076 EXTERNAL LSAME
00077
00078
00079 EXTERNAL ZLASSQ
00080
00081
00082 INTRINSIC ABS, MAX, MIN, SQRT
00083
00084
00085
00086 IF( N.EQ.0 ) THEN
00087 VALUE = ZERO
00088 ELSE IF( LSAME( NORM, 'M' ) ) THEN
00089
00090
00091
00092 VALUE = ZERO
00093 DO 20 J = 1, N
00094 DO 10 I = 1, MIN( N, J+1 )
00095 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
00096 10 CONTINUE
00097 20 CONTINUE
00098 ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
00099
00100
00101
00102 VALUE = ZERO
00103 DO 40 J = 1, N
00104 SUM = ZERO
00105 DO 30 I = 1, MIN( N, J+1 )
00106 SUM = SUM + ABS( A( I, J ) )
00107 30 CONTINUE
00108 VALUE = MAX( VALUE, SUM )
00109 40 CONTINUE
00110 ELSE IF( LSAME( NORM, 'I' ) ) THEN
00111
00112
00113
00114 DO 50 I = 1, N
00115 WORK( I ) = ZERO
00116 50 CONTINUE
00117 DO 70 J = 1, N
00118 DO 60 I = 1, MIN( N, J+1 )
00119 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
00120 60 CONTINUE
00121 70 CONTINUE
00122 VALUE = ZERO
00123 DO 80 I = 1, N
00124 VALUE = MAX( VALUE, WORK( I ) )
00125 80 CONTINUE
00126 ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
00127
00128
00129
00130 SCALE = ZERO
00131 SUM = ONE
00132 DO 90 J = 1, N
00133 CALL ZLASSQ( MIN( N, J+1 ), A( 1, J ), 1, SCALE, SUM )
00134 90 CONTINUE
00135 VALUE = SCALE*SQRT( SUM )
00136 END IF
00137
00138 ZLANHS = VALUE
00139 RETURN
00140
00141
00142
00143 END