181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray/* 281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray * Written by D.P. Manley, Digital Equipment Corporation. 381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray * Prefixed "C_" to BLAS routines and their declarations. 481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray * 581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray * Modified by T. H. Do, 2/19/98, SGI/CRAY Research. 681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray */ 781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdio.h> 881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdlib.h> 981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas.h" 1081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas_test.h" 1181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_sgemm(int *order, char *transpa, char *transpb, int *m, int *n, 1381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *k, float *alpha, float *a, int *lda, float *b, int *ldb, 1481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *beta, float *c, int *ldc ) { 1581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *B, *C; 1781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA, LDB, LDC; 1881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE transa, transb; 1981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 2081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transpa, &transa); 2181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transpb, &transb); 2281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 2381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 2481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (transa == CblasNoTrans) { 2581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 2681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = (float *)malloc( (*m)*LDA*sizeof( float ) ); 2781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 2881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*k; j++ ) 2981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 3081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 3181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 3281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *m+1; 3381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( LDA*(*k)*sizeof( float ) ); 3481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ) 3581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*m; j++ ) 3681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 3781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 3881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (transb == CblasNoTrans) { 3981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *n+1; 4081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( (*k)*LDB*sizeof( float ) ); 4181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ) 4281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 4381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 4481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 4581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 4681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *k+1; 4781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( LDB*(*n)*sizeof( float ) ); 4881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 4981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*k; j++ ) 5081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 5181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 5281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDC = *n+1; 5381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C = ( float* )malloc( (*m)*LDC*sizeof( float ) ); 5481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 5581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 5681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C[i*LDC+j]=c[j*(*ldc)+i]; 5781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_sgemm( CblasRowMajor, transa, transb, *m, *n, *k, *alpha, A, LDA, 5881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B, LDB, *beta, C, LDC ); 5981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 6081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 6181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c[j*(*ldc)+i]=C[i*LDC+j]; 6281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 6381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(B); 6481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(C); 6581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 6681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 6781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_sgemm( CblasColMajor, transa, transb, *m, *n, *k, *alpha, a, *lda, 6881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b, *ldb, *beta, c, *ldc ); 6981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 7081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_sgemm( UNDEFINED, transa, transb, *m, *n, *k, *alpha, a, *lda, 7181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b, *ldb, *beta, c, *ldc ); 7281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 7381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_ssymm(int *order, char *rtlf, char *uplow, int *m, int *n, 7481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *alpha, float *a, int *lda, float *b, int *ldb, 7581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *beta, float *c, int *ldc ) { 7681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 7781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *B, *C; 7881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA, LDB, LDC; 7981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 8081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_SIDE side; 8181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 8281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 8381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_side_type(rtlf,&side); 8481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 8581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 8681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (side == CblasLeft) { 8781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *m+1; 8881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); 8981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 9081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*m; j++ ) 9181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 9281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 9381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else{ 9481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 9581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); 9681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 9781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 9881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 9981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 10081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *n+1; 10181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); 10281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 10381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 10481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 10581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDC = *n+1; 10681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C = ( float* )malloc( (*m)*LDC*sizeof( float ) ); 10781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 10881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 10981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C[i*LDC+j]=c[j*(*ldc)+i]; 11081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssymm( CblasRowMajor, side, uplo, *m, *n, *alpha, A, LDA, B, LDB, 11181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, C, LDC ); 11281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 11381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 11481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c[j*(*ldc)+i]=C[i*LDC+j]; 11581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 11681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(B); 11781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(C); 11881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 11981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 12081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssymm( CblasColMajor, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, 12181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, c, *ldc ); 12281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 12381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssymm( UNDEFINED, side, uplo, *m, *n, *alpha, a, *lda, b, *ldb, 12481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, c, *ldc ); 12581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 12681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 12781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_ssyrk(int *order, char *uplow, char *transp, int *n, int *k, 12881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *alpha, float *a, int *lda, 12981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *beta, float *c, int *ldc ) { 13081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 13181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA,LDC; 13281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *C; 13381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 13481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 13581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 13681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 13781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 13881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 13981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 14081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (trans == CblasNoTrans) { 14181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 14281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); 14381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 14481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*k; j++ ) 14581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 14681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 14781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else{ 14881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 14981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*k)*LDA*sizeof( float ) ); 15081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ) 15181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 15281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 15381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 15481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDC = *n+1; 15581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C = ( float* )malloc( (*n)*LDC*sizeof( float ) ); 15681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 15781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 15881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C[i*LDC+j]=c[j*(*ldc)+i]; 15981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyrk(CblasRowMajor, uplo, trans, *n, *k, *alpha, A, LDA, *beta, 16081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C, LDC ); 16181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 16281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 16381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c[j*(*ldc)+i]=C[i*LDC+j]; 16481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 16581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(C); 16681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 16781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 16881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyrk(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, *beta, 16981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c, *ldc ); 17081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 17181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyrk(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, *beta, 17281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c, *ldc ); 17381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 17481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 17581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_ssyr2k(int *order, char *uplow, char *transp, int *n, int *k, 17681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *alpha, float *a, int *lda, float *b, int *ldb, 17781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *beta, float *c, int *ldc ) { 17881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA,LDB,LDC; 17981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *B, *C; 18081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 18181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 18281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 18381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 18481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 18581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 18681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 18781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (trans == CblasNoTrans) { 18881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 18981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *k+1; 19081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); 19181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( (*n)*LDB*sizeof( float ) ); 19281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 19381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*k; j++ ) { 19481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 19581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 19681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 19781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 19881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 19981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 20081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *n+1; 20181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( LDA*(*k)*sizeof( float ) ); 20281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( LDB*(*k)*sizeof( float ) ); 20381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ) 20481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ){ 20581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 20681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 20781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 20881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 20981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDC = *n+1; 21081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C = ( float* )malloc( (*n)*LDC*sizeof( float ) ); 21181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 21281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 21381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray C[i*LDC+j]=c[j*(*ldc)+i]; 21481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyr2k(CblasRowMajor, uplo, trans, *n, *k, *alpha, A, LDA, 21581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B, LDB, *beta, C, LDC ); 21681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 21781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 21881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray c[j*(*ldc)+i]=C[i*LDC+j]; 21981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 22081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(B); 22181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(C); 22281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 22381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 22481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyr2k(CblasColMajor, uplo, trans, *n, *k, *alpha, a, *lda, 22581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b, *ldb, *beta, c, *ldc ); 22681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 22781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_ssyr2k(UNDEFINED, uplo, trans, *n, *k, *alpha, a, *lda, 22881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b, *ldb, *beta, c, *ldc ); 22981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 23081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_strmm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, 23181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *m, int *n, float *alpha, float *a, int *lda, float *b, 23281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *ldb) { 23381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA,LDB; 23481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *B; 23581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_SIDE side; 23681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 23781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 23881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 23981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 24081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 24181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 24281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 24381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_side_type(rtlf,&side); 24481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 24581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 24681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (side == CblasLeft) { 24781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *m+1; 24881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); 24981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 25081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*m; j++ ) 25181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 25281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 25381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else{ 25481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 25581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); 25681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 25781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 25881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 25981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 26081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *n+1; 26181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); 26281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 26381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 26481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 26581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strmm(CblasRowMajor, side, uplo, trans, diag, *m, *n, *alpha, 26681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A, LDA, B, LDB ); 26781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 26881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 26981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b[j*(*ldb)+i]=B[i*LDB+j]; 27081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 27181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(B); 27281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 27381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 27481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strmm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, 27581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a, *lda, b, *ldb); 27681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 27781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strmm(UNDEFINED, side, uplo, trans, diag, *m, *n, *alpha, 27881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a, *lda, b, *ldb); 27981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 28081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 28181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_strsm(int *order, char *rtlf, char *uplow, char *transp, char *diagn, 28281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *m, int *n, float *alpha, float *a, int *lda, float *b, 28381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *ldb) { 28481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA,LDB; 28581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray float *A, *B; 28681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_SIDE side; 28781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 28881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 28981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 29081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 29181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 29281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 29381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 29481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_side_type(rtlf,&side); 29581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 29681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 29781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (side == CblasLeft) { 29881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *m+1; 29981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*m)*LDA*sizeof( float ) ); 30081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 30181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*m; j++ ) 30281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 30381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 30481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else{ 30581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 30681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( float* )malloc( (*n)*LDA*sizeof( float ) ); 30781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 30881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 30981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[i*LDA+j]=a[j*(*lda)+i]; 31081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 31181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDB = *n+1; 31281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B = ( float* )malloc( (*m)*LDB*sizeof( float ) ); 31381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 31481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 31581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray B[i*LDB+j]=b[j*(*ldb)+i]; 31681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strsm(CblasRowMajor, side, uplo, trans, diag, *m, *n, *alpha, 31781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A, LDA, B, LDB ); 31881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 31981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 32081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray b[j*(*ldb)+i]=B[i*LDB+j]; 32181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 32281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(B); 32381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 32481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 32581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strsm(CblasColMajor, side, uplo, trans, diag, *m, *n, *alpha, 32681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a, *lda, b, *ldb); 32781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 32881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_strsm(UNDEFINED, side, uplo, trans, diag, *m, *n, *alpha, 32981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a, *lda, b, *ldb); 33081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 331