Example #1
0
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 );
}
Example #2
0
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 );
}