/* f77 interface */ void ctbmv_(char *uplo, char *transa, char *diag, int *n, int *k, float *A, int *lda, float *X, int *incx) { Blasx_Debug_Output("Calling ctbmv_ interface\n"); enum CBLAS_TRANSPOSE TransA; enum CBLAS_UPLO Uplo; enum CBLAS_DIAG Diag; enum CBLAS_SIDE Side; int info = 0; if (F77DiagToCBLASDiag(diag, &Diag) < 0) info = 4; if (F77TransToCBLASTrans(transa,&TransA) < 0) info = 3; if (F77UploToCBlasUplo(uplo,&Uplo) < 0) info = 2; if (info != 0) { xerbla_(ERROR_NAME, &info); return; } cblas_ctbmv(CblasColMajor, Uplo, TransA, Diag, *n, *k, A, *lda, X,*incx); }
void F77_ctbmv(int *order, char *uplow, char *transp, char *diagn, int *n, int *k, CBLAS_TEST_COMPLEX *a, int *lda, CBLAS_TEST_COMPLEX *x, int *incx) { CBLAS_TEST_COMPLEX *A; int irow, jcol, i, j, LDA; enum CBLAS_TRANSPOSE trans; enum CBLAS_UPLO uplo; enum CBLAS_DIAG diag; get_transpose_type(transp,&trans); get_uplo_type(uplow,&uplo); get_diag_type(diagn,&diag); if (*order == TEST_ROW_MJR) { if (uplo != CblasUpper && uplo != CblasLower ) cblas_ctbmv(CblasRowMajor, UNDEFINED, trans, diag, *n, *k, a, *lda, x, *incx); else { LDA = *k+2; A=(CBLAS_TEST_COMPLEX *)malloc((*n+*k)*LDA*sizeof(CBLAS_TEST_COMPLEX)); if (uplo == CblasUpper) { for( i=0; i<*k; i++ ){ irow=*k-i; jcol=(*k)-i; for( j=jcol; j<*n; j++ ) { A[ LDA*(j-jcol)+irow ].real=a[ (*lda)*j+i ].real; A[ LDA*(j-jcol)+irow ].imag=a[ (*lda)*j+i ].imag; } } i=*k; irow=*k-i; for( j=0; j<*n; j++ ) { A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real; A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag; } } else { i=0; irow=*k-i; for( j=0; j<*n; j++ ) { A[ LDA*j+irow ].real=a[ (*lda)*j+i ].real; A[ LDA*j+irow ].imag=a[ (*lda)*j+i ].imag; } for( i=1; i<*k+1; i++ ){ irow=*k-i; jcol=i; for( j=jcol; j<(*n+*k); j++ ) { A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real; A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag; } } } cblas_ctbmv(CblasRowMajor, uplo, trans, diag, *n, *k, A, LDA, x, *incx); free(A); } } else if (*order == TEST_COL_MJR) cblas_ctbmv(CblasColMajor, uplo, trans, diag, *n, *k, a, *lda, x, *incx); else cblas_ctbmv(UNDEFINED, uplo, trans, diag, *n, *k, a, *lda, x, *incx); }