void F77_zgbmv(int *layout, char *transp, int *m, int *n, int *kl, int *ku, CBLAS_TEST_ZOMPLEX *alpha, CBLAS_TEST_ZOMPLEX *a, int *lda, CBLAS_TEST_ZOMPLEX *x, int *incx, CBLAS_TEST_ZOMPLEX *beta, CBLAS_TEST_ZOMPLEX *y, int *incy) { CBLAS_TEST_ZOMPLEX *A; int i,j,irow,jcol,LDA; CBLAS_TRANSPOSE trans; get_transpose_type(transp, &trans); if (*layout == TEST_ROW_MJR) { LDA = *ku+*kl+2; A=( CBLAS_TEST_ZOMPLEX* )malloc((*n+*kl)*LDA*sizeof(CBLAS_TEST_ZOMPLEX)); for( i=0; i<*ku; i++ ) { irow=*ku+*kl-i; jcol=(*ku)-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=*ku; irow=*ku+*kl-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=*ku+1; i<*ku+*kl+1; i++ ) { irow=*ku+*kl-i; jcol=i-(*ku); for( j=jcol; j<(*n+*kl); j++ ) { A[ LDA*j+irow ].real=a[ (*lda)*(j-jcol)+i ].real; A[ LDA*j+irow ].imag=a[ (*lda)*(j-jcol)+i ].imag; } } cblas_zgbmv( CblasRowMajor, trans, *m, *n, *kl, *ku, alpha, A, LDA, x, *incx, beta, y, *incy ); free(A); } else if (*layout == TEST_COL_MJR) cblas_zgbmv( CblasColMajor, trans, *m, *n, *kl, *ku, alpha, a, *lda, x, *incx, beta, y, *incy ); else cblas_zgbmv( UNDEFINED, trans, *m, *n, *kl, *ku, alpha, a, *lda, x, *incx, beta, y, *incy ); }
inline void gbmv( const Order, const Trans, const int m, const int n, const int kl, const int ku, const std::complex<double> alpha, const std::complex<double>* a, const int lda, const std::complex<double>* x, const int incx, const std::complex<double> beta, std::complex<double>* y, const int incy ) { cblas_zgbmv( cblas_option< Order >::value, cblas_option< Trans >::value, m, n, kl, ku, &alpha, a, lda, x, incx, &beta, y, incy ); }