| @@ -5,26 +5,29 @@ | |||||
| * Modified by T. H. Do, 4/15/98, SGI/CRAY Research. | * Modified by T. H. Do, 4/15/98, SGI/CRAY Research. | ||||
| */ | */ | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include "common.h" | |||||
| #include "cblas.h" | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| #define TEST_COL_MJR 0 | #define TEST_COL_MJR 0 | ||||
| #define TEST_ROW_MJR 1 | #define TEST_ROW_MJR 1 | ||||
| #define UNDEFINED -1 | #define UNDEFINED -1 | ||||
| void F77_cgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| void F77_cgemm(int *layout, char *transpa, char *transpb, int *m, int *n, | |||||
| int *k, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | 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 *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | ||||
| CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN transpa_len, FORTRAN_STRLEN transpb_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_COMPLEX *A, *B, *C; | CBLAS_TEST_COMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| get_transpose_type(transpa, &transa); | get_transpose_type(transpa, &transa); | ||||
| get_transpose_type(transpb, &transb); | get_transpose_type(transpb, &transb); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | if (transa == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_COMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | A=(CBLAS_TEST_COMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | ||||
| @@ -81,7 +84,7 @@ void F77_cgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_cgemm( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | cblas_cgemm( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| else | else | ||||
| @@ -89,20 +92,104 @@ void F77_cgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_chemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_cgemmtr(int *layout, char *uplop, char *transpa, char *transpb, 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; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_UPLO uplo; | |||||
| get_transpose_type(transpa, &transa); | |||||
| get_transpose_type(transpb, &transb); | |||||
| get_uplo_type(uplop, &uplo); | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | |||||
| LDA = *k+1; | |||||
| A=(CBLAS_TEST_COMPLEX*)malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | |||||
| for( i=0; i<*n; 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 = *n+1; | |||||
| A=(CBLAS_TEST_COMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_COMPLEX)); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; 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((*n)*LDC*sizeof(CBLAS_TEST_COMPLEX)); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | |||||
| C[i*LDC+j].imag=c[j*(*ldc)+i].imag; | |||||
| } | |||||
| cblas_cgemmtr( CblasRowMajor, uplo, transa, transb, *n, *k, alpha, A, LDA, | |||||
| B, LDB, beta, C, LDC ); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; 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 (*layout == TEST_COL_MJR) | |||||
| cblas_cgemmtr( CblasColMajor, uplo, transa, transb, *n, *k, alpha, a, *lda, | |||||
| b, *ldb, beta, c, *ldc ); | |||||
| else | |||||
| cblas_cgemmtr( UNDEFINED, uplo, transa, transb, *n, *k, alpha, a, *lda, | |||||
| b, *ldb, beta, c, *ldc ); | |||||
| } | |||||
| void F77_chemm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | 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 *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | |||||
| CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_COMPLEX *A, *B, *C; | CBLAS_TEST_COMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A= (CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | A= (CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | ||||
| @@ -146,27 +233,31 @@ void F77_chemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_chemm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_chemm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_chemm( UNDEFINED, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_chemm( UNDEFINED, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_csymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_csymm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | 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 *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | |||||
| CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_COMPLEX *A, *B, *C; | CBLAS_TEST_COMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | A=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | ||||
| @@ -200,7 +291,7 @@ void F77_csymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_csymm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_csymm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| else | else | ||||
| @@ -208,19 +299,23 @@ void F77_csymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_cherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_cherk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| float *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | float *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | ||||
| float *beta, CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||||
| float *beta, CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| CBLAS_TEST_COMPLEX *A, *C; | CBLAS_TEST_COMPLEX *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX ) ); | A=(CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX ) ); | ||||
| @@ -256,7 +351,7 @@ void F77_cherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_cherk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | cblas_cherk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| @@ -264,19 +359,23 @@ void F77_cherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_csyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_csyrk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | ||||
| CBLAS_TEST_COMPLEX *beta, CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_COMPLEX *beta, CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| CBLAS_TEST_COMPLEX *A, *C; | CBLAS_TEST_COMPLEX *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | A=(CBLAS_TEST_COMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | ||||
| @@ -312,26 +411,30 @@ void F77_csyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_csyrk(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, beta, | cblas_csyrk(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| cblas_csyrk(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, beta, | cblas_csyrk(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_cher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_cher2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | ||||
| CBLAS_TEST_COMPLEX *b, int *ldb, float *beta, | CBLAS_TEST_COMPLEX *b, int *ldb, float *beta, | ||||
| CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| CBLAS_TEST_COMPLEX *A, *B, *C; | CBLAS_TEST_COMPLEX *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| @@ -376,26 +479,30 @@ void F77_cher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_cher2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | cblas_cher2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_cher2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | cblas_cher2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_csyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_csyr2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, int *lda, | ||||
| CBLAS_TEST_COMPLEX *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | CBLAS_TEST_COMPLEX *b, int *ldb, CBLAS_TEST_COMPLEX *beta, | ||||
| CBLAS_TEST_COMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_COMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| CBLAS_TEST_COMPLEX *A, *B, *C; | CBLAS_TEST_COMPLEX *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| @@ -440,29 +547,33 @@ void F77_csyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_csyr2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | cblas_csyr2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_csyr2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | cblas_csyr2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_ctrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_ctrmm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, | int *m, int *n, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, | ||||
| int *lda, CBLAS_TEST_COMPLEX *b, int *ldb) { | |||||
| int *lda, CBLAS_TEST_COMPLEX *b, int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| CBLAS_TEST_COMPLEX *A, *B; | CBLAS_TEST_COMPLEX *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | A=(CBLAS_TEST_COMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_COMPLEX)); | ||||
| @@ -498,7 +609,7 @@ void F77_ctrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ctrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | cblas_ctrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -506,22 +617,26 @@ void F77_ctrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| void F77_ctrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_ctrsm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, | int *m, int *n, CBLAS_TEST_COMPLEX *alpha, CBLAS_TEST_COMPLEX *a, | ||||
| int *lda, CBLAS_TEST_COMPLEX *b, int *ldb) { | |||||
| int *lda, CBLAS_TEST_COMPLEX *b, int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| CBLAS_TEST_COMPLEX *A, *B; | CBLAS_TEST_COMPLEX *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_COMPLEX* )malloc( (*m)*LDA*sizeof(CBLAS_TEST_COMPLEX ) ); | A=(CBLAS_TEST_COMPLEX* )malloc( (*m)*LDA*sizeof(CBLAS_TEST_COMPLEX ) ); | ||||
| @@ -557,13 +672,10 @@ void F77_ctrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ctrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | cblas_ctrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| cblas_ctrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | cblas_ctrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| @@ -5,55 +5,58 @@ | |||||
| * Modified by T. H. Do, 2/19/98, SGI/CRAY Research. | * Modified by T. H. Do, 2/19/98, SGI/CRAY Research. | ||||
| */ | */ | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include "common.h" | |||||
| #include "cblas.h" | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| #define TEST_COL_MJR 0 | #define TEST_COL_MJR 0 | ||||
| #define TEST_ROW_MJR 1 | #define TEST_ROW_MJR 1 | ||||
| #define UNDEFINED -1 | #define UNDEFINED -1 | ||||
| void F77_dgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| void F77_dgemm(int *layout, char *transpa, char *transpb, int *m, int *n, | |||||
| int *k, double *alpha, double *a, int *lda, double *b, int *ldb, | int *k, double *alpha, double *a, int *lda, double *b, int *ldb, | ||||
| double *beta, double *c, int *ldc ) { | |||||
| double *beta, double *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN transpa_len, FORTRAN_STRLEN transpb_len | |||||
| #endif | |||||
| ) { | |||||
| double *A, *B, *C; | double *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| get_transpose_type(transpa, &transa); | get_transpose_type(transpa, &transa); | ||||
| get_transpose_type(transpb, &transb); | get_transpose_type(transpb, &transb); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | if (transa == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A = (double *)malloc( (*m)*(size_t)LDA*sizeof( double ) ); | |||||
| A = (double *)malloc( (*m)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else { | else { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( double* )malloc( (size_t)LDA*(*k)*sizeof( double ) ); | |||||
| A = ( double* )malloc( LDA*(*k)*sizeof( double ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| if (transb == CblasNoTrans) { | if (transb == CblasNoTrans) { | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( double* )malloc( (*k)*(size_t)LDB*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*k)*LDB*sizeof( double ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| } | } | ||||
| else { | else { | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| B = ( double* )malloc( (size_t)LDB*(*n)*sizeof( double ) ); | |||||
| B = ( double* )malloc( LDB*(*n)*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( double* )malloc( (*m)*(size_t)LDC*sizeof( double ) ); | |||||
| C = ( double* )malloc( (*m)*LDC*sizeof( double ) ); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -67,47 +70,130 @@ void F77_dgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda, | cblas_dgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_dgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda, | cblas_dgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_dsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_dgemmtr(int *layout, char *uplop, char *transpa, char *transpb, int *n, | |||||
| int *k, double *alpha, double *a, int *lda, | |||||
| double *b, int *ldb, double *beta, | |||||
| double *c, int *ldc ) { | |||||
| double *A, *B, *C; | |||||
| int i,j,LDA, LDB, LDC; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_UPLO uplo; | |||||
| get_transpose_type(transpa, &transa); | |||||
| get_transpose_type(transpb, &transb); | |||||
| get_uplo_type(uplop, &uplo); | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | |||||
| LDA = *k+1; | |||||
| A=(double*)malloc((*n)*LDA*sizeof(double)); | |||||
| for( i=0; i<*n; i++ ) | |||||
| for( j=0; j<*k; j++ ) { | |||||
| A[i*LDA+j]=a[j*(*lda)+i]; | |||||
| } | |||||
| } | |||||
| else { | |||||
| LDA = *n+1; | |||||
| A=(double* )malloc(LDA*(*k)*sizeof(double)); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; j++ ) { | |||||
| A[i*LDA+j]=a[j*(*lda)+i]; | |||||
| } | |||||
| } | |||||
| if (transb == CblasNoTrans) { | |||||
| LDB = *n+1; | |||||
| B=(double* )malloc((*k)*LDB*sizeof(double) ); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; j++ ) { | |||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | |||||
| } | |||||
| } | |||||
| else { | |||||
| LDB = *k+1; | |||||
| B=(double* )malloc(LDB*(*n)*sizeof(double)); | |||||
| for( i=0; i<*n; i++ ) | |||||
| for( j=0; j<*k; j++ ) { | |||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | |||||
| } | |||||
| } | |||||
| LDC = *n+1; | |||||
| C=(double* )malloc((*n)*LDC*sizeof(double)); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | |||||
| } | |||||
| cblas_dgemmtr( CblasRowMajor, uplo, transa, transb, *n, *k, *alpha, A, LDA, | |||||
| B, LDB, *beta, C, LDC ); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| c[j*(*ldc)+i]=C[i*LDC+j]; | |||||
| } | |||||
| free(A); | |||||
| free(B); | |||||
| free(C); | |||||
| } | |||||
| else if (*layout == TEST_COL_MJR){ | |||||
| cblas_dgemmtr( CblasColMajor, uplo, transa, transb, *n, *k, *alpha, a, *lda, | |||||
| b, *ldb, *beta, c, *ldc ); | |||||
| } | |||||
| else | |||||
| cblas_dgemmtr( UNDEFINED, uplo, transa, transb, *n, *k, *alpha, a, *lda, | |||||
| b, *ldb, *beta, c, *ldc ); | |||||
| } | |||||
| void F77_dsymm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| double *alpha, double *a, int *lda, double *b, int *ldb, | double *alpha, double *a, int *lda, double *b, int *ldb, | ||||
| double *beta, double *c, int *ldc ) { | |||||
| double *beta, double *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| double *A, *B, *C; | double *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( double* )malloc( (*m)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*m)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( double* )malloc( (*n)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( double* )malloc( (*m)*(size_t)LDB*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*m)*LDB*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( double* )malloc( (*m)*(size_t)LDC*sizeof( double ) ); | |||||
| C = ( double* )malloc( (*m)*LDC*sizeof( double ) ); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -120,7 +206,7 @@ void F77_dsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dsymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, | cblas_dsymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, | ||||
| *beta, c, *ldc ); | *beta, c, *ldc ); | ||||
| else | else | ||||
| @@ -128,35 +214,39 @@ void F77_dsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| *beta, c, *ldc ); | *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_dsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_dsyrk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| double *alpha, double *a, int *lda, | double *alpha, double *a, int *lda, | ||||
| double *beta, double *c, int *ldc ) { | |||||
| double *beta, double *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| double *A, *C; | double *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A = ( double* )malloc( (*n)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( double* )malloc( (*k)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*k)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( double* )malloc( (*n)*(size_t)LDC*sizeof( double ) ); | |||||
| C = ( double* )malloc( (*n)*LDC*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -168,7 +258,7 @@ void F77_dsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dsyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | cblas_dsyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| @@ -176,23 +266,27 @@ void F77_dsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_dsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_dsyr2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| double *alpha, double *a, int *lda, double *b, int *ldb, | double *alpha, double *a, int *lda, double *b, int *ldb, | ||||
| double *beta, double *c, int *ldc ) { | |||||
| double *beta, double *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| double *A, *B, *C; | double *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| A = ( double* )malloc( (*n)*(size_t)LDA*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*n)*(size_t)LDB*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*n)*LDB*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| @@ -202,8 +296,8 @@ void F77_dsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| else { | else { | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| A = ( double* )malloc( (size_t)LDA*(*k)*sizeof( double ) ); | |||||
| B = ( double* )malloc( (size_t)LDB*(*k)*sizeof( double ) ); | |||||
| A = ( double* )malloc( LDA*(*k)*sizeof( double ) ); | |||||
| B = ( double* )malloc( LDB*(*k)*sizeof( double ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ){ | for( j=0; j<*n; j++ ){ | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| @@ -211,7 +305,7 @@ void F77_dsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( double* )malloc( (*n)*(size_t)LDC*sizeof( double ) ); | |||||
| C = ( double* )malloc( (*n)*LDC*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -224,45 +318,49 @@ void F77_dsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dsyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, | cblas_dsyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_dsyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, | cblas_dsyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_dtrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_dtrmm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, double *alpha, double *a, int *lda, double *b, | int *m, int *n, double *alpha, double *a, int *lda, double *b, | ||||
| int *ldb) { | |||||
| int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diag_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| double *A, *B; | double *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( double* )malloc( (*m)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*m)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( double* )malloc( (*n)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( double* )malloc( (*m)*(size_t)LDB*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*m)*LDB*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| @@ -274,7 +372,7 @@ void F77_dtrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dtrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | cblas_dtrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -282,38 +380,42 @@ void F77_dtrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| void F77_dtrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_dtrsm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, double *alpha, double *a, int *lda, double *b, | int *m, int *n, double *alpha, double *a, int *lda, double *b, | ||||
| int *ldb) { | |||||
| int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| double *A, *B; | double *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( double* )malloc( (*m)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*m)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( double* )malloc( (*n)*(size_t)LDA*sizeof( double ) ); | |||||
| A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( double* )malloc( (*m)*(size_t)LDB*sizeof( double ) ); | |||||
| B = ( double* )malloc( (*m)*LDB*sizeof( double ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| @@ -325,7 +427,7 @@ void F77_dtrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_dtrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | cblas_dtrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -6,51 +6,55 @@ | |||||
| */ | */ | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include "common.h" | |||||
| #include "cblas.h" | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| void F77_sgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| void F77_sgemm(int *layout, char *transpa, char *transpb, int *m, int *n, | |||||
| int *k, float *alpha, float *a, int *lda, float *b, int *ldb, | int *k, float *alpha, float *a, int *lda, float *b, int *ldb, | ||||
| float *beta, float *c, int *ldc ) { | |||||
| float *beta, float *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN transpa_len, FORTRAN_STRLEN transpb_len | |||||
| #endif | |||||
| ) { | |||||
| float *A, *B, *C; | float *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| get_transpose_type(transpa, &transa); | get_transpose_type(transpa, &transa); | ||||
| get_transpose_type(transpb, &transb); | get_transpose_type(transpb, &transb); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | if (transa == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A = (float *)malloc( (*m)*(size_t)LDA*sizeof( float ) ); | |||||
| A = (float *)malloc( (*m)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else { | else { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( float* )malloc( (size_t)LDA*(*k)*sizeof( float ) ); | |||||
| A = ( float* )malloc( LDA*(*k)*sizeof( float ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| if (transb == CblasNoTrans) { | if (transb == CblasNoTrans) { | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( float* )malloc( (*k)*(size_t)LDB*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*k)*LDB*sizeof( float ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| } | } | ||||
| else { | else { | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| B = ( float* )malloc( (size_t)LDB*(*n)*sizeof( float ) ); | |||||
| B = ( float* )malloc( LDB*(*n)*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( float* )malloc( (*m)*(size_t)LDC*sizeof( float ) ); | |||||
| C = ( float* )malloc( (*m)*LDC*sizeof( float ) ); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -63,47 +67,127 @@ void F77_sgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_sgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda, | cblas_sgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_sgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda, | cblas_sgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_ssymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_sgemmtr(int *layout, char *uplop, char *transpa, char *transpb, int *n, | |||||
| int *k, float *alpha, float *a, int *lda, | |||||
| float *b, int *ldb, float *beta, | |||||
| float *c, int *ldc ) { | |||||
| float *A, *B, *C; | |||||
| int i,j,LDA, LDB, LDC; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_UPLO uplo; | |||||
| get_transpose_type(transpa, &transa); | |||||
| get_transpose_type(transpb, &transb); | |||||
| get_uplo_type(uplop, &uplo); | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | |||||
| LDA = *k+1; | |||||
| A=(float*)malloc((*n)*LDA*sizeof(float)); | |||||
| for( i=0; i<*n; i++ ) | |||||
| for( j=0; j<*k; j++ ) { | |||||
| A[i*LDA+j]=a[j*(*lda)+i]; | |||||
| } | |||||
| } | |||||
| else { | |||||
| LDA = *n+1; | |||||
| A=(float* )malloc(LDA*(*k)*sizeof(float)); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; j++ ) { | |||||
| A[i*LDA+j]=a[j*(*lda)+i]; | |||||
| } | |||||
| } | |||||
| if (transb == CblasNoTrans) { | |||||
| LDB = *n+1; | |||||
| B=(float* )malloc((*k)*LDB*sizeof(float) ); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; j++ ) { | |||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | |||||
| } | |||||
| } | |||||
| else { | |||||
| LDB = *k+1; | |||||
| B=(float* )malloc(LDB*(*n)*sizeof(float)); | |||||
| for( i=0; i<*n; i++ ) | |||||
| for( j=0; j<*k; j++ ) { | |||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | |||||
| } | |||||
| } | |||||
| LDC = *n+1; | |||||
| C=(float* )malloc((*n)*LDC*sizeof(float)); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | |||||
| } | |||||
| cblas_sgemmtr( CblasRowMajor, uplo, transa, transb, *n, *k, *alpha, A, LDA, | |||||
| B, LDB, *beta, C, LDC ); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| c[j*(*ldc)+i]=C[i*LDC+j]; | |||||
| } | |||||
| free(A); | |||||
| free(B); | |||||
| free(C); | |||||
| } | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_sgemmtr( CblasColMajor, uplo, transa, transb, *n, *k, *alpha, a, *lda, | |||||
| b, *ldb, *beta, c, *ldc ); | |||||
| else | |||||
| cblas_sgemmtr( UNDEFINED, uplo, transa, transb, *n, *k, *alpha, a, *lda, | |||||
| b, *ldb, *beta, c, *ldc ); | |||||
| } | |||||
| void F77_ssymm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| float *alpha, float *a, int *lda, float *b, int *ldb, | float *alpha, float *a, int *lda, float *b, int *ldb, | ||||
| float *beta, float *c, int *ldc ) { | |||||
| float *beta, float *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| float *A, *B, *C; | float *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( float* )malloc( (*m)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( float* )malloc( (*n)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( float* )malloc( (*m)*(size_t)LDB*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( float* )malloc( (*m)*(size_t)LDC*sizeof( float ) ); | |||||
| C = ( float* )malloc( (*m)*LDC*sizeof( float ) ); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -116,7 +200,7 @@ void F77_ssymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ssymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, | cblas_ssymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, | ||||
| *beta, c, *ldc ); | *beta, c, *ldc ); | ||||
| else | else | ||||
| @@ -124,35 +208,39 @@ void F77_ssymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| *beta, c, *ldc ); | *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_ssyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_ssyrk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| float *alpha, float *a, int *lda, | float *alpha, float *a, int *lda, | ||||
| float *beta, float *c, int *ldc ) { | |||||
| float *beta, float *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| float *A, *C; | float *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A = ( float* )malloc( (*n)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) | for( j=0; j<*k; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( float* )malloc( (*k)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*k)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( float* )malloc( (*n)*(size_t)LDC*sizeof( float ) ); | |||||
| C = ( float* )malloc( (*n)*LDC*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -164,7 +252,7 @@ void F77_ssyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ssyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | cblas_ssyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| @@ -172,23 +260,27 @@ void F77_ssyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_ssyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_ssyr2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| float *alpha, float *a, int *lda, float *b, int *ldb, | float *alpha, float *a, int *lda, float *b, int *ldb, | ||||
| float *beta, float *c, int *ldc ) { | |||||
| float *beta, float *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| float *A, *B, *C; | float *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| A = ( float* )malloc( (*n)*(size_t)LDA*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*n)*(size_t)LDB*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*n)*LDB*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| @@ -198,8 +290,8 @@ void F77_ssyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| else { | else { | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| A = ( float* )malloc( (size_t)LDA*(*k)*sizeof( float ) ); | |||||
| B = ( float* )malloc( (size_t)LDB*(*k)*sizeof( float ) ); | |||||
| A = ( float* )malloc( LDA*(*k)*sizeof( float ) ); | |||||
| B = ( float* )malloc( LDB*(*k)*sizeof( float ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ){ | for( j=0; j<*n; j++ ){ | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| @@ -207,7 +299,7 @@ void F77_ssyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C = ( float* )malloc( (*n)*(size_t)LDC*sizeof( float ) ); | |||||
| C = ( float* )malloc( (*n)*LDC*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -220,45 +312,49 @@ void F77_ssyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ssyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, | cblas_ssyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_ssyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, | cblas_ssyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_strmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_strmm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, float *alpha, float *a, int *lda, float *b, | int *m, int *n, float *alpha, float *a, int *lda, float *b, | ||||
| int *ldb) { | |||||
| int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| float *A, *B; | float *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( float* )malloc( (*m)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( float* )malloc( (*n)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( float* )malloc( (*m)*(size_t)LDB*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| @@ -270,7 +366,7 @@ void F77_strmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_strmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | cblas_strmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -278,38 +374,42 @@ void F77_strmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| void F77_strsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_strsm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, float *alpha, float *a, int *lda, float *b, | int *m, int *n, float *alpha, float *a, int *lda, float *b, | ||||
| int *ldb) { | |||||
| int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| float *A, *B; | float *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A = ( float* )malloc( (*m)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A = ( float* )malloc( (*n)*(size_t)LDA*sizeof( float ) ); | |||||
| A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B = ( float* )malloc( (*m)*(size_t)LDB*sizeof( float ) ); | |||||
| B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| @@ -321,7 +421,7 @@ void F77_strsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_strsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | cblas_strsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -4,13 +4,13 @@ | |||||
| * | * | ||||
| * The program must be driven by a short data file. The first 13 records | * The program must be driven by a short data file. The first 13 records | ||||
| * of the file are read using list-directed input, the last 6 records | * of the file are read using list-directed input, the last 6 records | ||||
| * are read using the format ( A12, L2 ). An annotated example of a data | |||||
| * are read using the format ( A13, L2 ). An annotated example of a data | |||||
| * file can be obtained by deleting the first 3 characters from the | * file can be obtained by deleting the first 3 characters from the | ||||
| * following 19 lines: | * following 19 lines: | ||||
| * 'SBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | * 'SBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | ||||
| * -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | * -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 REWIND SNAPSHOT FILE AFTER EACH RECORD. | ||||
| * F LOGICAL FLAG, T TO ERROR STOP ON FAILURES. | |||||
| * F LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| * T LOGICAL FLAG, T TO TEST ERROR EXITS. | * T LOGICAL FLAG, T TO TEST ERROR EXITS. | ||||
| * 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | * 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | ||||
| * 16.0 THRESHOLD VALUE OF TEST RATIO | * 16.0 THRESHOLD VALUE OF TEST RATIO | ||||
| @@ -20,12 +20,14 @@ | |||||
| * 0.0 1.0 0.7 VALUES OF ALPHA | * 0.0 1.0 0.7 VALUES OF ALPHA | ||||
| * 3 NUMBER OF VALUES OF BETA | * 3 NUMBER OF VALUES OF BETA | ||||
| * 0.0 1.0 1.3 VALUES OF BETA | * 0.0 1.0 1.3 VALUES OF BETA | ||||
| * cblas_sgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_strmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_strsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_sgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_strmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_strsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_ssyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * cblas_sgemmtr T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| * | * | ||||
| * See: | * See: | ||||
| * | * | ||||
| @@ -46,7 +48,7 @@ | |||||
| INTEGER NIN, NOUT | INTEGER NIN, NOUT | ||||
| PARAMETER ( NIN = 5, NOUT = 6 ) | PARAMETER ( NIN = 5, NOUT = 6 ) | ||||
| INTEGER NSUBS | INTEGER NSUBS | ||||
| PARAMETER ( NSUBS = 6 ) | |||||
| PARAMETER ( NSUBS = 7 ) | |||||
| REAL ZERO, HALF, ONE | REAL ZERO, HALF, ONE | ||||
| PARAMETER ( ZERO = 0.0, HALF = 0.5, ONE = 1.0 ) | PARAMETER ( ZERO = 0.0, HALF = 0.5, ONE = 1.0 ) | ||||
| INTEGER NMAX | INTEGER NMAX | ||||
| @@ -60,7 +62,7 @@ | |||||
| LOGICAL FATAL, LTESTT, REWI, SAME, SFATAL, TRACE, | LOGICAL FATAL, LTESTT, REWI, SAME, SFATAL, TRACE, | ||||
| $ TSTERR, CORDER, RORDER | $ TSTERR, CORDER, RORDER | ||||
| CHARACTER*1 TRANSA, TRANSB | CHARACTER*1 TRANSA, TRANSB | ||||
| CHARACTER*12 SNAMET | |||||
| CHARACTER*13 SNAMET | |||||
| CHARACTER*32 SNAPS | CHARACTER*32 SNAPS | ||||
| * .. Local Arrays .. | * .. Local Arrays .. | ||||
| REAL AA( NMAX*NMAX ), AB( NMAX, 2*NMAX ), | REAL AA( NMAX*NMAX ), AB( NMAX, 2*NMAX ), | ||||
| @@ -71,27 +73,27 @@ | |||||
| $ G( NMAX ), W( 2*NMAX ) | $ G( NMAX ), W( 2*NMAX ) | ||||
| INTEGER IDIM( NIDMAX ) | INTEGER IDIM( NIDMAX ) | ||||
| LOGICAL LTEST( NSUBS ) | LOGICAL LTEST( NSUBS ) | ||||
| CHARACTER*12 SNAMES( NSUBS ) | |||||
| CHARACTER*13 SNAMES( NSUBS ) | |||||
| * .. External Functions .. | * .. External Functions .. | ||||
| REAL SDIFF | REAL SDIFF | ||||
| LOGICAL LSE | LOGICAL LSE | ||||
| EXTERNAL SDIFF, LSE | EXTERNAL SDIFF, LSE | ||||
| * .. External Subroutines .. | * .. External Subroutines .. | ||||
| EXTERNAL SCHK1, SCHK2, SCHK3, SCHK4, SCHK5, CS3CHKE, | EXTERNAL SCHK1, SCHK2, SCHK3, SCHK4, SCHK5, CS3CHKE, | ||||
| $ SMMCH | |||||
| $ SMMCH, SCHK6 | |||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC MAX, MIN | INTRINSIC MAX, MIN | ||||
| * .. Scalars in Common .. | * .. Scalars in Common .. | ||||
| INTEGER INFOT, NOUTC | INTEGER INFOT, NOUTC | ||||
| LOGICAL OK | LOGICAL OK | ||||
| CHARACTER*12 SRNAMT | |||||
| CHARACTER*13 SRNAMT | |||||
| * .. Common blocks .. | * .. Common blocks .. | ||||
| COMMON /INFOC/INFOT, NOUTC, OK | COMMON /INFOC/INFOT, NOUTC, OK | ||||
| COMMON /SRNAMC/SRNAMT | COMMON /SRNAMC/SRNAMT | ||||
| * .. Data statements .. | * .. Data statements .. | ||||
| DATA SNAMES/'cblas_sgemm ', 'cblas_ssymm ', | DATA SNAMES/'cblas_sgemm ', 'cblas_ssymm ', | ||||
| $ 'cblas_strmm ', 'cblas_strsm ','cblas_ssyrk ', | $ 'cblas_strmm ', 'cblas_strsm ','cblas_ssyrk ', | ||||
| $ 'cblas_ssyr2k'/ | |||||
| $ 'cblas_ssyr2k', 'cblas_sgemmtr'/ | |||||
| * .. Executable Statements .. | * .. Executable Statements .. | ||||
| * | * | ||||
| NOUTC = NOUT | NOUTC = NOUT | ||||
| @@ -188,7 +190,7 @@ | |||||
| $ GO TO 50 | $ GO TO 50 | ||||
| 40 CONTINUE | 40 CONTINUE | ||||
| WRITE( NOUT, FMT = 9990 )SNAMET | WRITE( NOUT, FMT = 9990 )SNAMET | ||||
| ERROR STOP | |||||
| STOP | |||||
| 50 LTEST( I ) = LTESTT | 50 LTEST( I ) = LTESTT | ||||
| GO TO 30 | GO TO 30 | ||||
| * | * | ||||
| @@ -231,7 +233,7 @@ | |||||
| SAME = LSE( CC, CT, N ) | SAME = LSE( CC, CT, N ) | ||||
| IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | ||||
| WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | ||||
| ERROR STOP | |||||
| STOP | |||||
| END IF | END IF | ||||
| TRANSB = 'T' | TRANSB = 'T' | ||||
| CALL SMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX, | CALL SMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX, | ||||
| @@ -240,7 +242,7 @@ | |||||
| SAME = LSE( CC, CT, N ) | SAME = LSE( CC, CT, N ) | ||||
| IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | ||||
| WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | ||||
| ERROR STOP | |||||
| STOP | |||||
| END IF | END IF | ||||
| DO 120 J = 1, N | DO 120 J = 1, N | ||||
| AB( J, NMAX + 1 ) = N - J + 1 | AB( J, NMAX + 1 ) = N - J + 1 | ||||
| @@ -258,7 +260,7 @@ | |||||
| SAME = LSE( CC, CT, N ) | SAME = LSE( CC, CT, N ) | ||||
| IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | ||||
| WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | ||||
| ERROR STOP | |||||
| STOP | |||||
| END IF | END IF | ||||
| TRANSB = 'T' | TRANSB = 'T' | ||||
| CALL SMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX, | CALL SMMCH( TRANSA, TRANSB, N, 1, N, ONE, AB, NMAX, | ||||
| @@ -267,7 +269,7 @@ | |||||
| SAME = LSE( CC, CT, N ) | SAME = LSE( CC, CT, N ) | ||||
| IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | IF( .NOT.SAME.OR.ERR.NE.ZERO )THEN | ||||
| WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | WRITE( NOUT, FMT = 9989 )TRANSA, TRANSB, SAME, ERR | ||||
| ERROR STOP | |||||
| STOP | |||||
| END IF | END IF | ||||
| * | * | ||||
| * Test each subroutine in turn. | * Test each subroutine in turn. | ||||
| @@ -288,7 +290,7 @@ | |||||
| INFOT = 0 | INFOT = 0 | ||||
| OK = .TRUE. | OK = .TRUE. | ||||
| FATAL = .FALSE. | FATAL = .FALSE. | ||||
| GO TO ( 140, 150, 160, 160, 170, 180 )ISNUM | |||||
| GO TO ( 140, 150, 160, 160, 170, 180, 185 )ISNUM | |||||
| * Test SGEMM, 01. | * Test SGEMM, 01. | ||||
| 140 IF (CORDER) THEN | 140 IF (CORDER) THEN | ||||
| CALL SCHK1( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL SCHK1( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| @@ -359,8 +361,24 @@ | |||||
| $ 1 ) | $ 1 ) | ||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * Test SGEMMTR, 07. | |||||
| 185 IF (CORDER) THEN | |||||
| CALL SCHK6( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||||
| $ 0 ) | |||||
| END IF | |||||
| IF (RORDER) THEN | |||||
| CALL SCHK6( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||||
| $ 1 ) | |||||
| END IF | |||||
| GO TO 190 | |||||
| * | * | ||||
| 190 IF( FATAL.AND.SFATAL ) | |||||
| 190 IF( FATAL.AND.SFATAL ) | |||||
| $ GO TO 210 | $ GO TO 210 | ||||
| END IF | END IF | ||||
| 200 CONTINUE | 200 CONTINUE | ||||
| @@ -378,9 +396,7 @@ | |||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ CLOSE ( NTRA ) | $ CLOSE ( NTRA ) | ||||
| CLOSE ( NOUT ) | CLOSE ( NOUT ) | ||||
| IF( FATAL ) THEN | |||||
| ERROR STOP | |||||
| END IF | |||||
| STOP | |||||
| * | * | ||||
| 10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' ) | 10002 FORMAT( ' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' ) | ||||
| 10001 FORMAT( ' ROW-MAJOR DATA LAYOUT IS TESTED' ) | 10001 FORMAT( ' ROW-MAJOR DATA LAYOUT IS TESTED' ) | ||||
| @@ -398,7 +414,7 @@ | |||||
| 9992 FORMAT( ' FOR BETA ', 7F6.1 ) | 9992 FORMAT( ' FOR BETA ', 7F6.1 ) | ||||
| 9991 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', | 9991 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', | ||||
| $ /' ******* TESTS ABANDONED *******' ) | $ /' ******* TESTS ABANDONED *******' ) | ||||
| 9990 FORMAT( ' SUBPROGRAM NAME ', A12,' NOT RECOGNIZED', /' ******* ', | |||||
| 9990 FORMAT( ' SUBPROGRAM NAME ', A13,' NOT RECOGNIZED', /' ******* ', | |||||
| $ 'TESTS ABANDONED *******' ) | $ 'TESTS ABANDONED *******' ) | ||||
| 9989 FORMAT( ' ERROR IN SMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU', | 9989 FORMAT( ' ERROR IN SMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU', | ||||
| $ 'ATED WRONGLY.', /' SMMCH WAS CALLED WITH TRANSA = ', A1, | $ 'ATED WRONGLY.', /' SMMCH WAS CALLED WITH TRANSA = ', A1, | ||||
| @@ -406,8 +422,8 @@ | |||||
| $ 'ERR = ', F12.3, '.', /' THIS MAY BE DUE TO FAULTS IN THE ', | $ 'ERR = ', F12.3, '.', /' THIS MAY BE DUE TO FAULTS IN THE ', | ||||
| $ 'ARITHMETIC OR THE COMPILER.', /' ******* TESTS ABANDONED ', | $ 'ARITHMETIC OR THE COMPILER.', /' ******* TESTS ABANDONED ', | ||||
| $ '*******' ) | $ '*******' ) | ||||
| 9988 FORMAT( A12,L2 ) | |||||
| 9987 FORMAT( 1X, A12,' WAS NOT TESTED' ) | |||||
| 9988 FORMAT( A13,L2 ) | |||||
| 9987 FORMAT( 1X, A13,' WAS NOT TESTED' ) | |||||
| 9986 FORMAT( /' END OF TESTS' ) | 9986 FORMAT( /' END OF TESTS' ) | ||||
| 9985 FORMAT( /' ******* FATAL ERROR - TESTS ABANDONED *******' ) | 9985 FORMAT( /' ******* FATAL ERROR - TESTS ABANDONED *******' ) | ||||
| 9984 FORMAT( ' ERROR-EXITS WILL NOT BE TESTED' ) | 9984 FORMAT( ' ERROR-EXITS WILL NOT BE TESTED' ) | ||||
| @@ -437,7 +453,7 @@ | |||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | ||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | ||||
| $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | ||||
| @@ -683,22 +699,22 @@ | |||||
| 130 CONTINUE | 130 CONTINUE | ||||
| RETURN | RETURN | ||||
| * | * | ||||
| 10003 FORMAT( ' ', A12,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10002 FORMAT( ' ', A12,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10001 FORMAT( ' ', A12,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 10000 FORMAT( ' ', A12,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||||
| C $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||||
| C $ 'C,', I3, ').' ) | |||||
| 9996 FORMAT( ' ******* ', A13,' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(''', A1, ''',''', A1, ''',', | |||||
| $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||||
| $ 'C,', I3, ').' ) | |||||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -713,7 +729,7 @@ C $ 'C,', I3, ').' ) | |||||
| INTEGER NOUT, NC, IORDER, M, N, K, LDA, LDB, LDC | INTEGER NOUT, NC, IORDER, M, N, K, LDA, LDB, LDC | ||||
| REAL ALPHA, BETA | REAL ALPHA, BETA | ||||
| CHARACTER*1 TRANSA, TRANSB | CHARACTER*1 TRANSA, TRANSB | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CTA,CTB | CHARACTER*14 CRC, CTA,CTB | ||||
| IF (TRANSA.EQ.'N')THEN | IF (TRANSA.EQ.'N')THEN | ||||
| @@ -738,7 +754,7 @@ C $ 'C,', I3, ').' ) | |||||
| WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CTA,CTB | WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CTA,CTB | ||||
| WRITE(NOUT, FMT = 9994)M, N, K, ALPHA, LDA, LDB, BETA, LDC | WRITE(NOUT, FMT = 9994)M, N, K, ALPHA, LDA, LDB, BETA, LDC | ||||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9994 FORMAT( 20X, 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', | 9994 FORMAT( 20X, 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', | ||||
| $ F4.1, ', ', 'C,', I3, ').' ) | $ F4.1, ', ', 'C,', I3, ').' ) | ||||
| END | END | ||||
| @@ -765,7 +781,7 @@ C $ 'C,', I3, ').' ) | |||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | ||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | ||||
| $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | ||||
| @@ -1000,22 +1016,22 @@ C $ 'C,', I3, ').' ) | |||||
| 120 CONTINUE | 120 CONTINUE | ||||
| RETURN | RETURN | ||||
| * | * | ||||
| 10003 FORMAT( ' ', A12,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10002 FORMAT( ' ', A12,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10001 FORMAT( ' ', A12,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 10000 FORMAT( ' ', A12,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||||
| C $ ' .' ) | |||||
| 9996 FORMAT( ' ******* ', A13,' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||||
| $ ' .' ) | |||||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1028,7 +1044,7 @@ C $ ' .' ) | |||||
| INTEGER NOUT, NC, IORDER, M, N, LDA, LDB, LDC | INTEGER NOUT, NC, IORDER, M, N, LDA, LDB, LDC | ||||
| REAL ALPHA, BETA | REAL ALPHA, BETA | ||||
| CHARACTER*1 SIDE, UPLO | CHARACTER*1 SIDE, UPLO | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CS,CU | CHARACTER*14 CRC, CS,CU | ||||
| IF (SIDE.EQ.'L')THEN | IF (SIDE.EQ.'L')THEN | ||||
| @@ -1049,7 +1065,7 @@ C $ ' .' ) | |||||
| WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CS,CU | WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CS,CU | ||||
| WRITE(NOUT, FMT = 9994)M, N, ALPHA, LDA, LDB, BETA, LDC | WRITE(NOUT, FMT = 9994)M, N, ALPHA, LDA, LDB, BETA, LDC | ||||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9994 FORMAT( 20X, 2( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', | 9994 FORMAT( 20X, 2( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', | ||||
| $ F4.1, ', ', 'C,', I3, ').' ) | $ F4.1, ', ', 'C,', I3, ').' ) | ||||
| END | END | ||||
| @@ -1075,7 +1091,7 @@ C $ ' .' ) | |||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER NALF, NIDIM, NMAX, NOUT, NTRA, IORDER | INTEGER NALF, NIDIM, NMAX, NOUT, NTRA, IORDER | ||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | ||||
| $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | ||||
| @@ -1348,21 +1364,21 @@ C $ ' .' ) | |||||
| 160 CONTINUE | 160 CONTINUE | ||||
| RETURN | RETURN | ||||
| * | * | ||||
| 10003 FORMAT( ' ', A12,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10002 FORMAT( ' ', A12,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10001 FORMAT( ' ', A12,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 10000 FORMAT( ' ', A12,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| 9996 FORMAT( ' ******* ', A13,' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1375,7 +1391,7 @@ C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| INTEGER NOUT, NC, IORDER, M, N, LDA, LDB | INTEGER NOUT, NC, IORDER, M, N, LDA, LDB | ||||
| REAL ALPHA | REAL ALPHA | ||||
| CHARACTER*1 SIDE, UPLO, TRANSA, DIAG | CHARACTER*1 SIDE, UPLO, TRANSA, DIAG | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CS, CU, CA, CD | CHARACTER*14 CRC, CS, CU, CA, CD | ||||
| IF (SIDE.EQ.'L')THEN | IF (SIDE.EQ.'L')THEN | ||||
| @@ -1408,7 +1424,7 @@ C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CS,CU | WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CS,CU | ||||
| WRITE(NOUT, FMT = 9994)CA, CD, M, N, ALPHA, LDA, LDB | WRITE(NOUT, FMT = 9994)CA, CD, M, N, ALPHA, LDA, LDB | ||||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', A14, ',', A14, ',', A14, ',') | |||||
| 9994 FORMAT( 22X, 2( A14, ',') , 2( I3, ',' ), | 9994 FORMAT( 22X, 2( A14, ',') , 2( I3, ',' ), | ||||
| $ F4.1, ', A,', I3, ', B,', I3, ').' ) | $ F4.1, ', A,', I3, ', B,', I3, ').' ) | ||||
| END | END | ||||
| @@ -1435,7 +1451,7 @@ C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | ||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | ||||
| $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | ||||
| @@ -1674,22 +1690,22 @@ C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||||
| 130 CONTINUE | 130 CONTINUE | ||||
| RETURN | RETURN | ||||
| * | * | ||||
| 10003 FORMAT( ' ', A12,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10002 FORMAT( ' ', A12,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10001 FORMAT( ' ', A12,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 10000 FORMAT( ' ', A12,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||||
| 9996 FORMAT( ' ******* ', A13,' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| 9994 FORMAT( 1X, I6, ': ', A13,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1702,7 +1718,7 @@ C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| INTEGER NOUT, NC, IORDER, N, K, LDA, LDC | INTEGER NOUT, NC, IORDER, N, K, LDA, LDC | ||||
| REAL ALPHA, BETA | REAL ALPHA, BETA | ||||
| CHARACTER*1 UPLO, TRANSA | CHARACTER*1 UPLO, TRANSA | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CU, CA | CHARACTER*14 CRC, CU, CA | ||||
| IF (UPLO.EQ.'U')THEN | IF (UPLO.EQ.'U')THEN | ||||
| @@ -1725,7 +1741,7 @@ C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA | WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA | ||||
| WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, BETA, LDC | WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, BETA, LDC | ||||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 3( A14, ',') ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', 3( A14, ',') ) | |||||
| 9994 FORMAT( 20X, 2( I3, ',' ), | 9994 FORMAT( 20X, 2( I3, ',' ), | ||||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ').' ) | $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ').' ) | ||||
| END | END | ||||
| @@ -1752,7 +1768,7 @@ C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | ||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| REAL AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ), | REAL AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ), | ||||
| $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ), | $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ), | ||||
| @@ -2029,23 +2045,23 @@ C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||||
| 160 CONTINUE | 160 CONTINUE | ||||
| RETURN | RETURN | ||||
| * | * | ||||
| 10003 FORMAT( ' ', A12,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10002 FORMAT( ' ', A12,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | ||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | ||||
| 10001 FORMAT( ' ', A12,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 10000 FORMAT( ' ', A12,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||||
| 9996 FORMAT( ' ******* ', A13,' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||||
| C $ ' .' ) | |||||
| 9994 FORMAT( 1X, I6, ': ', A13,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||||
| $ ' .' ) | |||||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2058,7 +2074,7 @@ C $ ' .' ) | |||||
| INTEGER NOUT, NC, IORDER, N, K, LDA, LDB, LDC | INTEGER NOUT, NC, IORDER, N, K, LDA, LDB, LDC | ||||
| REAL ALPHA, BETA | REAL ALPHA, BETA | ||||
| CHARACTER*1 UPLO, TRANSA | CHARACTER*1 UPLO, TRANSA | ||||
| CHARACTER*12 SNAME | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CU, CA | CHARACTER*14 CRC, CU, CA | ||||
| IF (UPLO.EQ.'U')THEN | IF (UPLO.EQ.'U')THEN | ||||
| @@ -2081,7 +2097,7 @@ C $ ' .' ) | |||||
| WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA | WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA | ||||
| WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, LDB, BETA, LDC | WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, LDB, BETA, LDC | ||||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 3( A14, ',') ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', 3( A14, ',') ) | |||||
| 9994 FORMAT( 20X, 2( I3, ',' ), | 9994 FORMAT( 20X, 2( I3, ',' ), | ||||
| $ F4.1, ', A,', I3, ', B', I3, ',', F4.1, ', C,', I3, ').' ) | $ F4.1, ', A,', I3, ', B', I3, ',', F4.1, ', C,', I3, ').' ) | ||||
| END | END | ||||
| @@ -2405,7 +2421,7 @@ C $ ' .' ) | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| C 60 CONTINUE | |||||
| 60 CONTINUE | |||||
| LSERES = .TRUE. | LSERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -2480,3 +2496,475 @@ C 60 CONTINUE | |||||
| * End of SDIFF. | * End of SDIFF. | ||||
| * | * | ||||
| END | END | ||||
| SUBROUTINE SCHK6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, | |||||
| $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, | |||||
| $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G, | |||||
| $ IORDER) | |||||
| * | |||||
| * Tests SGEMMTR. | |||||
| * | |||||
| * Auxiliary routine for test program for Level 3 Blas. | |||||
| * | |||||
| * -- Written on 19-July-2023. | |||||
| * Martin Koehler, MPI Magdeburg | |||||
| * | |||||
| * .. Parameters .. | |||||
| REAL ZERO | |||||
| PARAMETER ( ZERO = 0.0 ) | |||||
| * .. Scalar Arguments .. | |||||
| REAL EPS, THRESH | |||||
| INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | |||||
| CHARACTER*13 SNAME | |||||
| * .. Array Arguments .. | |||||
| REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), | |||||
| $ AS( NMAX*NMAX ), B( NMAX, NMAX ), | |||||
| $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ), | |||||
| $ C( NMAX, NMAX ), CC( NMAX*NMAX ), | |||||
| $ CS( NMAX*NMAX ), CT( NMAX ), G( NMAX ) | |||||
| INTEGER IDIM( NIDIM ) | |||||
| * .. Local Scalars .. | |||||
| REAL ALPHA, ALS, BETA, BLS, ERR, ERRMAX | |||||
| INTEGER I, IA, IB, ICA, ICB, IK, IN, K, KS, LAA, | |||||
| $ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, | |||||
| $ MA, MB, N, NA, NARGS, NB, NC, NS, IS | |||||
| LOGICAL NULL, RESET, SAME, TRANA, TRANB | |||||
| CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB, UPLO, UPLOS | |||||
| CHARACTER*3 ICH | |||||
| CHARACTER*2 ISHAPE | |||||
| * .. Local Arrays .. | |||||
| LOGICAL ISAME( 13 ) | |||||
| * .. External Functions .. | |||||
| LOGICAL LSE, LSERES | |||||
| EXTERNAL LSE, LSERES | |||||
| * .. External Subroutines .. | |||||
| EXTERNAL CSGEMMTR, SMAKE, SMMTCH, SPRCN8 | |||||
| * .. Intrinsic Functions .. | |||||
| INTRINSIC MAX | |||||
| * .. Scalars in Common .. | |||||
| INTEGER INFOT, NOUTC | |||||
| LOGICAL LERR, OK | |||||
| * .. Common blocks .. | |||||
| COMMON /INFOC/INFOT, NOUTC, OK, LERR | |||||
| * .. Data statements .. | |||||
| DATA ICH/'NTC'/ | |||||
| DATA ISHAPE/'UL'/ | |||||
| * .. Executable Statements .. | |||||
| * | |||||
| NARGS = 13 | |||||
| NC = 0 | |||||
| RESET = .TRUE. | |||||
| ERRMAX = ZERO | |||||
| * | |||||
| DO 100 IN = 1, NIDIM | |||||
| N = IDIM( IN ) | |||||
| * Set LDC to 1 more than minimum value if room. | |||||
| LDC = N | |||||
| IF( LDC.LT.NMAX ) | |||||
| $ LDC = LDC + 1 | |||||
| * Skip tests if not enough room. | |||||
| IF( LDC.GT.NMAX ) | |||||
| $ GO TO 100 | |||||
| LCC = LDC*N | |||||
| NULL = N.LE.0 | |||||
| * | |||||
| DO 90 IK = 1, NIDIM | |||||
| K = IDIM( IK ) | |||||
| * | |||||
| DO 80 ICA = 1, 3 | |||||
| TRANSA = ICH( ICA: ICA ) | |||||
| TRANA = TRANSA.EQ.'T'.OR.TRANSA.EQ.'C' | |||||
| * | |||||
| IF( TRANA )THEN | |||||
| MA = K | |||||
| NA = N | |||||
| ELSE | |||||
| MA = N | |||||
| NA = K | |||||
| END IF | |||||
| * Set LDA to 1 more than minimum value if room. | |||||
| LDA = MA | |||||
| IF( LDA.LT.NMAX ) | |||||
| $ LDA = LDA + 1 | |||||
| * Skip tests if not enough room. | |||||
| IF( LDA.GT.NMAX ) | |||||
| $ GO TO 80 | |||||
| LAA = LDA*NA | |||||
| * | |||||
| * Generate the matrix A. | |||||
| * | |||||
| CALL SMAKE( 'GE', ' ', ' ', MA, NA, A, NMAX, AA, LDA, | |||||
| $ RESET, ZERO ) | |||||
| * | |||||
| DO 70 ICB = 1, 3 | |||||
| TRANSB = ICH( ICB: ICB ) | |||||
| TRANB = TRANSB.EQ.'T'.OR.TRANSB.EQ.'C' | |||||
| * | |||||
| IF( TRANB )THEN | |||||
| MB = N | |||||
| NB = K | |||||
| ELSE | |||||
| MB = K | |||||
| NB = N | |||||
| END IF | |||||
| * Set LDB to 1 more than minimum value if room. | |||||
| LDB = MB | |||||
| IF( LDB.LT.NMAX ) | |||||
| $ LDB = LDB + 1 | |||||
| * Skip tests if not enough room. | |||||
| IF( LDB.GT.NMAX ) | |||||
| $ GO TO 70 | |||||
| LBB = LDB*NB | |||||
| * | |||||
| * Generate the matrix B. | |||||
| * | |||||
| CALL SMAKE( 'GE', ' ', ' ', MB, NB, B, NMAX, BB, | |||||
| $ LDB, RESET, ZERO ) | |||||
| * | |||||
| DO 60 IA = 1, NALF | |||||
| ALPHA = ALF( IA ) | |||||
| * | |||||
| DO 50 IB = 1, NBET | |||||
| BETA = BET( IB ) | |||||
| DO 45 IS = 1, 2 | |||||
| UPLO = ISHAPE( IS: IS ) | |||||
| * | |||||
| * Generate the matrix C. | |||||
| * | |||||
| CALL SMAKE( 'GE', UPLO, ' ', N, N, C, | |||||
| $ NMAX, CC, LDC, RESET, ZERO ) | |||||
| * | |||||
| NC = NC + 1 | |||||
| * | |||||
| * Save every datum before calling the | |||||
| * subroutine. | |||||
| * | |||||
| UPLOS = UPLO | |||||
| TRANAS = TRANSA | |||||
| TRANBS = TRANSB | |||||
| NS = N | |||||
| KS = K | |||||
| ALS = ALPHA | |||||
| DO 10 I = 1, LAA | |||||
| AS( I ) = AA( I ) | |||||
| 10 CONTINUE | |||||
| LDAS = LDA | |||||
| DO 20 I = 1, LBB | |||||
| BS( I ) = BB( I ) | |||||
| 20 CONTINUE | |||||
| LDBS = LDB | |||||
| BLS = BETA | |||||
| DO 30 I = 1, LCC | |||||
| CS( I ) = CC( I ) | |||||
| 30 CONTINUE | |||||
| LDCS = LDC | |||||
| * | |||||
| * Call the subroutine. | |||||
| * | |||||
| IF( TRACE ) | |||||
| $ CALL SPRCN8(NTRA, NC, SNAME, IORDER, UPLO, | |||||
| $ TRANSA, TRANSB, N, K, ALPHA, LDA, | |||||
| $ LDB, BETA, LDC) | |||||
| IF( REWI ) | |||||
| $ REWIND NTRA | |||||
| CALL CSGEMMTR( IORDER, UPLO, TRANSA, TRANSB, | |||||
| $ N, K, ALPHA, AA, LDA, BB, LDB, | |||||
| $ BETA, CC, LDC ) | |||||
| * | |||||
| * Check if error-exit was taken incorrectly. | |||||
| * | |||||
| IF( .NOT.OK )THEN | |||||
| WRITE( NOUT, FMT = 9994 ) | |||||
| FATAL = .TRUE. | |||||
| GO TO 120 | |||||
| END IF | |||||
| * | |||||
| * See what data changed inside subroutines. | |||||
| * | |||||
| ISAME( 1 ) = UPLO.EQ.UPLOS | |||||
| ISAME( 2 ) = TRANSA.EQ.TRANAS | |||||
| ISAME( 3 ) = TRANSB.EQ.TRANBS | |||||
| ISAME( 4 ) = NS.EQ.N | |||||
| ISAME( 5 ) = KS.EQ.K | |||||
| ISAME( 6 ) = ALS.EQ.ALPHA | |||||
| ISAME( 7 ) = LSE( AS, AA, LAA ) | |||||
| ISAME( 8 ) = LDAS.EQ.LDA | |||||
| ISAME( 9 ) = LSE( BS, BB, LBB ) | |||||
| ISAME( 10 ) = LDBS.EQ.LDB | |||||
| ISAME( 11 ) = BLS.EQ.BETA | |||||
| IF( NULL )THEN | |||||
| ISAME( 12 ) = LSE( CS, CC, LCC ) | |||||
| ELSE | |||||
| ISAME( 12 ) = LSERES( 'GE', ' ', N, N, | |||||
| $ CS, CC, LDC ) | |||||
| END IF | |||||
| ISAME( 13 ) = LDCS.EQ.LDC | |||||
| * | |||||
| * If data was incorrectly changed, report | |||||
| * and return. | |||||
| * | |||||
| SAME = .TRUE. | |||||
| DO 40 I = 1, NARGS | |||||
| SAME = SAME.AND.ISAME( I ) | |||||
| IF( .NOT.ISAME( I ) ) | |||||
| $ WRITE( NOUT, FMT = 9998 )I | |||||
| 40 CONTINUE | |||||
| IF( .NOT.SAME )THEN | |||||
| FATAL = .TRUE. | |||||
| GO TO 120 | |||||
| END IF | |||||
| * | |||||
| IF( .NOT.NULL )THEN | |||||
| * | |||||
| * Check the result. | |||||
| * | |||||
| CALL SMMTCH( UPLO, TRANSA, TRANSB, | |||||
| $ N, K, | |||||
| $ ALPHA, A, NMAX, B, NMAX, BETA, | |||||
| $ C, NMAX, CT, G, CC, LDC, EPS, | |||||
| $ ERR, FATAL, NOUT, .TRUE. ) | |||||
| ERRMAX = MAX( ERRMAX, ERR ) | |||||
| * If got really bad answer, report and | |||||
| * return. | |||||
| IF( FATAL ) | |||||
| $ GO TO 120 | |||||
| END IF | |||||
| * | |||||
| 45 CONTINUE | |||||
| * | |||||
| 50 CONTINUE | |||||
| * | |||||
| 60 CONTINUE | |||||
| * | |||||
| 70 CONTINUE | |||||
| * | |||||
| 80 CONTINUE | |||||
| * | |||||
| 90 CONTINUE | |||||
| * | |||||
| 100 CONTINUE | |||||
| * | |||||
| * | |||||
| * Report result. | |||||
| * | |||||
| IF( ERRMAX.LT.THRESH )THEN | |||||
| IF ( IORDER.EQ.0) WRITE( NOUT, FMT = 10000 )SNAME, NC | |||||
| IF ( IORDER.EQ.1) WRITE( NOUT, FMT = 10001 )SNAME, NC | |||||
| ELSE | |||||
| IF ( IORDER.EQ.0) WRITE( NOUT, FMT = 10002 )SNAME, NC, ERRMAX | |||||
| IF ( IORDER.EQ.1) WRITE( NOUT, FMT = 10003 )SNAME, NC, ERRMAX | |||||
| END IF | |||||
| GO TO 130 | |||||
| * | |||||
| 120 CONTINUE | |||||
| WRITE( NOUT, FMT = 9996 )SNAME | |||||
| CALL SPRCN8(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, TRANSB, | |||||
| $ N, K, ALPHA, LDA, LDB, BETA, LDC) | |||||
| * | |||||
| 130 CONTINUE | |||||
| RETURN | |||||
| * | |||||
| 10003 FORMAT( ' ', A13,' COMPLETED THE ROW-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | |||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | |||||
| 10002 FORMAT( ' ', A13,' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ', | |||||
| $ 'TESTS (', I6, ' CALLS)', /' ******* BUT WITH MAXIMUM TEST ', | |||||
| $ 'RATIO ', F8.2, ' - SUSPECT *******' ) | |||||
| 10001 FORMAT( ' ', A13,' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | |||||
| 10000 FORMAT( ' ', A13,' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS', | |||||
| $ ' (', I6, ' CALL', 'S)' ) | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||||
| $ 'ANGED INCORRECTLY *******' ) | |||||
| 9997 FORMAT( ' ', A13, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||||
| $ ' - SUSPECT *******' ) | |||||
| 9996 FORMAT( ' ******* ', A13, ' FAILED ON CALL NUMBER:' ) | |||||
| 9995 FORMAT( 1X, I6, ': ', A13, '(''',A1, ''',''',A1, ''',''', A1,''',', | |||||
| $ 2( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||||
| $ 'C,', I3, ').' ) | |||||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||||
| $ '******' ) | |||||
| * | |||||
| * End of SCHK6 | |||||
| * | |||||
| END | |||||
| SUBROUTINE SPRCN8(NOUT, NC, SNAME, IORDER, UPLO, | |||||
| $ TRANSA, TRANSB, N, | |||||
| $ K, ALPHA, LDA, LDB, BETA, LDC) | |||||
| INTEGER NOUT, NC, IORDER, N, K, LDA, LDB, LDC | |||||
| REAL ALPHA, BETA | |||||
| CHARACTER*1 TRANSA, TRANSB, UPLO | |||||
| CHARACTER*13 SNAME | |||||
| CHARACTER*14 CRC, CTA,CTB,CUPLO | |||||
| IF (UPLO.EQ.'U') THEN | |||||
| CUPLO = 'CblasUpper' | |||||
| ELSE | |||||
| CUPLO = 'CblasLower' | |||||
| END IF | |||||
| IF (TRANSA.EQ.'N')THEN | |||||
| CTA = ' CblasNoTrans' | |||||
| ELSE IF (TRANSA.EQ.'T')THEN | |||||
| CTA = ' CblasTrans' | |||||
| ELSE | |||||
| CTA = 'CblasConjTrans' | |||||
| END IF | |||||
| IF (TRANSB.EQ.'N')THEN | |||||
| CTB = ' CblasNoTrans' | |||||
| ELSE IF (TRANSB.EQ.'T')THEN | |||||
| CTB = ' CblasTrans' | |||||
| ELSE | |||||
| CTB = 'CblasConjTrans' | |||||
| END IF | |||||
| IF (IORDER.EQ.1)THEN | |||||
| CRC = ' CblasRowMajor' | |||||
| ELSE | |||||
| CRC = ' CblasColMajor' | |||||
| END IF | |||||
| WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CUPLO, CTA,CTB | |||||
| WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, LDB, BETA, LDC | |||||
| 9995 FORMAT( 1X, I6, ': ', A13,'(', A14, ',', A14, ',', A14, ',', | |||||
| $ A14, ',') | |||||
| 9994 FORMAT( 10X, 2( I3, ',' ) ,' ', F4.1,' , A,', | |||||
| $ I3, ', B,', I3, ', ', F4.1,' , C,', I3, ').' ) | |||||
| END | |||||
| SUBROUTINE SMMTCH( UPLO, TRANSA, TRANSB, N, KK, ALPHA, A, LDA, | |||||
| $ B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, | |||||
| $ FATAL, NOUT, MV ) | |||||
| * | |||||
| * Checks the results of the computational tests. | |||||
| * | |||||
| * Auxiliary routine for test program for Level 3 Blas. (DGEMMTR) | |||||
| * | |||||
| * -- Written on 19-July-2023. | |||||
| * Martin Koehler, MPI Magdeburg | |||||
| * | |||||
| * .. Parameters .. | |||||
| REAL ZERO, ONE | |||||
| PARAMETER ( ZERO = 0.0, ONE = 1.0 ) | |||||
| * .. Scalar Arguments .. | |||||
| REAL ALPHA, BETA, EPS, ERR | |||||
| INTEGER KK, LDA, LDB, LDC, LDCC, N, NOUT | |||||
| LOGICAL FATAL, MV | |||||
| CHARACTER*1 UPLO, TRANSA, TRANSB | |||||
| * .. Array Arguments .. | |||||
| REAL A( LDA, * ), B( LDB, * ), C( LDC, * ), | |||||
| $ CC( LDCC, * ), CT( * ), G( * ) | |||||
| * .. Local Scalars .. | |||||
| REAL ERRI | |||||
| INTEGER I, J, K, ISTART, ISTOP | |||||
| LOGICAL TRANA, TRANB, UPPER | |||||
| * .. Intrinsic Functions .. | |||||
| INTRINSIC ABS, MAX, SQRT | |||||
| * .. Executable Statements .. | |||||
| UPPER = UPLO.EQ.'U' | |||||
| TRANA = TRANSA.EQ.'T'.OR.TRANSA.EQ.'C' | |||||
| TRANB = TRANSB.EQ.'T'.OR.TRANSB.EQ.'C' | |||||
| * | |||||
| * Compute expected result, one column at a time, in CT using data | |||||
| * in A, B and C. | |||||
| * Compute gauges in G. | |||||
| * | |||||
| ISTART = 1 | |||||
| ISTOP = N | |||||
| DO 120 J = 1, N | |||||
| * | |||||
| IF ( UPPER ) THEN | |||||
| ISTART = 1 | |||||
| ISTOP = J | |||||
| ELSE | |||||
| ISTART = J | |||||
| ISTOP = N | |||||
| END IF | |||||
| DO 10 I = ISTART, ISTOP | |||||
| CT( I ) = ZERO | |||||
| G( I ) = ZERO | |||||
| 10 CONTINUE | |||||
| IF( .NOT.TRANA.AND..NOT.TRANB )THEN | |||||
| DO 30 K = 1, KK | |||||
| DO 20 I = ISTART, ISTOP | |||||
| CT( I ) = CT( I ) + A( I, K )*B( K, J ) | |||||
| G( I ) = G( I ) + ABS( A( I, K ) )*ABS( B( K, J ) ) | |||||
| 20 CONTINUE | |||||
| 30 CONTINUE | |||||
| ELSE IF( TRANA.AND..NOT.TRANB )THEN | |||||
| DO 50 K = 1, KK | |||||
| DO 40 I = ISTART, ISTOP | |||||
| CT( I ) = CT( I ) + A( K, I )*B( K, J ) | |||||
| G( I ) = G( I ) + ABS( A( K, I ) )*ABS( B( K, J ) ) | |||||
| 40 CONTINUE | |||||
| 50 CONTINUE | |||||
| ELSE IF( .NOT.TRANA.AND.TRANB )THEN | |||||
| DO 70 K = 1, KK | |||||
| DO 60 I = ISTART, ISTOP | |||||
| CT( I ) = CT( I ) + A( I, K )*B( J, K ) | |||||
| G( I ) = G( I ) + ABS( A( I, K ) )*ABS( B( J, K ) ) | |||||
| 60 CONTINUE | |||||
| 70 CONTINUE | |||||
| ELSE IF( TRANA.AND.TRANB )THEN | |||||
| DO 90 K = 1, KK | |||||
| DO 80 I = ISTART, ISTOP | |||||
| CT( I ) = CT( I ) + A( K, I )*B( J, K ) | |||||
| G( I ) = G( I ) + ABS( A( K, I ) )*ABS( B( J, K ) ) | |||||
| 80 CONTINUE | |||||
| 90 CONTINUE | |||||
| END IF | |||||
| DO 100 I = ISTART, ISTOP | |||||
| CT( I ) = ALPHA*CT( I ) + BETA*C( I, J ) | |||||
| G( I ) = ABS( ALPHA )*G( I ) + ABS( BETA )*ABS( C( I, J ) ) | |||||
| 100 CONTINUE | |||||
| * | |||||
| * Compute the error ratio for this result. | |||||
| * | |||||
| ERR = ZERO | |||||
| DO 110 I = ISTART, ISTOP | |||||
| ERRI = ABS( CT( I ) - CC( I, J ) )/EPS | |||||
| IF( G( I ).NE.ZERO ) | |||||
| $ ERRI = ERRI/G( I ) | |||||
| ERR = MAX( ERR, ERRI ) | |||||
| IF( ERR*SQRT( EPS ).GE.ONE ) | |||||
| $ GO TO 130 | |||||
| 110 CONTINUE | |||||
| * | |||||
| 120 CONTINUE | |||||
| * | |||||
| * If the loop completes, all results are at least half accurate. | |||||
| GO TO 150 | |||||
| * | |||||
| * Report fatal error. | |||||
| * | |||||
| 130 FATAL = .TRUE. | |||||
| WRITE( NOUT, FMT = 9999 ) | |||||
| DO 140 I = ISTART, ISTOP | |||||
| IF( MV )THEN | |||||
| WRITE( NOUT, FMT = 9998 )I, CT( I ), CC( I, J ) | |||||
| ELSE | |||||
| WRITE( NOUT, FMT = 9998 )I, CC( I, J ), CT( I ) | |||||
| END IF | |||||
| 140 CONTINUE | |||||
| IF( N.GT.1 ) | |||||
| $ WRITE( NOUT, FMT = 9997 )J | |||||
| * | |||||
| 150 CONTINUE | |||||
| RETURN | |||||
| * | |||||
| 9999 FORMAT( ' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL', | |||||
| $ 'F ACCURATE *******', /' EXPECTED RESULT COMPU', | |||||
| $ 'TED RESULT' ) | |||||
| 9998 FORMAT( 1X, I7, 2G18.6 ) | |||||
| 9997 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||||
| * | |||||
| * End of SMMTCH | |||||
| * | |||||
| END | |||||
| @@ -5,28 +5,33 @@ | |||||
| * Modified by T. H. Do, 4/15/98, SGI/CRAY Research. | * Modified by T. H. Do, 4/15/98, SGI/CRAY Research. | ||||
| */ | */ | ||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include "common.h" | |||||
| #include <stdio.h> | |||||
| #include "cblas.h" | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| #define TEST_COL_MJR 0 | #define TEST_COL_MJR 0 | ||||
| #define TEST_ROW_MJR 1 | #define TEST_ROW_MJR 1 | ||||
| #define UNDEFINED -1 | #define UNDEFINED -1 | ||||
| void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| void F77_zgemm(int *layout, char *transpa, char *transpb, int *m, int *n, | |||||
| int *k, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | 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 *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | ||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN transpa_len, FORTRAN_STRLEN transpb_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | CBLAS_TEST_ZOMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| get_transpose_type(transpa, &transa); | get_transpose_type(transpa, &transa); | ||||
| get_transpose_type(transpb, &transb); | get_transpose_type(transpb, &transb); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | if (transa == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX*)malloc((*m)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX*)malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -35,7 +40,7 @@ void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| } | } | ||||
| else { | else { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((size_t)LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*m; j++ ) { | for( j=0; j<*m; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -45,7 +50,7 @@ void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| if (transb == CblasNoTrans) { | if (transb == CblasNoTrans) { | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX) ); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*LDB*sizeof(CBLAS_TEST_ZOMPLEX) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | B[i*LDB+j].real=b[j*(*ldb)+i].real; | ||||
| @@ -54,7 +59,7 @@ void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| } | } | ||||
| else { | else { | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((size_t)LDB*(*n)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc(LDB*(*n)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | B[i*LDB+j].real=b[j*(*ldb)+i].real; | ||||
| @@ -63,7 +68,7 @@ void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) { | for( i=0; i<*m; i++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -80,30 +85,116 @@ void F77_zgemm(int *order, char *transpa, char *transpb, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zgemm( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | cblas_zgemm( CblasColMajor, transa, transb, *m, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_zgemm( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda, | cblas_zgemm( UNDEFINED, transa, transb, *m, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_zhemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_zgemmtr(int *layout, char *uplop, char *transpa, char *transpb, 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; | |||||
| CBLAS_TRANSPOSE transa, transb; | |||||
| CBLAS_UPLO uplo; | |||||
| get_transpose_type(transpa, &transa); | |||||
| get_transpose_type(transpb, &transb); | |||||
| get_uplo_type(uplop, &uplo); | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (transa == CblasNoTrans) { | |||||
| LDA = *k+1; | |||||
| A=(CBLAS_TEST_ZOMPLEX*)malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; 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 = *n+1; | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*k; i++ ) | |||||
| for( j=0; j<*n; 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((*n)*LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; i++ ) { | |||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | |||||
| C[i*LDC+j].imag=c[j*(*ldc)+i].imag; | |||||
| } | |||||
| cblas_zgemmtr( CblasRowMajor, uplo, transa, transb, *n, *k, alpha, A, LDA, | |||||
| B, LDB, beta, C, LDC ); | |||||
| for( j=0; j<*n; j++ ) | |||||
| for( i=0; i<*n; 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 (*layout == TEST_COL_MJR) | |||||
| cblas_zgemmtr( CblasColMajor, uplo, transa, transb, *n, *k, alpha, a, *lda, | |||||
| b, *ldb, beta, c, *ldc ); | |||||
| else | |||||
| cblas_zgemmtr( UNDEFINED, uplo, transa, transb, *n, *k, alpha, a, *lda, | |||||
| b, *ldb, beta, c, *ldc ); | |||||
| } | |||||
| void F77_zhemm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | ||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | CBLAS_TEST_ZOMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A= (CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A= (CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) { | for( j=0; j<*m; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -112,7 +203,7 @@ void F77_zhemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -120,14 +211,14 @@ void F77_zhemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| } | } | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc( (*m)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc( (*m)*LDB*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | B[i*LDB+j].real=b[j*(*ldb)+i].real; | ||||
| B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | B[i*LDB+j].imag=b[j*(*ldb)+i].imag; | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) { | for( i=0; i<*m; i++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -144,48 +235,52 @@ void F77_zhemm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zhemm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_zhemm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_zhemm( UNDEFINED, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_zhemm( UNDEFINED, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_zsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| void F77_zsymm(int *layout, char *rtlf, char *uplow, int *m, int *n, | |||||
| CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | ||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len | |||||
| #endif | |||||
| ) { | |||||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | CBLAS_TEST_ZOMPLEX *A, *B, *C; | ||||
| int i,j,LDA, LDB, LDC; | int i,j,LDA, LDB, LDC; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_SIDE side; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_SIDE side; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) | for( j=0; j<*m; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| A[i*LDA+j]=a[j*(*lda)+i]; | A[i*LDA+j]=a[j*(*lda)+i]; | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDB*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| B[i*LDB+j]=b[j*(*ldb)+i]; | B[i*LDB+j]=b[j*(*ldb)+i]; | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( j=0; j<*n; j++ ) | for( j=0; j<*n; j++ ) | ||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| C[i*LDC+j]=c[j*(*ldc)+i]; | C[i*LDC+j]=c[j*(*ldc)+i]; | ||||
| @@ -198,7 +293,7 @@ void F77_zsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zsymm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | cblas_zsymm( CblasColMajor, side, uplo, *m, *n, alpha, a, *lda, b, *ldb, | ||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| else | else | ||||
| @@ -206,22 +301,26 @@ void F77_zsymm(int *order, char *rtlf, char *uplow, int *m, int *n, | |||||
| beta, c, *ldc ); | beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_zherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_zherk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| double *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | double *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| double *beta, CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| double *beta, CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| CBLAS_TEST_ZOMPLEX *A, *C; | CBLAS_TEST_ZOMPLEX *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -230,7 +329,7 @@ void F77_zherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -238,7 +337,7 @@ void F77_zherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -254,7 +353,7 @@ void F77_zherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zherk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | cblas_zherk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| @@ -262,22 +361,26 @@ void F77_zherk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_zsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_zsyrk(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDC; | int i,j,LDA,LDC; | ||||
| CBLAS_TEST_ZOMPLEX *A, *C; | CBLAS_TEST_ZOMPLEX *A, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -286,7 +389,7 @@ void F77_zsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*k)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -294,7 +397,7 @@ void F77_zsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -310,31 +413,35 @@ void F77_zsyrk(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(A); | free(A); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zsyrk(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, beta, | cblas_zsyrk(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| else | else | ||||
| cblas_zsyrk(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, beta, | cblas_zsyrk(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, beta, | ||||
| c, *ldc ); | c, *ldc ); | ||||
| } | } | ||||
| void F77_zher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_zher2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| CBLAS_TEST_ZOMPLEX *b, int *ldb, double *beta, | CBLAS_TEST_ZOMPLEX *b, int *ldb, double *beta, | ||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | CBLAS_TEST_ZOMPLEX *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDB*sizeof(CBLAS_TEST_ZOMPLEX )); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -346,8 +453,8 @@ void F77_zher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| else { | else { | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc( (size_t)LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc( (size_t)LDB*(*k)*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc( LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc( LDB*(*k)*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ){ | for( j=0; j<*n; j++ ){ | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -357,7 +464,7 @@ void F77_zher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc( (*n)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc( (*n)*LDC*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -374,31 +481,35 @@ void F77_zher2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zher2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | cblas_zher2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_zher2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | cblas_zher2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, *beta, c, *ldc ); | b, *ldb, *beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_zsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| void F77_zsyr2k(int *layout, char *uplow, char *transp, int *n, int *k, | |||||
| CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, | ||||
| CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | CBLAS_TEST_ZOMPLEX *b, int *ldb, CBLAS_TEST_ZOMPLEX *beta, | ||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc ) { | |||||
| CBLAS_TEST_ZOMPLEX *c, int *ldc | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB,LDC; | int i,j,LDA,LDB,LDC; | ||||
| CBLAS_TEST_ZOMPLEX *A, *B, *C; | CBLAS_TEST_ZOMPLEX *A, *B, *C; | ||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (trans == CblasNoTrans) { | if (trans == CblasNoTrans) { | ||||
| LDA = *k+1; | LDA = *k+1; | ||||
| LDB = *k+1; | LDB = *k+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*k; j++ ) { | for( j=0; j<*k; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -410,8 +521,8 @@ void F77_zsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| else { | else { | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((size_t)LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((size_t)LDB*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc(LDA*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc(LDB*(*k)*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*k; i++ ) | for( i=0; i<*k; i++ ) | ||||
| for( j=0; j<*n; j++ ){ | for( j=0; j<*n; j++ ){ | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -421,7 +532,7 @@ void F77_zsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| } | } | ||||
| } | } | ||||
| LDC = *n+1; | LDC = *n+1; | ||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc( (*n)*(size_t)LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| C=(CBLAS_TEST_ZOMPLEX* )malloc( (*n)*LDC*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| C[i*LDC+j].real=c[j*(*ldc)+i].real; | C[i*LDC+j].real=c[j*(*ldc)+i].real; | ||||
| @@ -438,32 +549,36 @@ void F77_zsyr2k(int *order, char *uplow, char *transp, int *n, int *k, | |||||
| free(B); | free(B); | ||||
| free(C); | free(C); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_zsyr2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | cblas_zsyr2k(CblasColMajor, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| else | else | ||||
| cblas_zsyr2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | cblas_zsyr2k(UNDEFINED, uplo, trans, *n, *k, alpha, a, *lda, | ||||
| b, *ldb, beta, c, *ldc ); | b, *ldb, beta, c, *ldc ); | ||||
| } | } | ||||
| void F77_ztrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_ztrmm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, | int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, | ||||
| int *lda, CBLAS_TEST_ZOMPLEX *b, int *ldb) { | |||||
| int *lda, CBLAS_TEST_ZOMPLEX *b, int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| CBLAS_TEST_ZOMPLEX *A, *B; | CBLAS_TEST_ZOMPLEX *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) { | for( j=0; j<*m; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -472,7 +587,7 @@ void F77_ztrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -480,7 +595,7 @@ void F77_ztrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| } | } | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | B[i*LDB+j].real=b[j*(*ldb)+i].real; | ||||
| @@ -496,7 +611,7 @@ void F77_ztrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ztrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | cblas_ztrmm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| @@ -504,25 +619,29 @@ void F77_ztrmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| void F77_ztrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| void F77_ztrsm(int *layout, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, | int *m, int *n, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, | ||||
| int *lda, CBLAS_TEST_ZOMPLEX *b, int *ldb) { | |||||
| int *lda, CBLAS_TEST_ZOMPLEX *b, int *ldb | |||||
| #ifdef BLAS_FORTRAN_STRLEN_END | |||||
| , FORTRAN_STRLEN rtlf_len, FORTRAN_STRLEN uplow_len, FORTRAN_STRLEN transp_len, FORTRAN_STRLEN diagn_len | |||||
| #endif | |||||
| ) { | |||||
| int i,j,LDA,LDB; | int i,j,LDA,LDB; | ||||
| CBLAS_TEST_ZOMPLEX *A, *B; | CBLAS_TEST_ZOMPLEX *A, *B; | ||||
| enum CBLAS_SIDE side; | |||||
| enum CBLAS_DIAG diag; | |||||
| enum CBLAS_UPLO uplo; | |||||
| enum CBLAS_TRANSPOSE trans; | |||||
| CBLAS_SIDE side; | |||||
| CBLAS_DIAG diag; | |||||
| CBLAS_UPLO uplo; | |||||
| CBLAS_TRANSPOSE trans; | |||||
| get_uplo_type(uplow,&uplo); | get_uplo_type(uplow,&uplo); | ||||
| get_transpose_type(transp,&trans); | get_transpose_type(transp,&trans); | ||||
| get_diag_type(diagn,&diag); | get_diag_type(diagn,&diag); | ||||
| get_side_type(rtlf,&side); | get_side_type(rtlf,&side); | ||||
| if (*order == TEST_ROW_MJR) { | |||||
| if (*layout == TEST_ROW_MJR) { | |||||
| if (side == CblasLeft) { | if (side == CblasLeft) { | ||||
| LDA = *m+1; | LDA = *m+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc( (*m)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc( (*m)*LDA*sizeof(CBLAS_TEST_ZOMPLEX ) ); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*m; j++ ) { | for( j=0; j<*m; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -531,7 +650,7 @@ void F77_ztrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| } | } | ||||
| else{ | else{ | ||||
| LDA = *n+1; | LDA = *n+1; | ||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*(size_t)LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| A=(CBLAS_TEST_ZOMPLEX* )malloc((*n)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*n; i++ ) | for( i=0; i<*n; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| A[i*LDA+j].real=a[j*(*lda)+i].real; | A[i*LDA+j].real=a[j*(*lda)+i].real; | ||||
| @@ -539,7 +658,7 @@ void F77_ztrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| } | } | ||||
| } | } | ||||
| LDB = *n+1; | LDB = *n+1; | ||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*(size_t)LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| B=(CBLAS_TEST_ZOMPLEX* )malloc((*m)*LDB*sizeof(CBLAS_TEST_ZOMPLEX)); | |||||
| for( i=0; i<*m; i++ ) | for( i=0; i<*m; i++ ) | ||||
| for( j=0; j<*n; j++ ) { | for( j=0; j<*n; j++ ) { | ||||
| B[i*LDB+j].real=b[j*(*ldb)+i].real; | B[i*LDB+j].real=b[j*(*ldb)+i].real; | ||||
| @@ -555,12 +674,10 @@ void F77_ztrsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, | |||||
| free(A); | free(A); | ||||
| free(B); | free(B); | ||||
| } | } | ||||
| else if (*order == TEST_COL_MJR) | |||||
| else if (*layout == TEST_COL_MJR) | |||||
| cblas_ztrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | cblas_ztrsm(CblasColMajor, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| else | else | ||||
| cblas_ztrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | cblas_ztrsm(UNDEFINED, side, uplo, trans, diag, *m, *n, alpha, | ||||
| a, *lda, b, *ldb); | a, *lda, b, *ldb); | ||||
| } | } | ||||
| @@ -5,18 +5,15 @@ | |||||
| #ifndef CBLAS_TEST_H | #ifndef CBLAS_TEST_H | ||||
| #define CBLAS_TEST_H | #define CBLAS_TEST_H | ||||
| #include "cblas.h" | #include "cblas.h" | ||||
| #include "cblas_mangling.h" | |||||
| #ifdef USE64BITINT | |||||
| #define int long | |||||
| #endif | |||||
| /* It seems all current Fortran compilers put strlen at end. | |||||
| * Some historical compilers put strlen after the str argument | |||||
| * or make the str argument into a struct. */ | |||||
| #define BLAS_FORTRAN_STRLEN_END | |||||
| #if defined(_MSC_VER) && defined(__INTEL_CLANG_COMPILER) | |||||
| //#define LAPACK_COMPLEX_STRUCTURE | |||||
| #define NOCHANGE | |||||
| #endif | |||||
| /* e.g. mingw64/x86_64-w64-mingw32/include/winerror.h */ | |||||
| #ifdef FAILED | |||||
| #undef FAILED | |||||
| #ifndef FORTRAN_STRLEN | |||||
| #define FORTRAN_STRLEN size_t | |||||
| #endif | #endif | ||||
| #define TRUE 1 | #define TRUE 1 | ||||
| @@ -33,497 +30,174 @@ | |||||
| typedef struct { float real; float imag; } CBLAS_TEST_COMPLEX; | typedef struct { float real; float imag; } CBLAS_TEST_COMPLEX; | ||||
| typedef struct { double real; double imag; } CBLAS_TEST_ZOMPLEX; | typedef struct { double real; double imag; } CBLAS_TEST_ZOMPLEX; | ||||
| #if defined(ADD_) | |||||
| /* | |||||
| * Level 1 BLAS | |||||
| */ | |||||
| #define F77_srotg srotgtest_ | |||||
| #define F77_srotmg srotmgtest_ | |||||
| #define F77_srot srottest_ | |||||
| #define F77_srotm srotmtest_ | |||||
| #define F77_drotg drotgtest_ | |||||
| #define F77_drotmg drotmgtest_ | |||||
| #define F77_drot drottest_ | |||||
| #define F77_drotm drotmtest_ | |||||
| #define F77_sswap sswaptest_ | |||||
| #define F77_scopy scopytest_ | |||||
| #define F77_saxpy saxpytest_ | |||||
| #define F77_isamax isamaxtest_ | |||||
| #define F77_dswap dswaptest_ | |||||
| #define F77_dcopy dcopytest_ | |||||
| #define F77_daxpy daxpytest_ | |||||
| #define F77_idamax idamaxtest_ | |||||
| #define F77_cswap cswaptest_ | |||||
| #define F77_ccopy ccopytest_ | |||||
| #define F77_caxpy caxpytest_ | |||||
| #define F77_icamax icamaxtest_ | |||||
| #define F77_zswap zswaptest_ | |||||
| #define F77_zcopy zcopytest_ | |||||
| #define F77_zaxpy zaxpytest_ | |||||
| #define F77_izamax izamaxtest_ | |||||
| #define F77_sdot sdottest_ | |||||
| #define F77_ddot ddottest_ | |||||
| #define F77_dsdot dsdottest_ | |||||
| #define F77_sscal sscaltest_ | |||||
| #define F77_dscal dscaltest_ | |||||
| #define F77_cscal cscaltest_ | |||||
| #define F77_zscal zscaltest_ | |||||
| #define F77_csscal csscaltest_ | |||||
| #define F77_zdscal zdscaltest_ | |||||
| #define F77_cdotu cdotutest_ | |||||
| #define F77_cdotc cdotctest_ | |||||
| #define F77_zdotu zdotutest_ | |||||
| #define F77_zdotc zdotctest_ | |||||
| #define F77_snrm2 snrm2test_ | |||||
| #define F77_sasum sasumtest_ | |||||
| #define F77_dnrm2 dnrm2test_ | |||||
| #define F77_dasum dasumtest_ | |||||
| #define F77_scnrm2 scnrm2test_ | |||||
| #define F77_scasum scasumtest_ | |||||
| #define F77_dznrm2 dznrm2test_ | |||||
| #define F77_dzasum dzasumtest_ | |||||
| #define F77_sdsdot sdsdottest_ | |||||
| /* | |||||
| * Level 2 BLAS | |||||
| */ | |||||
| #define F77_s2chke cs2chke_ | |||||
| #define F77_d2chke cd2chke_ | |||||
| #define F77_c2chke cc2chke_ | |||||
| #define F77_z2chke cz2chke_ | |||||
| #define F77_ssymv cssymv_ | |||||
| #define F77_ssbmv cssbmv_ | |||||
| #define F77_sspmv csspmv_ | |||||
| #define F77_sger csger_ | |||||
| #define F77_ssyr cssyr_ | |||||
| #define F77_sspr csspr_ | |||||
| #define F77_ssyr2 cssyr2_ | |||||
| #define F77_sspr2 csspr2_ | |||||
| #define F77_dsymv cdsymv_ | |||||
| #define F77_dsbmv cdsbmv_ | |||||
| #define F77_dspmv cdspmv_ | |||||
| #define F77_dger cdger_ | |||||
| #define F77_dsyr cdsyr_ | |||||
| #define F77_dspr cdspr_ | |||||
| #define F77_dsyr2 cdsyr2_ | |||||
| #define F77_dspr2 cdspr2_ | |||||
| #define F77_chemv cchemv_ | |||||
| #define F77_chbmv cchbmv_ | |||||
| #define F77_chpmv cchpmv_ | |||||
| #define F77_cgeru ccgeru_ | |||||
| #define F77_cgerc ccgerc_ | |||||
| #define F77_cher ccher_ | |||||
| #define F77_chpr cchpr_ | |||||
| #define F77_cher2 ccher2_ | |||||
| #define F77_chpr2 cchpr2_ | |||||
| #define F77_zhemv czhemv_ | |||||
| #define F77_zhbmv czhbmv_ | |||||
| #define F77_zhpmv czhpmv_ | |||||
| #define F77_zgeru czgeru_ | |||||
| #define F77_zgerc czgerc_ | |||||
| #define F77_zher czher_ | |||||
| #define F77_zhpr czhpr_ | |||||
| #define F77_zher2 czher2_ | |||||
| #define F77_zhpr2 czhpr2_ | |||||
| #define F77_sgemv csgemv_ | |||||
| #define F77_sgbmv csgbmv_ | |||||
| #define F77_strmv cstrmv_ | |||||
| #define F77_stbmv cstbmv_ | |||||
| #define F77_stpmv cstpmv_ | |||||
| #define F77_strsv cstrsv_ | |||||
| #define F77_stbsv cstbsv_ | |||||
| #define F77_stpsv cstpsv_ | |||||
| #define F77_dgemv cdgemv_ | |||||
| #define F77_dgbmv cdgbmv_ | |||||
| #define F77_dtrmv cdtrmv_ | |||||
| #define F77_dtbmv cdtbmv_ | |||||
| #define F77_dtpmv cdtpmv_ | |||||
| #define F77_dtrsv cdtrsv_ | |||||
| #define F77_dtbsv cdtbsv_ | |||||
| #define F77_dtpsv cdtpsv_ | |||||
| #define F77_cgemv ccgemv_ | |||||
| #define F77_cgbmv ccgbmv_ | |||||
| #define F77_ctrmv cctrmv_ | |||||
| #define F77_ctbmv cctbmv_ | |||||
| #define F77_ctpmv cctpmv_ | |||||
| #define F77_ctrsv cctrsv_ | |||||
| #define F77_ctbsv cctbsv_ | |||||
| #define F77_ctpsv cctpsv_ | |||||
| #define F77_zgemv czgemv_ | |||||
| #define F77_zgbmv czgbmv_ | |||||
| #define F77_ztrmv cztrmv_ | |||||
| #define F77_ztbmv cztbmv_ | |||||
| #define F77_ztpmv cztpmv_ | |||||
| #define F77_ztrsv cztrsv_ | |||||
| #define F77_ztbsv cztbsv_ | |||||
| #define F77_ztpsv cztpsv_ | |||||
| /* | |||||
| * Level 3 BLAS | |||||
| */ | |||||
| #define F77_s3chke cs3chke_ | |||||
| #define F77_d3chke cd3chke_ | |||||
| #define F77_c3chke cc3chke_ | |||||
| #define F77_z3chke cz3chke_ | |||||
| #define F77_chemm cchemm_ | |||||
| #define F77_cherk ccherk_ | |||||
| #define F77_cher2k ccher2k_ | |||||
| #define F77_zhemm czhemm_ | |||||
| #define F77_zherk czherk_ | |||||
| #define F77_zher2k czher2k_ | |||||
| #define F77_sgemm csgemm_ | |||||
| #define F77_ssymm cssymm_ | |||||
| #define F77_ssyrk cssyrk_ | |||||
| #define F77_ssyr2k cssyr2k_ | |||||
| #define F77_strmm cstrmm_ | |||||
| #define F77_strsm cstrsm_ | |||||
| #define F77_dgemm cdgemm_ | |||||
| #define F77_dsymm cdsymm_ | |||||
| #define F77_dsyrk cdsyrk_ | |||||
| #define F77_dsyr2k cdsyr2k_ | |||||
| #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_ | |||||
| #define F77_ztrmm cztrmm_ | |||||
| #define F77_ztrsm cztrsm_ | |||||
| #elif defined(UPCASE) | |||||
| //#define F77_xerbla F77_GLOBAL(xerbla,XERBLA) | |||||
| /* | /* | ||||
| * Level 1 BLAS | * Level 1 BLAS | ||||
| */ | */ | ||||
| #define F77_srotg SROTGTEST | |||||
| #define F77_srotmg SROTMGTEST | |||||
| #define F77_srot SROTCTEST | |||||
| #define F77_srotm SROTMTEST | |||||
| #define F77_drotg DROTGTEST | |||||
| #define F77_drotmg DROTMGTEST | |||||
| #define F77_drot DROTTEST | |||||
| #define F77_drotm DROTMTEST | |||||
| #define F77_sswap SSWAPTEST | |||||
| #define F77_scopy SCOPYTEST | |||||
| #define F77_saxpy SAXPYTEST | |||||
| #define F77_isamax ISAMAXTEST | |||||
| #define F77_dswap DSWAPTEST | |||||
| #define F77_dcopy DCOPYTEST | |||||
| #define F77_daxpy DAXPYTEST | |||||
| #define F77_idamax IDAMAXTEST | |||||
| #define F77_cswap CSWAPTEST | |||||
| #define F77_ccopy CCOPYTEST | |||||
| #define F77_caxpy CAXPYTEST | |||||
| #define F77_icamax ICAMAXTEST | |||||
| #define F77_zswap ZSWAPTEST | |||||
| #define F77_zcopy ZCOPYTEST | |||||
| #define F77_zaxpy ZAXPYTEST | |||||
| #define F77_izamax IZAMAXTEST | |||||
| #define F77_sdot SDOTTEST | |||||
| #define F77_ddot DDOTTEST | |||||
| #define F77_dsdot DSDOTTEST | |||||
| #define F77_sscal SSCALTEST | |||||
| #define F77_dscal DSCALTEST | |||||
| #define F77_cscal CSCALTEST | |||||
| #define F77_zscal ZSCALTEST | |||||
| #define F77_csscal CSSCALTEST | |||||
| #define F77_zdscal ZDSCALTEST | |||||
| #define F77_cdotu CDOTUTEST | |||||
| #define F77_cdotc CDOTCTEST | |||||
| #define F77_zdotu ZDOTUTEST | |||||
| #define F77_zdotc ZDOTCTEST | |||||
| #define F77_snrm2 SNRM2TEST | |||||
| #define F77_sasum SASUMTEST | |||||
| #define F77_dnrm2 DNRM2TEST | |||||
| #define F77_dasum DASUMTEST | |||||
| #define F77_scnrm2 SCNRM2TEST | |||||
| #define F77_scasum SCASUMTEST | |||||
| #define F77_dznrm2 DZNRM2TEST | |||||
| #define F77_dzasum DZASUMTEST | |||||
| #define F77_sdsdot SDSDOTTEST | |||||
| #define F77_srotg F77_GLOBAL(srotgtest,SROTGTEST) | |||||
| #define F77_srotmg F77_GLOBAL(srotmgtest,SROTMGTEST) | |||||
| #define F77_srot F77_GLOBAL(srottest,SROTTEST) | |||||
| #define F77_srotm F77_GLOBAL(srotmtest,SROTMTEST) | |||||
| #define F77_drotg F77_GLOBAL(drotgtest,DROTGTEST) | |||||
| #define F77_drotmg F77_GLOBAL(drotmgtest,DROTMGTEST) | |||||
| #define F77_drot F77_GLOBAL(drottest,DROTTEST) | |||||
| #define F77_drotm F77_GLOBAL(drotmtest,DROTMTEST) | |||||
| #define F77_sswap F77_GLOBAL(sswaptest,SSWAPTEST) | |||||
| #define F77_scopy F77_GLOBAL(scopytest,SCOPYTEST) | |||||
| #define F77_saxpy F77_GLOBAL(saxpytest,SAXPYTEST) | |||||
| #define F77_isamax F77_GLOBAL(isamaxtest,ISAMAXTEST) | |||||
| #define F77_dswap F77_GLOBAL(dswaptest,DSWAPTEST) | |||||
| #define F77_dcopy F77_GLOBAL(dcopytest,DCOPYTEST) | |||||
| #define F77_daxpy F77_GLOBAL(daxpytest,DAXPYTEST) | |||||
| #define F77_idamax F77_GLOBAL(idamaxtest,IDAMAXTEST) | |||||
| #define F77_cswap F77_GLOBAL(cswaptest,CSWAPTEST) | |||||
| #define F77_ccopy F77_GLOBAL(ccopytest,CCOPYTEST) | |||||
| #define F77_caxpy F77_GLOBAL(caxpytest,CAXPYTEST) | |||||
| #define F77_icamax F77_GLOBAL(icamaxtest,ICAMAXTEST) | |||||
| #define F77_zswap F77_GLOBAL(zswaptest,ZSWAPTEST) | |||||
| #define F77_zcopy F77_GLOBAL(zcopytest,ZCOPYTEST) | |||||
| #define F77_zaxpy F77_GLOBAL(zaxpytest,ZAXPYTEST) | |||||
| #define F77_izamax F77_GLOBAL(izamaxtest,IZAMAXTEST) | |||||
| #define F77_sdot F77_GLOBAL(sdottest,SDOTTEST) | |||||
| #define F77_ddot F77_GLOBAL(ddottest,DDOTTEST) | |||||
| #define F77_dsdot F77_GLOBAL(dsdottest,DSDOTTEST) | |||||
| #define F77_sscal F77_GLOBAL(sscaltest,SSCALTEST) | |||||
| #define F77_dscal F77_GLOBAL(dscaltest,DSCALTEST) | |||||
| #define F77_cscal F77_GLOBAL(cscaltest,CSCALTEST) | |||||
| #define F77_zscal F77_GLOBAL(zscaltest,ZSCALTEST) | |||||
| #define F77_csscal F77_GLOBAL(csscaltest,CSSCALTEST) | |||||
| #define F77_zdscal F77_GLOBAL(zdscaltest,ZDSCALTEST) | |||||
| #define F77_cdotu F77_GLOBAL(cdotutest,CDOTUTEST) | |||||
| #define F77_cdotc F77_GLOBAL(cdotctest,CDOTCTEST) | |||||
| #define F77_zdotu F77_GLOBAL(zdotutest,ZDOTUTEST) | |||||
| #define F77_zdotc F77_GLOBAL(zdotctest,ZDOTCTEST) | |||||
| #define F77_snrm2 F77_GLOBAL(snrm2test,SNRM2TEST) | |||||
| #define F77_sasum F77_GLOBAL(sasumtest,SASUMTEST) | |||||
| #define F77_dnrm2 F77_GLOBAL(dnrm2test,DNRM2TEST) | |||||
| #define F77_dasum F77_GLOBAL(dasumtest,DASUMTEST) | |||||
| #define F77_scnrm2 F77_GLOBAL(scnrm2test,SCNRM2TEST) | |||||
| #define F77_scasum F77_GLOBAL(scasumtest,SCASUMTEST) | |||||
| #define F77_dznrm2 F77_GLOBAL(dznrm2test,DZNRM2TEST) | |||||
| #define F77_dzasum F77_GLOBAL(dzasumtest,DZASUMTEST) | |||||
| #define F77_sdsdot F77_GLOBAL(sdsdottest, SDSDOTTEST) | |||||
| /* | /* | ||||
| * Level 2 BLAS | * Level 2 BLAS | ||||
| */ | */ | ||||
| #define F77_s2chke CS2CHKE | |||||
| #define F77_d2chke CD2CHKE | |||||
| #define F77_c2chke CC2CHKE | |||||
| #define F77_z2chke CZ2CHKE | |||||
| #define F77_ssymv CSSYMV | |||||
| #define F77_ssbmv CSSBMV | |||||
| #define F77_sspmv CSSPMV | |||||
| #define F77_sger CSGER | |||||
| #define F77_ssyr CSSYR | |||||
| #define F77_sspr CSSPR | |||||
| #define F77_ssyr2 CSSYR2 | |||||
| #define F77_sspr2 CSSPR2 | |||||
| #define F77_dsymv CDSYMV | |||||
| #define F77_dsbmv CDSBMV | |||||
| #define F77_dspmv CDSPMV | |||||
| #define F77_dger CDGER | |||||
| #define F77_dsyr CDSYR | |||||
| #define F77_dspr CDSPR | |||||
| #define F77_dsyr2 CDSYR2 | |||||
| #define F77_dspr2 CDSPR2 | |||||
| #define F77_chemv CCHEMV | |||||
| #define F77_chbmv CCHBMV | |||||
| #define F77_chpmv CCHPMV | |||||
| #define F77_cgeru CCGERU | |||||
| #define F77_cgerc CCGERC | |||||
| #define F77_cher CCHER | |||||
| #define F77_chpr CCHPR | |||||
| #define F77_cher2 CCHER2 | |||||
| #define F77_chpr2 CCHPR2 | |||||
| #define F77_zhemv CZHEMV | |||||
| #define F77_zhbmv CZHBMV | |||||
| #define F77_zhpmv CZHPMV | |||||
| #define F77_zgeru CZGERU | |||||
| #define F77_zgerc CZGERC | |||||
| #define F77_zher CZHER | |||||
| #define F77_zhpr CZHPR | |||||
| #define F77_zher2 CZHER2 | |||||
| #define F77_zhpr2 CZHPR2 | |||||
| #define F77_sgemv CSGEMV | |||||
| #define F77_sgbmv CSGBMV | |||||
| #define F77_strmv CSTRMV | |||||
| #define F77_stbmv CSTBMV | |||||
| #define F77_stpmv CSTPMV | |||||
| #define F77_strsv CSTRSV | |||||
| #define F77_stbsv CSTBSV | |||||
| #define F77_stpsv CSTPSV | |||||
| #define F77_dgemv CDGEMV | |||||
| #define F77_dgbmv CDGBMV | |||||
| #define F77_dtrmv CDTRMV | |||||
| #define F77_dtbmv CDTBMV | |||||
| #define F77_dtpmv CDTPMV | |||||
| #define F77_dtrsv CDTRSV | |||||
| #define F77_dtbsv CDTBSV | |||||
| #define F77_dtpsv CDTPSV | |||||
| #define F77_cgemv CCGEMV | |||||
| #define F77_cgbmv CCGBMV | |||||
| #define F77_ctrmv CCTRMV | |||||
| #define F77_ctbmv CCTBMV | |||||
| #define F77_ctpmv CCTPMV | |||||
| #define F77_ctrsv CCTRSV | |||||
| #define F77_ctbsv CCTBSV | |||||
| #define F77_ctpsv CCTPSV | |||||
| #define F77_zgemv CZGEMV | |||||
| #define F77_zgbmv CZGBMV | |||||
| #define F77_ztrmv CZTRMV | |||||
| #define F77_ztbmv CZTBMV | |||||
| #define F77_ztpmv CZTPMV | |||||
| #define F77_ztrsv CZTRSV | |||||
| #define F77_ztbsv CZTBSV | |||||
| #define F77_ztpsv CZTPSV | |||||
| #define F77_s2chke F77_GLOBAL(cs2chke,CS2CHKE) | |||||
| #define F77_d2chke F77_GLOBAL(cd2chke,CD2CHKE) | |||||
| #define F77_c2chke F77_GLOBAL(cc2chke,CC2CHKE) | |||||
| #define F77_z2chke F77_GLOBAL(cz2chke,CZ2CHKE) | |||||
| #define F77_ssymv F77_GLOBAL(cssymv,CSSYMV) | |||||
| #define F77_ssbmv F77_GLOBAL(cssbmv,CSSBMV) | |||||
| #define F77_sspmv F77_GLOBAL(csspmv,CSSPMV) | |||||
| #define F77_sger F77_GLOBAL(csger,CSGER) | |||||
| #define F77_ssyr F77_GLOBAL(cssyr,CSSYR) | |||||
| #define F77_sspr F77_GLOBAL(csspr,CSSPR) | |||||
| #define F77_ssyr2 F77_GLOBAL(cssyr2,CSSYR2) | |||||
| #define F77_sspr2 F77_GLOBAL(csspr2,CSSPR2) | |||||
| #define F77_dsymv F77_GLOBAL(cdsymv,CDSYMV) | |||||
| #define F77_dsbmv F77_GLOBAL(cdsbmv,CDSBMV) | |||||
| #define F77_dspmv F77_GLOBAL(cdspmv,CDSPMV) | |||||
| #define F77_dger F77_GLOBAL(cdger,CDGER) | |||||
| #define F77_dsyr F77_GLOBAL(cdsyr,CDSYR) | |||||
| #define F77_dspr F77_GLOBAL(cdspr,CDSPR) | |||||
| #define F77_dsyr2 F77_GLOBAL(cdsyr2,CDSYR2) | |||||
| #define F77_dspr2 F77_GLOBAL(cdspr2,CDSPR2) | |||||
| #define F77_chemv F77_GLOBAL(cchemv,CCHEMV) | |||||
| #define F77_chbmv F77_GLOBAL(cchbmv,CCHBMV) | |||||
| #define F77_chpmv F77_GLOBAL(cchpmv,CCHPMV) | |||||
| #define F77_cgeru F77_GLOBAL(ccgeru,CCGERU) | |||||
| #define F77_cgerc F77_GLOBAL(ccgerc,CCGERC) | |||||
| #define F77_cher F77_GLOBAL(ccher,CCHER) | |||||
| #define F77_chpr F77_GLOBAL(cchpr,CCHPR) | |||||
| #define F77_cher2 F77_GLOBAL(ccher2,CCHER2) | |||||
| #define F77_chpr2 F77_GLOBAL(cchpr2,CCHPR2) | |||||
| #define F77_zhemv F77_GLOBAL(czhemv,CZHEMV) | |||||
| #define F77_zhbmv F77_GLOBAL(czhbmv,CZHBMV) | |||||
| #define F77_zhpmv F77_GLOBAL(czhpmv,CZHPMV) | |||||
| #define F77_zgeru F77_GLOBAL(czgeru,CZGERU) | |||||
| #define F77_zgerc F77_GLOBAL(czgerc,CZGERC) | |||||
| #define F77_zher F77_GLOBAL(czher,CZHER) | |||||
| #define F77_zhpr F77_GLOBAL(czhpr,CZHPR) | |||||
| #define F77_zher2 F77_GLOBAL(czher2,CZHER2) | |||||
| #define F77_zhpr2 F77_GLOBAL(czhpr2,CZHPR2) | |||||
| #define F77_sgemv F77_GLOBAL(csgemv,CSGEMV) | |||||
| #define F77_sgbmv F77_GLOBAL(csgbmv,CSGBMV) | |||||
| #define F77_strmv F77_GLOBAL(cstrmv,CSTRMV) | |||||
| #define F77_stbmv F77_GLOBAL(cstbmv,CSTBMV) | |||||
| #define F77_stpmv F77_GLOBAL(cstpmv,CSTPMV) | |||||
| #define F77_strsv F77_GLOBAL(cstrsv,CSTRSV) | |||||
| #define F77_stbsv F77_GLOBAL(cstbsv,CSTBSV) | |||||
| #define F77_stpsv F77_GLOBAL(cstpsv,CSTPSV) | |||||
| #define F77_dgemv F77_GLOBAL(cdgemv,CDGEMV) | |||||
| #define F77_dgbmv F77_GLOBAL(cdgbmv,CDGBMV) | |||||
| #define F77_dtrmv F77_GLOBAL(cdtrmv,CDTRMV) | |||||
| #define F77_dtbmv F77_GLOBAL(cdtbmv,CDTBMV) | |||||
| #define F77_dtpmv F77_GLOBAL(cdtpmv,CDTPMV) | |||||
| #define F77_dtrsv F77_GLOBAL(cdtrsv,CDTRSV) | |||||
| #define F77_dtbsv F77_GLOBAL(cdtbsv,CDTBSV) | |||||
| #define F77_dtpsv F77_GLOBAL(cdtpsv,CDTPSV) | |||||
| #define F77_cgemv F77_GLOBAL(ccgemv,CCGEMV) | |||||
| #define F77_cgbmv F77_GLOBAL(ccgbmv,CCGBMV) | |||||
| #define F77_ctrmv F77_GLOBAL(cctrmv,CCTRMV) | |||||
| #define F77_ctbmv F77_GLOBAL(cctbmv,CCTBMV) | |||||
| #define F77_ctpmv F77_GLOBAL(cctpmv,CCTPMV) | |||||
| #define F77_ctrsv F77_GLOBAL(cctrsv,CCTRSV) | |||||
| #define F77_ctbsv F77_GLOBAL(cctbsv,CCTBSV) | |||||
| #define F77_ctpsv F77_GLOBAL(cctpsv,CCTPSV) | |||||
| #define F77_zgemv F77_GLOBAL(czgemv,CZGEMV) | |||||
| #define F77_zgbmv F77_GLOBAL(czgbmv,CZGBMV) | |||||
| #define F77_ztrmv F77_GLOBAL(cztrmv,CZTRMV) | |||||
| #define F77_ztbmv F77_GLOBAL(cztbmv,CZTBMV) | |||||
| #define F77_ztpmv F77_GLOBAL(cztpmv,CZTPMV) | |||||
| #define F77_ztrsv F77_GLOBAL(cztrsv,CZTRSV) | |||||
| #define F77_ztbsv F77_GLOBAL(cztbsv,CZTBSV) | |||||
| #define F77_ztpsv F77_GLOBAL(cztpsv,CZTPSV) | |||||
| /* | /* | ||||
| * Level 3 BLAS | * Level 3 BLAS | ||||
| */ | */ | ||||
| #define F77_s3chke CS3CHKE | |||||
| #define F77_d3chke CD3CHKE | |||||
| #define F77_c3chke CC3CHKE | |||||
| #define F77_z3chke CZ3CHKE | |||||
| #define F77_chemm CCHEMM | |||||
| #define F77_cherk CCHERK | |||||
| #define F77_cher2k CCHER2K | |||||
| #define F77_zhemm CZHEMM | |||||
| #define F77_zherk CZHERK | |||||
| #define F77_zher2k CZHER2K | |||||
| #define F77_sgemm CSGEMM | |||||
| #define F77_ssymm CSSYMM | |||||
| #define F77_ssyrk CSSYRK | |||||
| #define F77_ssyr2k CSSYR2K | |||||
| #define F77_strmm CSTRMM | |||||
| #define F77_strsm CSTRSM | |||||
| #define F77_dgemm CDGEMM | |||||
| #define F77_dsymm CDSYMM | |||||
| #define F77_dsyrk CDSYRK | |||||
| #define F77_dsyr2k CDSYR2K | |||||
| #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 | |||||
| #define F77_ztrmm CZTRMM | |||||
| #define F77_ztrsm CZTRSM | |||||
| #elif defined(NOCHANGE) | |||||
| /* | |||||
| * Level 1 BLAS | |||||
| */ | |||||
| #define F77_srotg srotgtest | |||||
| #define F77_srotmg srotmgtest | |||||
| #define F77_srot srottest | |||||
| #define F77_srotm srotmtest | |||||
| #define F77_drotg drotgtest | |||||
| #define F77_drotmg drotmgtest | |||||
| #define F77_drot drottest | |||||
| #define F77_drotm drotmtest | |||||
| #define F77_sswap sswaptest | |||||
| #define F77_scopy scopytest | |||||
| #define F77_saxpy saxpytest | |||||
| #define F77_isamax isamaxtest | |||||
| #define F77_dswap dswaptest | |||||
| #define F77_dcopy dcopytest | |||||
| #define F77_daxpy daxpytest | |||||
| #define F77_idamax idamaxtest | |||||
| #define F77_cswap cswaptest | |||||
| #define F77_ccopy ccopytest | |||||
| #define F77_caxpy caxpytest | |||||
| #define F77_icamax icamaxtest | |||||
| #define F77_zswap zswaptest | |||||
| #define F77_zcopy zcopytest | |||||
| #define F77_zaxpy zaxpytest | |||||
| #define F77_izamax izamaxtest | |||||
| #define F77_sdot sdottest | |||||
| #define F77_ddot ddottest | |||||
| #define F77_dsdot dsdottest | |||||
| #define F77_sscal sscaltest | |||||
| #define F77_dscal dscaltest | |||||
| #define F77_cscal cscaltest | |||||
| #define F77_zscal zscaltest | |||||
| #define F77_csscal csscaltest | |||||
| #define F77_zdscal zdscaltest | |||||
| #define F77_cdotu cdotutest | |||||
| #define F77_cdotc cdotctest | |||||
| #define F77_zdotu zdotutest | |||||
| #define F77_zdotc zdotctest | |||||
| #define F77_snrm2 snrm2test | |||||
| #define F77_sasum sasumtest | |||||
| #define F77_dnrm2 dnrm2test | |||||
| #define F77_dasum dasumtest | |||||
| #define F77_scnrm2 scnrm2test | |||||
| #define F77_scasum scasumtest | |||||
| #define F77_dznrm2 dznrm2test | |||||
| #define F77_dzasum dzasumtest | |||||
| #define F77_sdsdot sdsdottest | |||||
| /* | |||||
| * Level 2 BLAS | |||||
| */ | |||||
| #define F77_s2chke cs2chke | |||||
| #define F77_d2chke cd2chke | |||||
| #define F77_c2chke cc2chke | |||||
| #define F77_z2chke cz2chke | |||||
| #define F77_ssymv cssymv | |||||
| #define F77_ssbmv cssbmv | |||||
| #define F77_sspmv csspmv | |||||
| #define F77_sger csger | |||||
| #define F77_ssyr cssyr | |||||
| #define F77_sspr csspr | |||||
| #define F77_ssyr2 cssyr2 | |||||
| #define F77_sspr2 csspr2 | |||||
| #define F77_dsymv cdsymv | |||||
| #define F77_dsbmv cdsbmv | |||||
| #define F77_dspmv cdspmv | |||||
| #define F77_dger cdger | |||||
| #define F77_dsyr cdsyr | |||||
| #define F77_dspr cdspr | |||||
| #define F77_dsyr2 cdsyr2 | |||||
| #define F77_dspr2 cdspr2 | |||||
| #define F77_chemv cchemv | |||||
| #define F77_chbmv cchbmv | |||||
| #define F77_chpmv cchpmv | |||||
| #define F77_cgeru ccgeru | |||||
| #define F77_cgerc ccgerc | |||||
| #define F77_cher ccher | |||||
| #define F77_chpr cchpr | |||||
| #define F77_cher2 ccher2 | |||||
| #define F77_chpr2 cchpr2 | |||||
| #define F77_zhemv czhemv | |||||
| #define F77_zhbmv czhbmv | |||||
| #define F77_zhpmv czhpmv | |||||
| #define F77_zgeru czgeru | |||||
| #define F77_zgerc czgerc | |||||
| #define F77_zher czher | |||||
| #define F77_zhpr czhpr | |||||
| #define F77_zher2 czher2 | |||||
| #define F77_zhpr2 czhpr2 | |||||
| #define F77_sgemv csgemv | |||||
| #define F77_sgbmv csgbmv | |||||
| #define F77_strmv cstrmv | |||||
| #define F77_stbmv cstbmv | |||||
| #define F77_stpmv cstpmv | |||||
| #define F77_strsv cstrsv | |||||
| #define F77_stbsv cstbsv | |||||
| #define F77_stpsv cstpsv | |||||
| #define F77_dgemv cdgemv | |||||
| #define F77_dgbmv cdgbmv | |||||
| #define F77_dtrmv cdtrmv | |||||
| #define F77_dtbmv cdtbmv | |||||
| #define F77_dtpmv cdtpmv | |||||
| #define F77_dtrsv cdtrsv | |||||
| #define F77_dtbsv cdtbsv | |||||
| #define F77_dtpsv cdtpsv | |||||
| #define F77_cgemv ccgemv | |||||
| #define F77_cgbmv ccgbmv | |||||
| #define F77_ctrmv cctrmv | |||||
| #define F77_ctbmv cctbmv | |||||
| #define F77_ctpmv cctpmv | |||||
| #define F77_ctrsv cctrsv | |||||
| #define F77_ctbsv cctbsv | |||||
| #define F77_ctpsv cctpsv | |||||
| #define F77_zgemv czgemv | |||||
| #define F77_zgbmv czgbmv | |||||
| #define F77_ztrmv cztrmv | |||||
| #define F77_ztbmv cztbmv | |||||
| #define F77_ztpmv cztpmv | |||||
| #define F77_ztrsv cztrsv | |||||
| #define F77_ztbsv cztbsv | |||||
| #define F77_ztpsv cztpsv | |||||
| /* | |||||
| * Level 3 BLAS | |||||
| */ | |||||
| #define F77_s3chke cs3chke | |||||
| #define F77_d3chke cd3chke | |||||
| #define F77_c3chke cc3chke | |||||
| #define F77_z3chke cz3chke | |||||
| #define F77_chemm cchemm | |||||
| #define F77_cherk ccherk | |||||
| #define F77_cher2k ccher2k | |||||
| #define F77_zhemm czhemm | |||||
| #define F77_zherk czherk | |||||
| #define F77_zher2k czher2k | |||||
| #define F77_sgemm csgemm | |||||
| #define F77_ssymm cssymm | |||||
| #define F77_ssyrk cssyrk | |||||
| #define F77_ssyr2k cssyr2k | |||||
| #define F77_strmm cstrmm | |||||
| #define F77_strsm cstrsm | |||||
| #define F77_dgemm cdgemm | |||||
| #define F77_dsymm cdsymm | |||||
| #define F77_dsyrk cdsyrk | |||||
| #define F77_dsyr2k cdsyr2k | |||||
| #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 | |||||
| #define F77_ztrmm cztrmm | |||||
| #define F77_ztrsm cztrsm | |||||
| #endif | |||||
| #define F77_s3chke F77_GLOBAL(cs3chke,CS3CHKE) | |||||
| #define F77_d3chke F77_GLOBAL(cd3chke,CD3CHKE) | |||||
| #define F77_c3chke F77_GLOBAL(cc3chke,CC3CHKE) | |||||
| #define F77_z3chke F77_GLOBAL(cz3chke,CZ3CHKE) | |||||
| #define F77_chemm F77_GLOBAL(cchemm,CCHEMM) | |||||
| #define F77_cherk F77_GLOBAL(ccherk,CCHERK) | |||||
| #define F77_cher2k F77_GLOBAL(ccher2k,CCHER2K) | |||||
| #define F77_zhemm F77_GLOBAL(czhemm,CZHEMM) | |||||
| #define F77_zherk F77_GLOBAL(czherk,CZHERK) | |||||
| #define F77_zher2k F77_GLOBAL(czher2k,CZHER2K) | |||||
| #define F77_sgemm F77_GLOBAL(csgemm,CSGEMM) | |||||
| #define F77_sgemmtr F77_GLOBAL(csgemmtr,CSGEMMTR) | |||||
| #define F77_ssymm F77_GLOBAL(cssymm,CSSYMM) | |||||
| #define F77_ssyrk F77_GLOBAL(cssyrk,CSSYRK) | |||||
| #define F77_ssyr2k F77_GLOBAL(cssyr2k,CSSYR2K) | |||||
| #define F77_strmm F77_GLOBAL(cstrmm,CSTRMM) | |||||
| #define F77_strsm F77_GLOBAL(cstrsm,CSTRSM) | |||||
| #define F77_dgemm F77_GLOBAL(cdgemm,CDGEMM) | |||||
| #define F77_dgemmtr F77_GLOBAL(cdgemmtr,CDGEMMTR) | |||||
| #define F77_dsymm F77_GLOBAL(cdsymm,CDSYMM) | |||||
| #define F77_dsyrk F77_GLOBAL(cdsyrk,CDSYRK) | |||||
| #define F77_dsyr2k F77_GLOBAL(cdsyr2k,CDSYR2K) | |||||
| #define F77_dtrmm F77_GLOBAL(cdtrmm,CDTRMM) | |||||
| #define F77_dtrsm F77_GLOBAL(cdtrsm,CDTRSM) | |||||
| #define F77_cgemm F77_GLOBAL(ccgemm,CCGEMM) | |||||
| #define F77_cgemmtr F77_GLOBAL(ccgemmtr,CCGEMMTR) | |||||
| #define F77_csymm F77_GLOBAL(ccsymm,CCSYMM) | |||||
| #define F77_csyrk F77_GLOBAL(ccsyrk,CCSYRK) | |||||
| #define F77_csyr2k F77_GLOBAL(ccsyr2k,CCSYR2K) | |||||
| #define F77_ctrmm F77_GLOBAL(cctrmm,CCTRMM) | |||||
| #define F77_ctrsm F77_GLOBAL(cctrsm,CCTRSM) | |||||
| #define F77_zgemm F77_GLOBAL(czgemm,CZGEMM) | |||||
| #define F77_zgemmtr F77_GLOBAL(czgemmtr,CZGEMMTR) | |||||
| #define F77_zsymm F77_GLOBAL(czsymm,CZSYMM) | |||||
| #define F77_zsyrk F77_GLOBAL(czsyrk,CZSYRK) | |||||
| #define F77_zsyr2k F77_GLOBAL(czsyr2k,CZSYR2K) | |||||
| #define F77_ztrmm F77_GLOBAL(cztrmm,CZTRMM) | |||||
| #define F77_ztrsm F77_GLOBAL(cztrsm, CZTRSM) | |||||
| void get_transpose_type(char *type, enum CBLAS_TRANSPOSE *trans); | |||||
| void get_uplo_type(char *type, enum CBLAS_UPLO *uplo); | |||||
| void get_diag_type(char *type, enum CBLAS_DIAG *diag); | |||||
| void get_side_type(char *type, enum CBLAS_SIDE *side); | |||||
| void get_transpose_type(char *type, CBLAS_TRANSPOSE *trans); | |||||
| void get_uplo_type(char *type, CBLAS_UPLO *uplo); | |||||
| void get_diag_type(char *type, CBLAS_DIAG *diag); | |||||
| void get_side_type(char *type, CBLAS_SIDE *side); | |||||
| #endif /* CBLAS_TEST_H */ | #endif /* CBLAS_TEST_H */ | ||||
| @@ -1,12 +1,12 @@ | |||||
| 'CBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | 'CBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | ||||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | -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 REWIND SNAPSHOT FILE AFTER EACH RECORD. | ||||
| T LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | T LOGICAL FLAG, T TO TEST ERROR EXITS. | ||||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | ||||
| 16.0 THRESHOLD VALUE OF TEST RATIO | 16.0 THRESHOLD VALUE OF TEST RATIO | ||||
| 6 NUMBER OF VALUES OF N | 6 NUMBER OF VALUES OF N | ||||
| 0 1 2 3 5 9 35 VALUES OF N | |||||
| 0 1 2 3 5 9 VALUES OF N | |||||
| 3 NUMBER OF VALUES OF ALPHA | 3 NUMBER OF VALUES OF ALPHA | ||||
| (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | ||||
| 3 NUMBER OF VALUES OF BETA | 3 NUMBER OF VALUES OF BETA | ||||
| @@ -20,3 +20,4 @@ cblas_cherk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_csyrk T PUT F FOR NO TEST. SAME COLUMNS. | cblas_csyrk T PUT F FOR NO TEST. SAME COLUMNS. | ||||
| cblas_cher2k T PUT F FOR NO TEST. SAME COLUMNS. | cblas_cher2k T PUT F FOR NO TEST. SAME COLUMNS. | ||||
| cblas_csyr2k T PUT F FOR NO TEST. SAME COLUMNS. | cblas_csyr2k T PUT F FOR NO TEST. SAME COLUMNS. | ||||
| cblas_cgemmtr T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| @@ -1,19 +1,20 @@ | |||||
| 'DBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | 'DBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | ||||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | -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 REWIND SNAPSHOT FILE AFTER EACH RECORD. | ||||
| T LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | T LOGICAL FLAG, T TO TEST ERROR EXITS. | ||||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | ||||
| 16.0 THRESHOLD VALUE OF TEST RATIO | 16.0 THRESHOLD VALUE OF TEST RATIO | ||||
| 7 NUMBER OF VALUES OF N | |||||
| 1 2 3 5 7 9 35 VALUES OF N | |||||
| 6 NUMBER OF VALUES OF N | |||||
| 1 2 3 5 7 9 VALUES OF N | |||||
| 3 NUMBER OF VALUES OF ALPHA | 3 NUMBER OF VALUES OF ALPHA | ||||
| 0.0 1.0 0.7 VALUES OF ALPHA | 0.0 1.0 0.7 VALUES OF ALPHA | ||||
| 3 NUMBER OF VALUES OF BETA | 3 NUMBER OF VALUES OF BETA | ||||
| 0.0 1.0 1.3 VALUES OF BETA | 0.0 1.0 1.3 VALUES OF BETA | ||||
| cblas_dgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dtrmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dtrsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dtrmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dtrsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dsyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_dgemmtr T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| @@ -1,19 +1,20 @@ | |||||
| 'SBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | 'SBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | ||||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | -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 REWIND SNAPSHOT FILE AFTER EACH RECORD. | ||||
| T LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | T LOGICAL FLAG, T TO TEST ERROR EXITS. | ||||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | ||||
| 16.0 THRESHOLD VALUE OF TEST RATIO | 16.0 THRESHOLD VALUE OF TEST RATIO | ||||
| 7 NUMBER OF VALUES OF N | |||||
| 0 1 2 3 5 9 35 VALUES OF N | |||||
| 6 NUMBER OF VALUES OF N | |||||
| 0 1 2 3 5 9 VALUES OF N | |||||
| 3 NUMBER OF VALUES OF ALPHA | 3 NUMBER OF VALUES OF ALPHA | ||||
| 0.0 1.0 0.7 VALUES OF ALPHA | 0.0 1.0 0.7 VALUES OF ALPHA | ||||
| 3 NUMBER OF VALUES OF BETA | 3 NUMBER OF VALUES OF BETA | ||||
| 0.0 1.0 1.3 VALUES OF BETA | 0.0 1.0 1.3 VALUES OF BETA | ||||
| cblas_sgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_strmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_strsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_sgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_strmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_strsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ssyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_sgemmtr T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| @@ -1,22 +1,23 @@ | |||||
| 'ZBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | 'ZBLAT3.SNAP' NAME OF SNAPSHOT OUTPUT FILE | ||||
| -1 UNIT NUMBER OF SNAPSHOT FILE (NOT USED IF .LT. 0) | -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 REWIND SNAPSHOT FILE AFTER EACH RECORD. | ||||
| T LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| F LOGICAL FLAG, T TO STOP ON FAILURES. | |||||
| T LOGICAL FLAG, T TO TEST ERROR EXITS. | T LOGICAL FLAG, T TO TEST ERROR EXITS. | ||||
| 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | 2 0 TO TEST COLUMN-MAJOR, 1 TO TEST ROW-MAJOR, 2 TO TEST BOTH | ||||
| 16.0 THRESHOLD VALUE OF TEST RATIO | 16.0 THRESHOLD VALUE OF TEST RATIO | ||||
| 7 NUMBER OF VALUES OF N | |||||
| 0 1 2 3 5 9 35 VALUES OF N | |||||
| 6 NUMBER OF VALUES OF N | |||||
| 0 1 2 3 5 9 VALUES OF N | |||||
| 3 NUMBER OF VALUES OF ALPHA | 3 NUMBER OF VALUES OF ALPHA | ||||
| (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | (0.0,0.0) (1.0,0.0) (0.7,-0.9) VALUES OF ALPHA | ||||
| 3 NUMBER OF VALUES OF BETA | 3 NUMBER OF VALUES OF BETA | ||||
| (0.0,0.0) (1.0,0.0) (1.3,-1.1) VALUES OF BETA | (0.0,0.0) (1.0,0.0) (1.3,-1.1) VALUES OF BETA | ||||
| cblas_zgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zhemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ztrmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ztrsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zherk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zher2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zgemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zhemm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsymm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ztrmm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_ztrsm T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zherk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsyrk T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zher2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zsyr2k T PUT F FOR NO TEST. SAME COLUMNS. | |||||
| cblas_zgemmtr T PUT F FOR NO TEST. SAME COLUMNS. | |||||