Browse Source

Update CBLAS3 tests from Reference-LAPACK to add GEMMT(R) testing

pull/5187/head
Martin Kroeker GitHub 1 year ago
parent
commit
088f3b4355
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
13 changed files with 3366 additions and 1186 deletions
  1. +176
    -64
      ctest/c_cblas3.c
  2. +653
    -103
      ctest/c_cblat3.f
  3. +166
    -64
      ctest/c_dblas3.c
  4. +575
    -90
      ctest/c_dblat3.f
  5. +163
    -63
      ctest/c_sblas3.c
  6. +569
    -81
      ctest/c_sblat3.f
  7. +212
    -95
      ctest/c_zblas3.c
  8. +650
    -102
      ctest/c_zblat3.f
  9. +166
    -492
      ctest/cblas_test.h
  10. +3
    -2
      ctest/cin3
  11. +10
    -9
      ctest/din3
  12. +10
    -9
      ctest/sin3
  13. +13
    -12
      ctest/zin3

+ 176
- 64
ctest/c_cblas3.c View File

@@ -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);
} }




+ 653
- 103
ctest/c_cblat3.f
File diff suppressed because it is too large
View File


+ 166
- 64
ctest/c_dblas3.c View File

@@ -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


+ 575
- 90
ctest/c_dblat3.f
File diff suppressed because it is too large
View File


+ 163
- 63
ctest/c_sblas3.c View File

@@ -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


+ 569
- 81
ctest/c_sblat3.f View File

@@ -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



+ 212
- 95
ctest/c_zblas3.c View File

@@ -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);
} }



+ 650
- 102
ctest/c_zblat3.f
File diff suppressed because it is too large
View File


+ 166
- 492
ctest/cblas_test.h View File

@@ -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 */

+ 3
- 2
ctest/cin3 View File

@@ -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.

+ 10
- 9
ctest/din3 View File

@@ -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.

+ 10
- 9
ctest/sin3 View File

@@ -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.

+ 13
- 12
ctest/zin3 View File

@@ -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.

Loading…
Cancel
Save