Skip to content

Commit 7f234f8

Browse files
committed
added GEMM3M tests
1 parent 9e829ce commit 7f234f8

14 files changed

Lines changed: 6307 additions & 32 deletions

File tree

cblas.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLA
245245
OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc);
246246
void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
247247
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
248+
void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
249+
OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc);
250+
248251

249252
void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N,
250253
OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);

ctest/Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,18 @@ else
7474
OPENBLAS_NUM_THREADS=2 ./xzcblat3 < zin3
7575
endif
7676

77+
all3_3m: xzcblat3_3m xccblat3_3m
78+
ifeq ($(USE_OPENMP), 1)
79+
OMP_NUM_THREADS=2 ./xccblat3_3m < cin3_3m
80+
OMP_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m
81+
else
82+
OPENBLAS_NUM_THREADS=2 ./xccblat3_3m < cin3_3m
83+
OPENBLAS_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m
84+
endif
85+
86+
87+
88+
7789
clean ::
7890
rm -f x*
7991

@@ -103,6 +115,9 @@ xccblat2: $(ctestl2o) c_cblat2.o $(TOPDIR)/$(LIBNAME)
103115
xccblat3: $(ctestl3o) c_cblat3.o $(TOPDIR)/$(LIBNAME)
104116
$(FC) $(FLDFLAGS) -o xccblat3 c_cblat3.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
105117

