@@ -77,6 +77,7 @@ void NAME(char *UPLO, char *TRANSA, char *TRANSB,
77
77
blasint info ;
78
78
79
79
char transA , transB , Uplo ;
80
+ blasint nrowa , nrowb ;
80
81
IFLOAT * buffer ;
81
82
IFLOAT * aa , * bb ;
82
83
FLOAT * cc ;
@@ -155,22 +156,31 @@ void NAME(char *UPLO, char *TRANSA, char *TRANSB,
155
156
if (Uplo == 'L' )
156
157
uplo = 1 ;
157
158
159
+ nrowa = m ;
160
+ if (transa ) nrowa = k ;
161
+ nrowb = k ;
162
+ if (transb ) nrowb = m ;
163
+
158
164
info = 0 ;
159
165
160
- if (uplo < 0 )
161
- info = 14 ;
162
- if (ldc < m )
166
+ if (ldc < MAX (1 , m ))
163
167
info = 13 ;
168
+ if (ldb < MAX (1 , nrowa ))
169
+ info = 10 ;
170
+ if (lda < MAX (1 , nrowb ))
171
+ info = 8 ;
164
172
if (k < 0 )
165
173
info = 5 ;
166
174
if (m < 0 )
167
- info = 3 ;
175
+ info = 4 ;
168
176
if (transb < 0 )
169
- info = 2 ;
177
+ info = 3 ;
170
178
if (transa < 0 )
179
+ info = 2 ;
180
+ if (uplo < 0 )
171
181
info = 1 ;
172
182
173
- if (info ) {
183
+ if (info != 0 ) {
174
184
BLASFUNC (xerbla ) (ERROR_NAME , & info , sizeof (ERROR_NAME ));
175
185
return ;
176
186
}
@@ -205,11 +215,14 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
205
215
206
216
PRINT_DEBUG_CNAME ;
207
217
218
+ uplo = -1 ;
208
219
transa = -1 ;
209
220
transb = -1 ;
210
221
info = 0 ;
211
222
212
223
if (order == CblasColMajor ) {
224
+ if (Uplo == CblasUpper ) uplo = 0 ;
225
+ if (Uplo == CblasLower ) uplo = 1 ;
213
226
214
227
if (TransA == CblasNoTrans )
215
228
transa = 0 ;
@@ -249,15 +262,27 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
249
262
250
263
info = -1 ;
251
264
252
- if (ldc < m )
265
+ blasint nrowa , nrowb ;
266
+ nrowa = m ;
267
+ if (transa ) nrowa = k ;
268
+ nrowb = k ;
269
+ if (transb ) nrowb = m ;
270
+
271
+ if (ldc < MAX (1 , m ))
253
272
info = 13 ;
273
+ if (ldb < MAX (1 , nrowb ))
274
+ info = 10 ;
275
+ if (lda < MAX (1 , nrowa ))
276
+ info = 8 ;
254
277
if (k < 0 )
255
278
info = 5 ;
256
279
if (m < 0 )
257
- info = 3 ;
280
+ info = 4 ;
258
281
if (transb < 0 )
259
- info = 2 ;
282
+ info = 3 ;
260
283
if (transa < 0 )
284
+ info = 2 ;
285
+ if (uplo < 0 )
261
286
info = 1 ;
262
287
}
263
288
@@ -269,6 +294,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
269
294
lda = LDB ;
270
295
ldb = LDA ;
271
296
297
+ if (Uplo == CblasUpper ) uplo = 0 ;
298
+ if (Uplo == CblasLower ) uplo = 1 ;
299
+
272
300
if (TransB == CblasNoTrans )
273
301
transa = 0 ;
274
302
if (TransB == CblasTrans )
@@ -302,27 +330,30 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
302
330
303
331
info = -1 ;
304
332
305
- if (ldc < m )
333
+ blasint ncola , ncolb ;
334
+ ncola = k ;
335
+ if (transa ) ncola = m ;
336
+ ncolb = m ;
337
+ if (transb ) ncolb = k ;
338
+
339
+ if (ldc < MAX (1 ,m ))
306
340
info = 13 ;
341
+ if (ldb < MAX (1 , ncolb ))
342
+ info = 10 ;
343
+ if (lda < MAX (1 , ncola ))
344
+ info = 8 ;
307
345
if (k < 0 )
308
346
info = 5 ;
309
347
if (m < 0 )
310
- info = 3 ;
348
+ info = 4 ;
311
349
if (transb < 0 )
312
- info = 2 ;
350
+ info = 3 ;
313
351
if (transa < 0 )
352
+ info = 2 ;
353
+ if (uplo < 0 )
314
354
info = 1 ;
315
-
316
355
}
317
356
318
- uplo = -1 ;
319
- if (Uplo == CblasUpper )
320
- uplo = 0 ;
321
- if (Uplo == CblasLower )
322
- uplo = 1 ;
323
- if (uplo < 0 )
324
- info = 14 ;
325
-
326
357
if (info >= 0 ) {
327
358
BLASFUNC (xerbla ) (ERROR_NAME , & info , sizeof (ERROR_NAME ));
328
359
return ;
0 commit comments