00001 DOUBLE PRECISION FUNCTION DLANHS( NORM, N, A, LDA, WORK )
00002
00003
00004
00005
00006
00007
00008
00009 CHARACTER NORM
00010 INTEGER LDA, N
00011
00012
00013 DOUBLE PRECISION A( LDA, * ), WORK( * )
00014
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 DOUBLE PRECISION ONE, ZERO
00067 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )
00068
00069
00070 INTEGER I, J
00071 DOUBLE PRECISION SCALE, SUM, VALUE
00072
00073
00074 EXTERNAL DLASSQ
00075
00076
00077 LOGICAL LSAME
00078 EXTERNAL LSAME
00079
00080
00081 INTRINSIC ABS, MAX, MIN, SQRT
00082
00083
00084
00085 IF( N.EQ.0 ) THEN
00086 VALUE = ZERO
00087 ELSE IF( LSAME( NORM, 'M' ) ) THEN
00088
00089
00090
00091 VALUE = ZERO
00092 DO 20 J = 1, N
00093 DO 10 I = 1, MIN( N, J+1 )
00094 VALUE = MAX( VALUE, ABS( A( I, J ) ) )
00095 10 CONTINUE
00096 20 CONTINUE
00097 ELSE IF( ( LSAME( NORM, 'O' ) ) .OR. ( NORM.EQ.'1' ) ) THEN
00098
00099
00100
00101 VALUE = ZERO
00102 DO 40 J = 1, N
00103 SUM = ZERO
00104 DO 30 I = 1, MIN( N, J+1 )
00105 SUM = SUM + ABS( A( I, J ) )
00106 30 CONTINUE
00107 VALUE = MAX( VALUE, SUM )
00108 40 CONTINUE
00109 ELSE IF( LSAME( NORM, 'I' ) ) THEN
00110
00111
00112
00113 DO 50 I = 1, N
00114 WORK( I ) = ZERO
00115 50 CONTINUE
00116 DO 70 J = 1, N
00117 DO 60 I = 1, MIN( N, J+1 )
00118 WORK( I ) = WORK( I ) + ABS( A( I, J ) )
00119 60 CONTINUE
00120 70 CONTINUE
00121 VALUE = ZERO
00122 DO 80 I = 1, N
00123 VALUE = MAX( VALUE, WORK( I ) )
00124 80 CONTINUE
00125 ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN
00126
00127
00128
00129 SCALE = ZERO
00130 SUM = ONE
00131 DO 90 J = 1, N
00132 CALL DLASSQ( MIN( N, J+1 ), A( 1, J ), 1, SCALE, SUM )
00133 90 CONTINUE
00134 VALUE = SCALE*SQRT( SUM )
00135 END IF
00136
00137 DLANHS = VALUE
00138 RETURN
00139
00140
00141
00142 END