118+
xccblat3_3m: $(ctestl3o) c_cblat3_3m.o $(TOPDIR)/$(LIBNAME)
119+
$(FC) $(FLDFLAGS) -o xccblat3_3m c_cblat3_3m.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
120+
106121
# Double complex
107122
xzcblat1: $(ztestl1o) c_zblat1.o $(TOPDIR)/$(LIBNAME)
108123
$(FC) $(FLDFLAGS) -o xzcblat1 c_zblat1.o $(ztestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
@@ -111,4 +126,9 @@ xzcblat2: $(ztestl2o) c_zblat2.o $(TOPDIR)/$(LIBNAME)
111126
xzcblat3: $(ztestl3o) c_zblat3.o $(TOPDIR)/$(LIBNAME)
112127
$(FC) $(FLDFLAGS) -o xzcblat3 c_zblat3.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
113128

129+
130+
xzcblat3_3m: $(ztestl3o) c_zblat3_3m.o $(TOPDIR)/$(LIBNAME)
131+
$(FC) $(FLDFLAGS) -o xzcblat3_3m c_zblat3_3m.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
132+
133+
114134
include $(TOPDIR)/Makefile.tail

ctest/c_c3chke.c

Lines changed: 232 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,238 @@ void F77_c3chke(char * rout) {
4545
F77_xerbla(cblas_rout,&cblas_info);
4646
}
4747

48-
if (strncmp( sf,"cblas_cgemm" ,11)==0) {
49-
cblas_rout = "cblas_cgemm" ;
48+
49+
if (strncmp( sf,"cblas_cgemm3m" ,13)==0) {
50+
cblas_rout = "cblas_cgemm3" ;
51+
52+
cblas_info = 1;
53+
cblas_cgemm3m( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0,
54+
ALPHA, A, 1, B, 1, BETA, C, 1 );
55+
chkxer();
56+
cblas_info = 1;
57+
cblas_cgemm3m( INVALID, CblasNoTrans, CblasTrans, 0, 0, 0,
58+
ALPHA, A, 1, B, 1, BETA, C, 1 );
59+
chkxer();
60+
cblas_info = 1;
61+
cblas_cgemm3m( INVALID, CblasTrans, CblasNoTrans, 0, 0, 0,
62+
ALPHA, A, 1, B, 1, BETA, C, 1 );
63+
chkxer();
64+
cblas_info = 1;
65+
cblas_cgemm3m( INVALID, CblasTrans, CblasTrans, 0, 0, 0,
66+
ALPHA, A, 1, B, 1, BETA, C, 1 );
67+
chkxer();
68+
cblas_info = 2; RowMajorStrg = FALSE;
69+
cblas_cgemm3m( CblasColMajor, INVALID, CblasNoTrans, 0, 0, 0,
70+
ALPHA, A, 1, B, 1, BETA, C, 1 );
71+
chkxer();
72+
cblas_info = 2; RowMajorStrg = FALSE;
73+
cblas_cgemm3m( CblasColMajor, INVALID, CblasTrans, 0, 0, 0,
74+
ALPHA, A, 1, B, 1, BETA, C, 1 );
75+
chkxer();
76+
cblas_info = 3; RowMajorStrg = FALSE;
77+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, INVALID, 0, 0, 0,
78+
ALPHA, A, 1, B, 1, BETA, C, 1 );
79+
chkxer();
80+
cblas_info = 3; RowMajorStrg = FALSE;
81+
cblas_cgemm3m( CblasColMajor, CblasTrans, INVALID, 0, 0, 0,
82+
ALPHA, A, 1, B, 1, BETA, C, 1 );
83+
chkxer();
84+
cblas_info = 4; RowMajorStrg = FALSE;
85+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0,
86+
ALPHA, A, 1, B, 1, BETA, C, 1 );
87+
chkxer();
88+
cblas_info = 4; RowMajorStrg = FALSE;
89+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0,
90+
ALPHA, A, 1, B, 1, BETA, C, 1 );
91+
chkxer();
92+
cblas_info = 4; RowMajorStrg = FALSE;
93+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0,
94+
ALPHA, A, 1, B, 1, BETA, C, 1 );
95+
chkxer();
96+
cblas_info = 4; RowMajorStrg = FALSE;
97+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, INVALID, 0, 0,
98+
ALPHA, A, 1, B, 1, BETA, C, 1 );
99+
chkxer();
100+
cblas_info = 5; RowMajorStrg = FALSE;
101+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0,
102+
ALPHA, A, 1, B, 1, BETA, C, 1 );
103+
chkxer();
104+
cblas_info = 5; RowMajorStrg = FALSE;
105+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0,
106+
ALPHA, A, 1, B, 1, BETA, C, 1 );
107+
chkxer();
108+
cblas_info = 5; RowMajorStrg = FALSE;
109+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0,
110+
ALPHA, A, 1, B, 1, BETA, C, 1 );
111+
chkxer();
112+
cblas_info = 5; RowMajorStrg = FALSE;
113+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, INVALID, 0,
114+
ALPHA, A, 1, B, 1, BETA, C, 1 );
115+
chkxer();
116+
cblas_info = 6; RowMajorStrg = FALSE;
117+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID,
118+
ALPHA, A, 1, B, 1, BETA, C, 1 );
119+
chkxer();
120+
cblas_info = 6; RowMajorStrg = FALSE;
121+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID,
122+
ALPHA, A, 1, B, 1, BETA, C, 1 );
123+
chkxer();
124+
cblas_info = 6; RowMajorStrg = FALSE;
125+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID,
126+
ALPHA, A, 1, B, 1, BETA, C, 1 );
127+
chkxer();
128+
cblas_info = 6; RowMajorStrg = FALSE;
129+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, INVALID,
130+
ALPHA, A, 1, B, 1, BETA, C, 1 );
131+
chkxer();
132+
cblas_info = 9; RowMajorStrg = FALSE;
133+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0,
134+
ALPHA, A, 1, B, 1, BETA, C, 2 );
135+
chkxer();
136+
cblas_info = 9; RowMajorStrg = FALSE;
137+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0,
138+
ALPHA, A, 1, B, 1, BETA, C, 2 );
139+
chkxer();
140+
cblas_info = 9; RowMajorStrg = FALSE;
141+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2,
142+
ALPHA, A, 1, B, 2, BETA, C, 1 );
143+
chkxer();
144+
cblas_info = 9; RowMajorStrg = FALSE;
145+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, 2,
146+
ALPHA, A, 1, B, 1, BETA, C, 1 );
147+
chkxer();
148+
cblas_info = 11; RowMajorStrg = FALSE;
149+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2,
150+
ALPHA, A, 1, B, 1, BETA, C, 1 );
151+
chkxer();
152+
cblas_info = 11; RowMajorStrg = FALSE;
153+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2,
154+
ALPHA, A, 2, B, 1, BETA, C, 1 );
155+
chkxer();
156+
cblas_info = 11; RowMajorStrg = FALSE;
157+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 2, 0,
158+
ALPHA, A, 1, B, 1, BETA, C, 1 );
159+
chkxer();
160+
cblas_info = 11; RowMajorStrg = FALSE;
161+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 2, 0,
162+
ALPHA, A, 1, B, 1, BETA, C, 1 );
163+
chkxer();
164+
cblas_info = 14; RowMajorStrg = FALSE;
165+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0,
166+
ALPHA, A, 2, B, 1, BETA, C, 1 );
167+
chkxer();
168+
cblas_info = 14; RowMajorStrg = FALSE;
169+
cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0,
170+
ALPHA, A, 2, B, 1, BETA, C, 1 );
171+
chkxer();
172+
cblas_info = 14; RowMajorStrg = FALSE;
173+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 2, 0, 0,
174+
ALPHA, A, 1, B, 1, BETA, C, 1 );
175+
chkxer();
176+
cblas_info = 14; RowMajorStrg = FALSE;
177+
cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 2, 0, 0,
178+
ALPHA, A, 1, B, 1, BETA, C, 1 );
179+
chkxer();
180+
cblas_info = 4; RowMajorStrg = TRUE;
181+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0,
182+
ALPHA, A, 1, B, 1, BETA, C, 1 );
183+
chkxer();
184+
cblas_info = 4; RowMajorStrg = TRUE;
185+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0,
186+
ALPHA, A, 1, B, 1, BETA, C, 1 );
187+
chkxer();
188+
cblas_info = 4; RowMajorStrg = TRUE;
189+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0,
190+
ALPHA, A, 1, B, 1, BETA, C, 1 );
191+
chkxer();
192+
cblas_info = 4; RowMajorStrg = TRUE;
193+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, INVALID, 0, 0,
194+
ALPHA, A, 1, B, 1, BETA, C, 1 );
195+
chkxer();
196+
cblas_info = 5; RowMajorStrg = TRUE;
197+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0,
198+
ALPHA, A, 1, B, 1, BETA, C, 1 );
199+
chkxer();
200+
cblas_info = 5; RowMajorStrg = TRUE;
201+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0,
202+
ALPHA, A, 1, B, 1, BETA, C, 1 );
203+
chkxer();
204+
cblas_info = 5; RowMajorStrg = TRUE;
205+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0,
206+
ALPHA, A, 1, B, 1, BETA, C, 1 );
207+
chkxer();
208+
cblas_info = 5; RowMajorStrg = TRUE;
209+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, INVALID, 0,
210+
ALPHA, A, 1, B, 1, BETA, C, 1 );
211+
chkxer();
212+
cblas_info = 6; RowMajorStrg = TRUE;
213+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID,
214+
ALPHA, A, 1, B, 1, BETA, C, 1 );
215+
chkxer();
216+
cblas_info = 6; RowMajorStrg = TRUE;
217+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID,
218+
ALPHA, A, 1, B, 1, BETA, C, 1 );
219+
chkxer();
220+
cblas_info = 6; RowMajorStrg = TRUE;
221+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID,
222+
ALPHA, A, 1, B, 1, BETA, C, 1 );
223+
chkxer();
224+
cblas_info = 6; RowMajorStrg = TRUE;
225+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, INVALID,
226+
ALPHA, A, 1, B, 1, BETA, C, 1 );
227+
chkxer();
228+
cblas_info = 9; RowMajorStrg = TRUE;
229+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2,
230+
ALPHA, A, 1, B, 1, BETA, C, 2 );
231+
chkxer();
232+
cblas_info = 9; RowMajorStrg = TRUE;
233+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2,
234+
ALPHA, A, 1, B, 2, BETA, C, 2 );
235+
chkxer();
236+
cblas_info = 9; RowMajorStrg = TRUE;
237+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 2, 0, 0,
238+
ALPHA, A, 1, B, 2, BETA, C, 1 );
239+
chkxer();
240+
cblas_info = 9; RowMajorStrg = TRUE;
241+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 2, 0, 0,
242+
ALPHA, A, 1, B, 1, BETA, C, 1 );
243+
chkxer();
244+
cblas_info = 11; RowMajorStrg = TRUE;
245+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0,
246+
ALPHA, A, 1, B, 1, BETA, C, 1 );
247+
chkxer();
248+
cblas_info = 11; RowMajorStrg = TRUE;
249+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0,
250+
ALPHA, A, 2, B, 1, BETA, C, 1 );
251+
chkxer();
252+
cblas_info = 11; RowMajorStrg = TRUE;
253+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2,
254+
ALPHA, A, 2, B, 1, BETA, C, 1 );
255+
chkxer();
256+
cblas_info = 11; RowMajorStrg = TRUE;
257+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, 2,
258+
ALPHA, A, 1, B, 1, BETA, C, 1 );
259+
chkxer();
260+
cblas_info = 14; RowMajorStrg = TRUE;
261+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0,
262+
ALPHA, A, 1, B, 2, BETA, C, 1 );
263+
chkxer();
264+
cblas_info = 14; RowMajorStrg = TRUE;
265+
cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 2, 0,
266+
ALPHA, A, 1, B, 1, BETA, C, 1 );
267+
chkxer();
268+
cblas_info = 14; RowMajorStrg = TRUE;
269+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0,
270+
ALPHA, A, 1, B, 2, BETA, C, 1 );
271+
chkxer();
272+
cblas_info = 14; RowMajorStrg = TRUE;
273+
cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 2, 0,
274+
ALPHA, A, 1, B, 1, BETA, C, 1 );
275+
chkxer();
276+
277+
} else if (strncmp( sf,"cblas_cgemm" ,11)==0) {
278+
cblas_rout = "cblas_cgemm" ;
279+
50280

51281
cblas_info = 1;
52282
cblas_cgemm( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0,

ctest/c_cblas3.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ void F77_cgemm(int *order, char *transpa, char *transpb, int *m, int *n,
8888
cblas_cgemm( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda,
8989
b, *ldb, beta, c, *ldc );
9090
}
91+
9192
void F77_chemm(int *order, char *rtlf, char *uplow, int *m, int *n,
9293
CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda,
9394
CBLAS_TEST_COMPLEX *b, int *ldb, CBLAS_TEST_COMPLEX *beta,
@@ -563,3 +564,84 @@ void F77_ctrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn,
563564
cblas_ctrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha,
564565
a, *lda, b, *ldb);
565566
}
567+
568+
569+
570+
void F77_cgemm3m(int *order, char *transpa, char *transpb, int *m, int *n,
571+
int *k, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda,
572+
CBLAS_TEST_COMPLEX *b, int *ldb, CBLAS_TEST_COMPLEX *beta,
573+
CBLAS_TEST_COMPLEX *c, int *ldc ) {
574+
575+
CBLAS_TEST_COMPLEX *A, *B, *C;
576+
int i,j,LDA, LDB, LDC;
577+
enum CBLAS_TRANSPOSE transa, transb;
578+
579+
get_transpose_type(transpa, &transa);
580+
get_transpose_type(transpb, &transb);
581+
582+
if (*order == TEST_ROW_MJR) {
583+
if (transa == CblasNoTrans) {
584+
LDA = *k+1;
585+
A=(CBLAS_TEST_COMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX));
586+
for( i=0; i<*m; i++ )
587+
for( j=0; j<*k; j++ ) {
588+
A[i*LDA+j].real=a[j*(*lda)+i].real;
589+
A[i*LDA+j].imag=a[j*(*lda)+i].imag;
590+
}
591+
}
592+
else {
593+
LDA = *m+1;
594+
A=(CBLAS_TEST_COMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_COMPLEX));
595+
for( i=0; i<*k; i++ )
596+
for( j=0; j<*m; j++ ) {
597+
A[i*LDA+j].real=a[j*(*lda)+i].real;
598+
A[i*LDA+j].imag=a[j*(*lda)+i].imag;
599+
}
600+
}
601+
602+
if (transb == CblasNoTrans) {
603+
LDB = *n+1;
604+
B=(CBLAS_TEST_COMPLEX* )malloc((*k)*LDB*sizeof(CBLAS_TEST_COMPLEX) );
605+
for( i=0; i<*k; i++ )
606+
for( j=0; j<*n; j++ ) {
607+
B[i*LDB+j].real=b[j*(*ldb)+i].real;
608+
B[i*LDB+j].imag=b[j*(*ldb)+i].imag;
609+
}
610+
}
611+
else {
612+
LDB = *k+1;
613+
B=(CBLAS_TEST_COMPLEX* )malloc(LDB*(*n)*sizeof(CBLAS_TEST_COMPLEX));
614+
for( i=0; i<*n; i++ )
615+
for( j=0; j<*k; j++ ) {
616+
B[i*LDB+j].real=b[j*(*ldb)+i].real;
617+
B[i*LDB+j].imag=b[j*(*ldb)+i].imag;
618+
}
619+
}
620+
621+
LDC = *n+1;
622+
C=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_COMPLEX));
623+
for( j=0; j<*n; j++ )
624+
for( i=0; i<*m; i++ ) {
625+
C[i*LDC+j].real=c[j*(*ldc)+i].real;
626+
C[i*LDC+j].imag=c[j*(*ldc)+i].imag;
627+
}
628+
cblas_cgemm3m( CblasRowMajor, transa, transb, *m, *n, *k, alpha, A, LDA,
629+
B, LDB, beta, C, LDC );
630+
for( j=0; j<*n; j++ )
631+
for( i=0; i<*m; i++ ) {
632+
c[j*(*ldc)+i].real=C[i*LDC+j].real;
633+
c[j*(*ldc)+i].imag=C[i*LDC+j].imag;
634+
}
635+
free(A);
636+
free(B);
637+
free(C);
638+
}
639+
else if (*order == TEST_COL_MJR)
640+
cblas_cgemm3m( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda,
641+
b, *ldb, beta, c, *ldc );
642+
else
643+
cblas_cgemm3m( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda,
644+
b, *ldb, beta, c, *ldc );
645+
}
646+
647+

0 commit comments

Comments
 (0)