2
3
4
5
6
7
8
9 CHARACTER*1 UPLO
10 INTEGER INCX, LDA, N
11 COMPLEX*16 ALPHA
12
13
14 COMPLEX*16 A( LDA, * ), X( * )
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 COMPLEX*16 ZERO
77 parameter( zero = ( 0.0d+0, 0.0d+0 ) )
78
79
80 INTEGER I, INFO, IX, J, JX, KX
81 COMPLEX*16 TEMP
82
83
84 LOGICAL LSAME
86
87
88 EXTERNAL xerbla
89
90
92
93
94
95
96
97 info = 0
98 IF( .NOT.
lsame( uplo,
'U' ) .AND. .NOT.
lsame( uplo,
'L' ) )
THEN
99 info = 1
100 ELSE IF( n.LT.0 ) THEN
101 info = 2
102 ELSE IF( incx.EQ.0 ) THEN
103 info = 5
104 ELSE IF( lda.LT.
max( 1, n ) )
THEN
105 info = 7
106 END IF
107 IF( info.NE.0 ) THEN
108 CALL xerbla( 'ZSYR', info )
109 RETURN
110 END IF
111
112
113
114 IF( ( n.EQ.0 ) .OR. ( alpha.EQ.zero ) )
115 $ RETURN
116
117
118
119 kx = 1
120 IF( incx.LE.0 ) THEN
121 kx = 1 - ( n-1 )*incx
122 ELSE IF( incx.NE.1 ) THEN
123 kx = 1
124 END IF
125
126
127
128
129
130 IF(
lsame( uplo,
'U' ) )
THEN
131
132
133
134 IF( incx.EQ.1 ) THEN
135 DO 20 j = 1, n
136 IF( x( j ).NE.zero ) THEN
137 temp = alpha*x( j )
138 DO 10 i = 1, j
139 a( i, j ) = a( i, j ) + x( i )*temp
140 10 CONTINUE
141 END IF
142 20 CONTINUE
143 ELSE
144 jx = kx
145 DO 40 j = 1, n
146 IF( x( jx ).NE.zero ) THEN
147 temp = alpha*x( jx )
148 ix = kx
149 DO 30 i = 1, j
150 a( i, j ) = a( i, j ) + x( ix )*temp
151 ix = ix + incx
152 30 CONTINUE
153 END IF
154 jx = jx + incx
155 40 CONTINUE
156 END IF
157 ELSE
158
159
160
161 IF( incx.EQ.1 ) THEN
162 DO 60 j = 1, n
163 IF( x( j ).NE.zero ) THEN
164 temp = alpha*x( j )
165 DO 50 i = j, n
166 a( i, j ) = a( i, j ) + x( i )*temp
167 50 CONTINUE
168 END IF
169 60 CONTINUE
170 ELSE
171 jx = kx
172 DO 80 j = 1, n
173 IF( x( jx ).NE.zero ) THEN
174 temp = alpha*x( jx )
175 ix = jx
176 DO 70 i = j, n
177 a( i, j ) = a( i, j ) + x( ix )*temp
178 ix = ix + incx
179 70 CONTINUE
180 END IF
181 jx = jx + incx
182 80 CONTINUE
183 END IF
184 END IF
185
186 RETURN
187
188
189