| @@ -245,6 +245,9 @@ void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLA | |||
| 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); | |||
| 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, | |||
| 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); | |||
| 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, | |||
| 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); | |||
| 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, | |||
| 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); | |||
| @@ -74,6 +74,18 @@ else | |||
| OPENBLAS_NUM_THREADS=2 ./xzcblat3 < zin3 | |||
| endif | |||
| all3_3m: xzcblat3_3m xccblat3_3m | |||
| ifeq ($(USE_OPENMP), 1) | |||
| OMP_NUM_THREADS=2 ./xccblat3_3m < cin3_3m | |||
| OMP_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m | |||
| else | |||
| OPENBLAS_NUM_THREADS=2 ./xccblat3_3m < cin3_3m | |||
| OPENBLAS_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m | |||
| endif | |||
| clean :: | |||
| rm -f x* | |||
| @@ -103,6 +115,9 @@ xccblat2: $(ctestl2o) c_cblat2.o $(TOPDIR)/$(LIBNAME) | |||
| xccblat3: $(ctestl3o) c_cblat3.o $(TOPDIR)/$(LIBNAME) | |||
| $(FC) $(FLDFLAGS) -o xccblat3 c_cblat3.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB) | |||
| xccblat3_3m: $(ctestl3o) c_cblat3_3m.o $(TOPDIR)/$(LIBNAME) | |||
| $(FC) $(FLDFLAGS) -o xccblat3_3m c_cblat3_3m.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB) | |||
| # Double complex | |||
| xzcblat1: $(ztestl1o) c_zblat1.o $(TOPDIR)/$(LIBNAME) | |||
| $(FC) $(FLDFLAGS) -o xzcblat1 c_zblat1.o $(ztestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB) | |||
| @@ -111,4 +126,9 @@ xzcblat2: $(ztestl2o) c_zblat2.o $(TOPDIR)/$(LIBNAME) | |||
| xzcblat3: $(ztestl3o) c_zblat3.o $(TOPDIR)/$(LIBNAME) | |||
| $(FC) $(FLDFLAGS) -o xzcblat3 c_zblat3.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB) | |||
| xzcblat3_3m: $(ztestl3o) c_zblat3_3m.o $(TOPDIR)/$(LIBNAME) | |||
| $(FC) $(FLDFLAGS) -o xzcblat3_3m c_zblat3_3m.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB) | |||
| include $(TOPDIR)/Makefile.tail | |||
| @@ -45,8 +45,238 @@ void F77_c3chke(char * rout) { | |||
| F77_xerbla(cblas_rout,&cblas_info); | |||
| } | |||
| if (strncmp( sf,"cblas_cgemm" ,11)==0) { | |||
| cblas_rout = "cblas_cgemm" ; | |||
| if (strncmp( sf,"cblas_cgemm3m" ,13)==0) { | |||
| cblas_rout = "cblas_cgemm3" ; | |||
| cblas_info = 1; | |||
| cblas_cgemm3m( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_cgemm3m( INVALID, CblasNoTrans, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_cgemm3m( INVALID, CblasTrans, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_cgemm3m( INVALID, CblasTrans, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 2; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, INVALID, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 2; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, INVALID, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 3; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, INVALID, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 3; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, INVALID, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_cgemm3m( CblasColMajor, CblasTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 2, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_cgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| } else if (strncmp( sf,"cblas_cgemm" ,11)==0) { | |||
| cblas_rout = "cblas_cgemm" ; | |||
| cblas_info = 1; | |||
| cblas_cgemm( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0, | |||
| @@ -88,6 +88,7 @@ void F77_cgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||
| cblas_cgemm( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda, | |||
| b, *ldb, beta, c, *ldc ); | |||
| } | |||
| void F77_chemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | |||
| 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, | |||
| cblas_ctrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | |||
| a, *lda, b, *ldb); | |||
| } | |||
| void F77_cgemm3m(int *order, char *transpa, char *transpb, int *m, int *n, | |||
| int *k, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | |||
| CBLAS_TEST_COMPLEX *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | |||
| CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||
| CBLAS_TEST_COMPLEX *A, *B, *C; | |||
| int i,j,LDA, LDB, LDC; | |||
| enum CBLAS_TRANSPOSE transa, transb; | |||
| get_transpose_type(transpa, &transa); | |||
| get_transpose_type(transpb, &transb); | |||
| if (*order == TEST_ROW_MJR) { | |||
| if (transa == CblasNoTrans) { | |||
| LDA = *k+1; | |||
| A=(CBLAS_TEST_COMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | |||
| for( i=0; i<*m; i++ ) | |||
| for( j=0; j<*k; j++ ) { | |||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | |||
| A[i*LDA+j].imag=a[j*(*lda)+i].imag; | |||
| } | |||
| } | |||
| else { | |||
| LDA = *m+1; | |||
| A=(CBLAS_TEST_COMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_COMPLEX)); | |||
| for( i=0; i<*k; i++ ) | |||
| for( j=0; j<*m; j++ ) { | |||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | |||
| A[i*LDA+j].imag=a[j*(*lda)+i].imag; | |||
| } | |||
| } | |||
| if (transb == CblasNoTrans) { | |||
| LDB = *n+1; | |||
| B=(CBLAS_TEST_COMPLEX* )malloc((*k)*LDB*sizeof(CBLAS_TEST_COMPLEX) ); | |||
| for( i=0; i<*k; i++ ) | |||
| for( j=0; j<*n; j++ ) { | |||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | |||
| B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | |||
| } | |||
| } | |||
| else { | |||
| LDB = *k+1; | |||
| B=(CBLAS_TEST_COMPLEX* )malloc(LDB*(*n)*sizeof(CBLAS_TEST_COMPLEX)); | |||
| for( i=0; i<*n; i++ ) | |||
| for( j=0; j<*k; j++ ) { | |||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | |||
| B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | |||
| } | |||
| } | |||
| LDC = *n+1; | |||
| C=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_COMPLEX)); | |||
| for( j=0; j<*n; j++ ) | |||
| for( i=0; i<*m; i++ ) { | |||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | |||
| C[i*LDC+j].imag=c[j*(*ldc)+i].imag; | |||
| } | |||
| cblas_cgemm3m( CblasRowMajor, transa, transb, *m, *n, *k, alpha, A, LDA, | |||
| B, LDB, beta, C, LDC ); | |||
| for( j=0; j<*n; j++ ) | |||
| for( i=0; i<*m; i++ ) { | |||
| c[j*(*ldc)+i].real=C[i*LDC+j].real; | |||
| c[j*(*ldc)+i].imag=C[i*LDC+j].imag; | |||
| } | |||
| free(A); | |||
| free(B); | |||
| free(C); | |||
| } | |||
| else if (*order == TEST_COL_MJR) | |||
| cblas_cgemm3m( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | |||
| b, *ldb, beta, c, *ldc ); | |||
| else | |||
| cblas_cgemm3m( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda, | |||
| b, *ldb, beta, c, *ldc ); | |||
| } | |||
| @@ -45,8 +45,242 @@ void F77_z3chke(char * rout) { | |||
| F77_xerbla(cblas_rout,&cblas_info); | |||
| } | |||
| if (strncmp( sf,"cblas_zgemm" ,11)==0) { | |||
| cblas_rout = "cblas_zgemm" ; | |||
| if (strncmp( sf,"cblas_zgemm3m" ,13)==0) { | |||
| cblas_rout = "cblas_zgemm3" ; | |||
| cblas_info = 1; | |||
| cblas_zgemm3m( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_zgemm3m( INVALID, CblasNoTrans, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_zgemm3m( INVALID, CblasTrans, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 1; | |||
| cblas_zgemm3m( INVALID, CblasTrans, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 2; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, INVALID, CblasNoTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 2; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, INVALID, CblasTrans, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 3; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, INVALID, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 3; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, INVALID, 0, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasNoTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = FALSE; | |||
| cblas_zgemm3m( CblasColMajor, CblasTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 4; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, INVALID, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 5; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, INVALID, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 6; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, INVALID, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 2, BETA, C, 2 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 9; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 2, 0, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 2, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 11; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 0, 2, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasNoTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasNoTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 2, BETA, C, 1 ); | |||
| chkxer(); | |||
| cblas_info = 14; RowMajorStrg = TRUE; | |||
| cblas_zgemm3m( CblasRowMajor, CblasTrans, CblasTrans, 0, 2, 0, | |||
| ALPHA, A, 1, B, 1, BETA, C, 1 ); | |||
| chkxer(); | |||
| } else if (strncmp( sf,"cblas_zgemm" ,11)==0) { | |||
| cblas_rout = "cblas_zgemm" ; | |||
| cblas_info = 1; | |||
| cblas_zgemm( INVALID, CblasNoTrans, CblasNoTrans, 0, 0, 0, | |||
| @@ -562,3 +562,82 @@ void F77_ztrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||
| cblas_ztrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | |||
| a, *lda, b, *ldb); | |||
| } | |||
| void F77_zgemm3m(int *order, char *transpa, char *transpb, int *m, int *n, | |||
| int *k, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | |||
| CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | |||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | |||
| int i,j,LDA, LDB, LDC; | |||
| enum CBLAS_TRANSPOSE transa, transb; | |||
| get_transpose_type(transpa, &transa); | |||
| get_transpose_type(transpb, &transb); | |||
| if (*order == TEST_ROW_MJR) { | |||
| if (transa == CblasNoTrans) { | |||
| LDA = *k+1; | |||
| A=(CBLAS_TEST_ZOMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||
| for( i=0; i<*m; i++ ) | |||
| for( j=0; j<*k; j++ ) { | |||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | |||
| A[i*LDA+j].imag=a[j*(*lda)+i].imag; | |||
| } | |||
| } | |||
| else { | |||
| LDA = *m+1; | |||
| A=(CBLAS_TEST_ZOMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||
| for( i=0; i<*k; i++ ) | |||
| for( j=0; j<*m; j++ ) { | |||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | |||
| A[i*LDA+j].imag=a[j*(*lda)+i].imag; | |||
| } | |||
| } | |||
| if (transb == CblasNoTrans) { | |||
| LDB = *n+1; | |||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*LDB*sizeof(CBLAS_TEST_ZOMPLEX) ); | |||
| for( i=0; i<*k; i++ ) | |||
| for( j=0; j<*n; j++ ) { | |||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | |||
| B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | |||
| } | |||
| } | |||
| else { | |||
| LDB = *k+1; | |||
| B=(CBLAS_TEST_ZOMPLEX* )malloc(LDB*(*n)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||
| for( i=0; i<*n; i++ ) | |||
| for( j=0; j<*k; j++ ) { | |||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | |||
| B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | |||
| } | |||
| } | |||
| LDC = *n+1; | |||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||
| for( j=0; j<*n; j++ ) | |||
| for( i=0; i<*m; i++ ) { | |||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | |||
| C[i*LDC+j].imag=c[j*(*ldc)+i].imag; | |||
| } | |||
| cblas_zgemm3m( CblasRowMajor, transa, transb, *m, *n, *k, alpha, A, LDA, | |||
| B, LDB, beta, C, LDC ); | |||
| for( j=0; j<*n; j++ ) | |||
| for( i=0; i<*m; i++ ) { | |||
| c[j*(*ldc)+i].real=C[i*LDC+j].real; | |||
| c[j*(*ldc)+i].imag=C[i*LDC+j].imag; | |||
| } | |||
| free(A); | |||
| free(B); | |||
| free(C); | |||
| } | |||
| else if (*order == TEST_COL_MJR) | |||
| cblas_zgemm3m( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | |||
| b, *ldb, beta, c, *ldc ); | |||
| else | |||
| cblas_zgemm3m( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda, | |||
| b, *ldb, beta, c, *ldc ); | |||
| } | |||
| @@ -173,12 +173,14 @@ typedef struct { double real; double imag; } CBLAS_TEST_ZOMPLEX; | |||
| #define F77_dtrmm cdtrmm_ | |||
| #define F77_dtrsm cdtrsm_ | |||
| #define F77_cgemm ccgemm_ | |||
| #define F77_cgemm3m ccgemm3m_ | |||
| #define F77_csymm ccsymm_ | |||
| #define F77_csyrk ccsyrk_ | |||
| #define F77_csyr2k ccsyr2k_ | |||
| #define F77_ctrmm cctrmm_ | |||
| #define F77_ctrsm cctrsm_ | |||
| #define F77_zgemm czgemm_ | |||
| #define F77_zgemm3m czgemm3m_ | |||
| #define F77_zsymm czsymm_ | |||
| #define F77_zsyrk czsyrk_ | |||
| #define F77_zsyr2k czsyr2k_ | |||
| @@ -333,12 +335,14 @@ typedef struct { double real; double imag; } CBLAS_TEST_ZOMPLEX; | |||
| #define F77_dtrmm CDTRMM | |||
| #define F77_dtrsm CDTRSM | |||
| #define F77_cgemm CCGEMM | |||
| #define F77_cgemm3m CCGEMM3M | |||
| #define F77_csymm CCSYMM | |||
| #define F77_csyrk CCSYRK | |||
| #define F77_csyr2k CCSYR2K | |||
| #define F77_ctrmm CCTRMM | |||
| #define F77_ctrsm CCTRSM | |||
| #define F77_zgemm CZGEMM | |||
| #define F77_zgemm3m CZGEMM3M | |||
| #define F77_zsymm CZSYMM | |||
| #define F77_zsyrk CZSYRK | |||
| #define F77_zsyr2k CZSYR2K | |||
| @@ -493,12 +497,14 @@ typedef struct { double real; double imag; } CBLAS_TEST_ZOMPLEX; | |||
| #define F77_dtrmm cdtrmm | |||
| #define F77_dtrsm cdtrsm | |||
| #define F77_cgemm ccgemm | |||
| #define F77_cgemm3m ccgemm3m | |||
| #define F77_csymm ccsymm | |||
| #define F77_csyrk ccsyrk | |||
| #define F77_csyr2k ccsyr2k | |||
| #define F77_ctrmm cctrmm | |||
| #define F77_ctrsm cctrsm | |||
| #define F77_zgemm czgemm | |||
| #define F77_zgemm3m czgemm3m | |||
| #define F77_zsymm czsymm | |||
| #define F77_zsyrk czsyrk | |||
| #define F77_zsyr2k czsyr2k | |||
| @@ -0,0 +1,22 @@ | |||
| 'CBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | |||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | |||
| F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD. | |||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | |||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | |||
| 16.0 THRESHOLD VALUE OF TEST RATIO | |||
| 6 NUMBER OF VALUES OF N | |||
| 0 1 2 3 5 9 35 VALUES OF N | |||
| 3 NUMBER OF VALUES OF ALPHA | |||
| (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | |||
| 3 NUMBER OF VALUES OF BETA | |||
| (0.0,0.0) (1.0,0.0) (1.3,-1.1) VALUES OF BETA | |||
| cblas_cgemm3m T PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_chemm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_csymm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_ctrmm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_ctrsm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_cherk F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_csyrk F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_cher2k F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_csyr2k F PUT F FOR NO TEST. SAME COLUMNS. | |||
| @@ -0,0 +1,22 @@ | |||
| 'ZBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | |||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | |||
| F LOGICAL FLAG, T TO REWIND SNAPSHOT FILE AFTER EACH RECORD. | |||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | |||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | |||
| 16.0 THRESHOLD VALUE OF TEST RATIO | |||
| 7 NUMBER OF VALUES OF N | |||
| 0 1 2 3 5 9 35 VALUES OF N | |||
| 3 NUMBER OF VALUES OF ALPHA | |||
| (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | |||
| 3 NUMBER OF VALUES OF BETA | |||
| (0.0,0.0) (1.0,0.0) (1.3,-1.1) VALUES OF BETA | |||
| cblas_zgemm3m T PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zhemm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zsymm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_ztrmm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_ztrsm F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zherk F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zsyrk F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zher2k F PUT F FOR NO TEST. SAME COLUMNS. | |||
| cblas_zsyr2k F PUT F FOR NO TEST. SAME COLUMNS. | |||
| @@ -54,7 +54,7 @@ | |||
| cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub, | |||
| cblas_saxpby,cblas_daxpby,cblas_caxpby,cblas_zaxpby, | |||
| cblas_somatcopy, cblas_domatcopy, cblas_comatcopy, cblas_zomatcopy, | |||
| cblas_simatcopy, cblas_dimatcopy, cblas_cimatcopy, cblas_zimatcopy | |||
| cblas_simatcopy, cblas_dimatcopy, cblas_cimatcopy, cblas_zimatcopy, | |||
| ); | |||
| @exblasobjs = ( | |||
| @@ -13,8 +13,8 @@ F LOGICAL FLAG, T TO TEST ERROR EXITS. | |||
| 3 NUMBER OF VALUES OF BETA | |||
| (0.0,0.0) (1.0,0.0) (1.3,-1.1) VALUES OF BETA | |||
| ZGEMM3M T PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZHEMM F PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZSYMM F PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZHEMM T PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZSYMM T PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZTRMM F PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZTRSM F PUT F FOR NO TEST. SAME COLUMNS. | |||
| ZHERK F PUT F FOR NO TEST. SAME COLUMNS. | |||
| @@ -4,7 +4,7 @@ | |||
| * | |||
| * The program must be driven by a short data file. The first 14 records | |||
| * of the file are read using list-directed input, the last 9 records | |||
| * are read using the format ( A6, L2 ). An annotated example of a data | |||
| * are read using the format ( A8, L2 ). An annotated example of a data | |||
| * file can be obtained by deleting the first 3 characters from the | |||
| * following 23 lines: | |||
| * 'ZBLAT3.SUMM' NAME OF SUMMARY OUTPUT FILE | |||
| @@ -348,7 +348,7 @@ | |||
| $ 7( '(', F4.1, ',', F4.1, ') ', : ) ) | |||
| 9991 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', | |||
| $ /' ******* TESTS ABANDONED *******' ) | |||
| 9990 FORMAT( ' SUBPROGRAM NAME ', A6, ' NOT RECOGNIZED', /' ******* T', | |||
| 9990 FORMAT( ' SUBPROGRAM NAME ', A8, ' NOT RECOGNIZED', /' ******* T', | |||
| $ 'ESTS ABANDONED *******' ) | |||
| 9989 FORMAT( ' ERROR IN ZMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU', | |||
| $ 'ATED WRONGLY.', /' ZMMCH WAS CALLED WITH TRANSA = ', A1, | |||
| @@ -912,15 +912,15 @@ | |||
| 120 CONTINUE | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| 9999 FORMAT( ' ', A8, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| $ 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| 9997 FORMAT( ' ', A8, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9996 FORMAT( ' ******* ', A8, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A8, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| @@ -1223,15 +1223,15 @@ | |||
| 160 CONTINUE | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| 9999 FORMAT( ' ', A8, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| $ 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| 9997 FORMAT( ' ', A8, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A6, '(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9996 FORMAT( ' ******* ', A8, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A8, '(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ', | |||
| $ ' .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| @@ -1553,19 +1553,19 @@ | |||
| 130 CONTINUE | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| 9999 FORMAT( ' ', A8, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| $ 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| 9997 FORMAT( ' ', A8, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) | |||
| 9996 FORMAT( ' ******* ', A8, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9994 FORMAT( 1X, I6, ': ', A8, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| 9993 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9993 FORMAT( 1X, I6, ': ', A8, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, | |||
| $ '), C,', I3, ') .' ) | |||
| 9992 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| @@ -1927,19 +1927,19 @@ | |||
| 160 CONTINUE | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| 9999 FORMAT( ' ', A8, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', | |||
| $ 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| 9997 FORMAT( ' ', A8, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) | |||
| 9996 FORMAT( ' ******* ', A8, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9994 FORMAT( 1X, I6, ': ', A8, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1, | |||
| $ ', C,', I3, ') .' ) | |||
| 9993 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| 9993 FORMAT( 1X, I6, ': ', A8, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9992 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| @@ -2867,8 +2867,8 @@ | |||
| END IF | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ', A6, ' PASSED THE TESTS OF ERROR-EXITS' ) | |||
| 9998 FORMAT( ' ******* ', A6, ' FAILED THE TESTS OF ERROR-EXITS *****', | |||
| 9999 FORMAT( ' ', A8, ' PASSED THE TESTS OF ERROR-EXITS' ) | |||
| 9998 FORMAT( ' ******* ', A8, ' FAILED THE TESTS OF ERROR-EXITS *****', | |||
| $ '**' ) | |||
| * | |||
| * End of ZCHKE. | |||
| @@ -3385,7 +3385,7 @@ | |||
| RETURN | |||
| * | |||
| 9999 FORMAT( ' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', I2, ' NOT D', | |||
| $ 'ETECTED BY ', A6, ' *****' ) | |||
| $ 'ETECTED BY ', A8, ' *****' ) | |||
| * | |||
| * End of CHKXER. | |||
| * | |||
| @@ -3437,8 +3437,8 @@ | |||
| * | |||
| 9999 FORMAT( ' ******* XERBLA WAS CALLED WITH INFO = ', I6, ' INSTEAD', | |||
| $ ' OF ', I2, ' *******' ) | |||
| 9998 FORMAT( ' ******* XERBLA WAS CALLED WITH SRNAME = ', A6, ' INSTE', | |||
| $ 'AD OF ', A6, ' *******' ) | |||
| 9998 FORMAT( ' ******* XERBLA WAS CALLED WITH SRNAME = ', A8, ' INSTE', | |||
| $ 'AD OF ', A8, ' *******' ) | |||
| 9997 FORMAT( ' ******* XERBLA WAS CALLED WITH INFO = ', I6, | |||
| $ ' *******' ) | |||
| * | |||