2
3
4
5
6
7
8
9 INTEGER LDA, LDB, M, N
10 COMPLEX*16 ALPHA, BETA
11
12
13 COMPLEX*16 A( LDA, * ), B( LDB, * )
14
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 COMPLEX*16 ONE, ZERO
70 parameter( one = ( 1.0d+0, 0.0d+0 ),
71 $ zero = ( 0.0d+0, 0.0d+0 ) )
72
73
74 INTEGER I, J
75
76
77 EXTERNAL zaxpy, zcopy, zscal
78
79
80
81 IF( m.GE.n ) THEN
82 IF( alpha.EQ.one ) THEN
83 IF( beta.EQ.zero ) THEN
84 DO 20 j = 1, n
85 CALL zcopy( m, a( 1, j ), 1, b( j, 1 ), ldb )
86
87
88
89 20 CONTINUE
90 ELSE IF( beta.NE.one ) THEN
91 DO 40 j = 1, n
92 DO 30 i = 1, m
93 b( j, i ) = a( i, j ) + beta * b( j, i )
94 30 CONTINUE
95 40 CONTINUE
96 ELSE
97 DO 60 j = 1, n
98 CALL zaxpy( m, one, a( 1, j ), 1, b( j, 1 ), ldb )
99
100
101
102 60 CONTINUE
103 END IF
104 ELSE IF( alpha.NE.zero ) THEN
105 IF( beta.EQ.zero ) THEN
106 DO 80 j = 1, n
107 DO 70 i = 1, m
108 b( j, i ) = alpha * a( i, j )
109 70 CONTINUE
110 80 CONTINUE
111 ELSE IF( beta.NE.one ) THEN
112 DO 100 j = 1, n
113 DO 90 i = 1, m
114 b( j, i ) = alpha * a( i, j ) + beta * b( j, i )
115 90 CONTINUE
116 100 CONTINUE
117 ELSE
118 DO 120 j = 1, n
119 CALL zaxpy( m, alpha, a( 1, j ), 1, b( j, 1 ), ldb )
120
121
122
123 120 CONTINUE
124 END IF
125 ELSE
126 IF( beta.EQ.zero ) THEN
127 DO 140 j = 1, m
128 DO 130 i = 1, n
129 b( i, j ) = zero
130 130 CONTINUE
131 140 CONTINUE
132 ELSE IF( beta.NE.one ) THEN
133 DO 160 j = 1, m
134 CALL zscal( n, beta, b( 1, j ), 1 )
135
136
137
138 160 CONTINUE
139 END IF
140 END IF
141 ELSE
142 IF( alpha.EQ.one ) THEN
143 IF( beta.EQ.zero ) THEN
144 DO 180 j = 1, m
145 CALL zcopy( n, a( j, 1 ), lda, b( 1, j ), 1 )
146
147
148
149 180 CONTINUE
150 ELSE IF( beta.NE.one ) THEN
151 DO 200 j = 1, m
152 DO 190 i = 1, n
153 b( i, j ) = a( j, i ) + beta * b( i, j )
154 190 CONTINUE
155 200 CONTINUE
156 ELSE
157 DO 220 j = 1, m
158 CALL zaxpy( n, one, a( j, 1 ), lda, b( 1, j ), 1 )
159
160
161
162 220 CONTINUE
163 END IF
164 ELSE IF( alpha.NE.zero ) THEN
165 IF( beta.EQ.zero ) THEN
166 DO 240 j = 1, m
167 DO 230 i = 1, n
168 b( i, j ) = alpha * a( j, i )
169 230 CONTINUE
170 240 CONTINUE
171 ELSE IF( beta.NE.one ) THEN
172 DO 260 j = 1, m
173 DO 250 i = 1, n
174 b( i, j ) = alpha * a( j, i ) + beta * b( i, j )
175 250 CONTINUE
176 260 CONTINUE
177 ELSE
178 DO 280 j = 1, m
179 CALL zaxpy( n, alpha, a( j, 1 ), lda, b( 1, j ), 1 )
180
181
182
183 280 CONTINUE
184 END IF
185 ELSE
186 IF( beta.EQ.zero ) THEN
187 DO 300 j = 1, m
188 DO 290 i = 1, n
189 b( i, j ) = zero
190 290 CONTINUE
191 300 CONTINUE
192 ELSE IF( beta.NE.one ) THEN
193 DO 320 j = 1, m
194 CALL zscal( n, beta, b( 1, j ), 1 )
195
196
197
198 320 CONTINUE
199 END IF
200 END IF
201 END IF
202
203 RETURN
204
205
206