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, 1/23/98, SGI/CRAY Research. 681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray */ 781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include <stdlib.h> 881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas.h" 981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray#include "cblas_test.h" 1081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dgemv(int *order, char *transp, int *m, int *n, double *alpha, 1281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *a, int *lda, double *x, int *incx, double *beta, 1381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *y, int *incy ) { 1481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 1681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 1781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 1881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 1981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp, &trans); 2081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 2181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 2281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*m)*LDA*sizeof( double ) ); 2381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 2481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 2581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 2681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dgemv( CblasRowMajor, trans, 2781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *m, *n, *alpha, A, LDA, x, *incx, *beta, y, *incy ); 2881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 2981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 3081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 3181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dgemv( CblasColMajor, trans, 3281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy ); 3381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 3481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dgemv( UNDEFINED, trans, 3581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *m, *n, *alpha, a, *lda, x, *incx, *beta, y, *incy ); 3681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 3781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 3881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dger(int *order, int *m, int *n, double *alpha, double *x, int *incx, 3981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *y, int *incy, double *a, int *lda ) { 4081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 4181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 4281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 4381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 4481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 4581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 4681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*m)*LDA*sizeof( double ) ); 4781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 4881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) { 4981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 5081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 5181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 5281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 5381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dger(CblasRowMajor, *m, *n, *alpha, x, *incx, y, *incy, A, LDA ); 5481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*m; i++ ) 5581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 5681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a[ (*lda)*j+i ]=A[ LDA*i+j ]; 5781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 5881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 5981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 6081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dger( CblasColMajor, *m, *n, *alpha, x, *incx, y, *incy, a, *lda ); 6181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 6281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 6381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtrmv(int *order, char *uplow, char *transp, char *diagn, 6481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, double *a, int *lda, double *x, int *incx) { 6581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 6681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 6781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 6881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 6981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 7081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 7181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 7281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 7381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 7481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 7581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 7681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 7781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); 7881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 7981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 8081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 8181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtrmv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx); 8281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 8381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 8481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else if (*order == TEST_COL_MJR) 8581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtrmv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx); 8681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 8781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtrmv(UNDEFINED, uplo, trans, diag, *n, a, *lda, x, *incx); 8881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 8981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 9081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 9181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtrsv(int *order, char *uplow, char *transp, char *diagn, 9281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, double *a, int *lda, double *x, int *incx ) { 9381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 9481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 9581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 9681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 9781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 9881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 9981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 10081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 10181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 10281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 10381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 10481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 10581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); 10681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 10781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 10881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 10981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtrsv(CblasRowMajor, uplo, trans, diag, *n, A, LDA, x, *incx ); 11081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 11181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 11281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 11381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtrsv(CblasColMajor, uplo, trans, diag, *n, a, *lda, x, *incx ); 11481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 11581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsymv(int *order, char *uplow, int *n, double *alpha, double *a, 11681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *lda, double *x, int *incx, double *beta, double *y, 11781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *incy) { 11881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 11981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 12081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 12181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 12281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 12381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 12481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 12581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 12681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); 12781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 12881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 12981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 13081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsymv(CblasRowMajor, uplo, *n, *alpha, A, LDA, x, *incx, 13181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, y, *incy ); 13281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 13381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 13481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 13581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsymv(CblasColMajor, uplo, *n, *alpha, a, *lda, x, *incx, 13681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, y, *incy ); 13781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 13881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 13981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsyr(int *order, char *uplow, int *n, double *alpha, double *x, 14081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *incx, double *a, int *lda) { 14181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 14281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 14381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 14481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 14581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 14681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 14781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 14881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 14981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); 15081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 15181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 15281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 15381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsyr(CblasRowMajor, uplo, *n, *alpha, x, *incx, A, LDA); 15481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 15581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 15681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a[ (*lda)*j+i ]=A[ LDA*i+j ]; 15781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 15881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 15981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 16081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsyr(CblasColMajor, uplo, *n, *alpha, x, *incx, a, *lda); 16181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 16281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 16381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsyr2(int *order, char *uplow, int *n, double *alpha, double *x, 16481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *incx, double *y, int *incy, double *a, int *lda) { 16581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 16681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,LDA; 16781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 16881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 16981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 17081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 17181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 17281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n+1; 17381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n)*LDA*sizeof( double ) ); 17481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 17581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 17681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=a[ (*lda)*j+i ]; 17781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsyr2(CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, A, LDA); 17881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*n; i++ ) 17981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 18081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a[ (*lda)*j+i ]=A[ LDA*i+j ]; 18181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 18281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 18381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 18481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsyr2(CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, a, *lda); 18581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 18681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 18781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dgbmv(int *order, char *transp, int *m, int *n, int *kl, int *ku, 18881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *alpha, double *a, int *lda, double *x, int *incx, 18981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *beta, double *y, int *incy ) { 19081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 19181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 19281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,irow,j,jcol,LDA; 19381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 19481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 19581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp, &trans); 19681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 19781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 19881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *ku+*kl+2; 19981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n+*kl)*LDA*sizeof( double ) ); 20081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*ku; i++ ){ 20181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*ku+*kl-i; 20281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=(*ku)-i; 20381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<*n; j++ ) 20481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ]; 20581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 20681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=*ku; 20781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*ku+*kl-i; 20881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 20981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 21081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=*ku+1; i<*ku+*kl+1; i++ ){ 21181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*ku+*kl-i; 21281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=i-(*ku); 21381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<(*n+*kl); j++ ) 21481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ]; 21581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 21681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dgbmv( CblasRowMajor, trans, *m, *n, *kl, *ku, *alpha, 21781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A, LDA, x, *incx, *beta, y, *incy ); 21881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 21981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 22081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 22181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dgbmv( CblasColMajor, trans, *m, *n, *kl, *ku, *alpha, 22281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray a, *lda, x, *incx, *beta, y, *incy ); 22381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 22481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 22581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtbmv(int *order, char *uplow, char *transp, char *diagn, 22681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, int *k, double *a, int *lda, double *x, int *incx) { 22781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 22881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int irow, jcol, i, j, LDA; 22981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 23081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 23181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 23281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 23381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 23481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 23581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 23681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 23781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 23881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 23981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) ); 24081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 24181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ){ 24281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 24381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=(*k)-i; 24481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<*n; j++ ) 24581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ]; 24681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 24781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=*k; 24881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 24981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 25081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 25181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 25281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 25381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=0; 25481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 25581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 25681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 25781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=1; i<*k+1; i++ ){ 25881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 25981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=i; 26081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<(*n+*k); j++ ) 26181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ]; 26281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 26381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 26481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtbmv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx); 26581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 26681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 26781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 26881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtbmv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx); 26981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 27081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 27181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtbsv(int *order, char *uplow, char *transp, char *diagn, 27281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, int *k, double *a, int *lda, double *x, int *incx) { 27381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 27481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int irow, jcol, i, j, LDA; 27581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 27681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 27781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 27881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 27981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 28081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 28181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 28281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 28381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 28481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 28581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) ); 28681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 28781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ){ 28881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 28981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=(*k)-i; 29081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<*n; j++ ) 29181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ]; 29281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 29381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=*k; 29481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 29581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 29681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 29781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 29881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 29981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=0; 30081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 30181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 30281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 30381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=1; i<*k+1; i++ ){ 30481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 30581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=i; 30681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<(*n+*k); j++ ) 30781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ]; 30881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 30981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 31081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtbsv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx); 31181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 31281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 31381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 31481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtbsv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx); 31581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 31681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 31781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dsbmv(int *order, char *uplow, int *n, int *k, double *alpha, 31881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *a, int *lda, double *x, int *incx, double *beta, 31981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *y, int *incy) { 32081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A; 32181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,irow,jcol,LDA; 32281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 32381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 32481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 32581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 32681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 32781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *k+1; 32881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( (*n+*k)*LDA*sizeof( double ) ); 32981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 33081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<*k; i++ ){ 33181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 33281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=(*k)-i; 33381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<*n; j++ ) 33481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*(j-jcol)+irow ]=a[ (*lda)*j+i ]; 33581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 33681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=*k; 33781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 33881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 33981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 34081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 34181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 34281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray i=0; 34381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 34481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<*n; j++ ) 34581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*j+i ]; 34681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=1; i<*k+1; i++ ){ 34781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray irow=*k-i; 34881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray jcol=i; 34981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=jcol; j<(*n+*k); j++ ) 35081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*j+irow ]=a[ (*lda)*(j-jcol)+i ]; 35181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 35281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 35381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsbmv(CblasRowMajor, uplo, *n, *k, *alpha, A, LDA, x, *incx, 35481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, y, *incy ); 35581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 35681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 35781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 35881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dsbmv(CblasColMajor, uplo, *n, *k, *alpha, a, *lda, x, *incx, 35981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *beta, y, *incy ); 36081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 36181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 36281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspmv(int *order, char *uplow, int *n, double *alpha, double *ap, 36381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *x, int *incx, double *beta, double *y, int *incy) { 36481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A,*AP; 36581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,k,LDA; 36681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 36781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 36881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 36981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 37081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 37181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n; 37281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( LDA*LDA*sizeof( double ) ); 37381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) ); 37481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 37581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 37681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 37781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 37881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 37981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 38081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 38181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 38281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 38381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 38481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 38581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 38681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 38781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 38881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 38981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 39081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspmv( CblasRowMajor, uplo, *n, *alpha, AP, x, *incx, *beta, y, 39181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *incy ); 39281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 39381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(AP); 39481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 39581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 39681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspmv( CblasColMajor, uplo, *n, *alpha, ap, x, *incx, *beta, y, 39781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray *incy ); 39881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 39981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 40081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtpmv(int *order, char *uplow, char *transp, char *diagn, 40181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, double *ap, double *x, int *incx) { 40281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A, *AP; 40381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i, j, k, LDA; 40481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 40581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 40681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 40781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 40881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 40981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 41081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 41181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 41281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 41381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n; 41481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( LDA*LDA*sizeof( double ) ); 41581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) ); 41681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 41781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 41881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 41981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 42081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 42181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 42281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 42381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 42481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 42581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 42681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 42781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 42881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 42981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 43081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 43181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 43281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtpmv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx ); 43381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 43481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(AP); 43581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 43681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 43781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtpmv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx ); 43881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 43981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 44081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dtpsv(int *order, char *uplow, char *transp, char *diagn, 44181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *n, double *ap, double *x, int *incx) { 44281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A, *AP; 44381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i, j, k, LDA; 44481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_TRANSPOSE trans; 44581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 44681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_DIAG diag; 44781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 44881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_transpose_type(transp,&trans); 44981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 45081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_diag_type(diagn,&diag); 45181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 45281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 45381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n; 45481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( LDA*LDA*sizeof( double ) ); 45581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) ); 45681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 45781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 45881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 45981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 46081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 46181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 46281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 46381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 46481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 46581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 46681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 46781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 46881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 46981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 47081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 47181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 47281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 47381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtpsv( CblasRowMajor, uplo, trans, diag, *n, AP, x, *incx ); 47481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 47581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(AP); 47681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 47781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 47881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dtpsv( CblasColMajor, uplo, trans, diag, *n, ap, x, *incx ); 47981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 48081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 48181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspr(int *order, char *uplow, int *n, double *alpha, double *x, 48281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *incx, double *ap ){ 48381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A, *AP; 48481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,k,LDA; 48581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 48681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 48781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 48881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 48981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 49081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n; 49181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( LDA*LDA*sizeof( double ) ); 49281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) ); 49381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 49481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 49581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 49681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 49781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 49881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 49981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 50081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 50181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 50281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 50381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 50481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 50581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 50681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 50781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 50881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 50981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspr( CblasRowMajor, uplo, *n, *alpha, x, *incx, AP ); 51081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 51181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 51281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 51381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=AP[ k ]; 51481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 51581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 51681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray ap[ k ]=A[ LDA*i+j ]; 51781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 51881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 51981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 52081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 52181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=AP[ k ]; 52281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 52381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 52481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray ap[ k ]=A[ LDA*i+j ]; 52581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 52681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 52781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(AP); 52881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 52981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 53081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspr( CblasColMajor, uplo, *n, *alpha, x, *incx, ap ); 53181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 53281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 53381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murrayvoid F77_dspr2(int *order, char *uplow, int *n, double *alpha, double *x, 53481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int *incx, double *y, int *incy, double *ap ){ 53581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray double *A, *AP; 53681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray int i,j,k,LDA; 53781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray enum CBLAS_UPLO uplo; 53881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 53981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray get_uplo_type(uplow,&uplo); 54081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray 54181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (*order == TEST_ROW_MJR) { 54281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray LDA = *n; 54381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A = ( double* )malloc( LDA*LDA*sizeof( double ) ); 54481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP = ( double* )malloc( (((LDA+1)*LDA)/2)*sizeof( double ) ); 54581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 54681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 54781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 54881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 54981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 55081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 55181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 55281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 55381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 55481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 55581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 55681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=ap[ k ]; 55781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 55881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 55981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray AP[ k ]=A[ LDA*i+j ]; 56081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 56181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspr2( CblasRowMajor, uplo, *n, *alpha, x, *incx, y, *incy, AP ); 56281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray if (uplo == CblasUpper) { 56381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 56481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=i; j<*n; j++, k++ ) 56581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=AP[ k ]; 56681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 56781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0; i<j+1; i++, k++ ) 56881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray ap[ k ]=A[ LDA*i+j ]; 56981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 57081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else { 57181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=0, k=0; i<*n; i++ ) 57281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0; j<i+1; j++, k++ ) 57381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray A[ LDA*i+j ]=AP[ k ]; 57481253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( j=0, k=0; j<*n; j++ ) 57581253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray for( i=j; i<*n; i++, k++ ) 57681253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray ap[ k ]=A[ LDA*i+j ]; 57781253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 57881253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(A); 57981253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray free(AP); 58081253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray } 58181253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray else 58281253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray cblas_dspr2( CblasColMajor, uplo, *n, *alpha, x, *incx, y, *incy, ap ); 58381253e9afbc34b99e9adc22ddf33a1bfac56c697Tim Murray} 584