#include <complex>
#include <iostream>
#include "blis.hh"
#include "test.hh"
using namespace blis;
using namespace std;
#define ALPHA -1.0
#define BETA -1.0
#define M 3
#define N 4
template< typename T >
void test_gbmv( )
{
T alpha, beta;
int m,n;
int KL = 1;
int KU = 1;
int lda = 4;
T A[] = { 0.423f, -0.143f, -0.182f, -0.076f, -0.855f, 0.599f, 0.389f, -0.473f, 0.493f, -0.902f, -0.889f, -0.256f, 0.112f, 0.128f, -0.277f, -0.777f };
T X[] = { 0.488f, 0.029f, -0.633f, 0.84f };
int incX = -1;
T Y[] = { 0.874f, 0.322f, -0.477f };
int incY = -1;
T Y_ref[] = { -0.656261f, 0.19575f, 0.055905f };
alpha = ALPHA;
beta = BETA;
m = M;
n = N;
#ifdef PRINT
printmatrix(A, lda ,m,n,(char *) "A");
printvector(Y, m, (char *)"m");
#endif
blis::gbmv(
CblasColMajor,
CblasNoTrans,
m,
n,KL,KU,
alpha,
A,
lda,
X,
incX,
beta,
Y,
incY
);
#ifdef PRINT
printvector(Y, m,(char *)"Y blis:gbmv");
printvector(Y_ref, m, (char *) "Y_ref blis:gbmv" );
#endif
if(computeErrorV(incY,incY, m, Y, Y_ref )==1)
printf("%s TEST FAIL\n" , __PRETTY_FUNCTION__ );
else
printf("%s TEST PASS\n" , __PRETTY_FUNCTION__ );
}
int main( int argc, char** argv )
{
test_gbmv<double>( );
test_gbmv<float>( );
test_gbmv<complex<float>>( );
test_gbmv<complex<double>>( );
return 0;
}