/*********************************************************************/ /* Multiplication banded-matrix x vector: Data structure and Blas /* Compile with: / * gcc -O3 gbmv.c /usr/lib/libblas.so.3 /*********************************************************************/ #include #include #define N 80 #define KB 2 #define NIT 2000 void dgbmv_(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*); /* Structure pour matrice bande */ typedef struct { int nA; /* ordre de la matrice*/ int kb; /* 1+2kb bandes non-nulle */ int ib[KB+1]; double ab[1+2*KB][N*N]; } Matb; int main() { int i,j,k; Matb A; int n=N, nn=n*n, kb=KB, inc=1, lda=2*n+1, ku=n, nit=NIT; double alpha=1, beta=0; double x[N*N],y[N*N]; double A1[N*N][2*N+1]; char trans='N'; clock_t clock0, clock1; /*Initialisation of the matrix and vectors */ A.nA=nn; A.kb=kb; A.ib[0]=n; A.ib[1]=1; A.ib[2]=0; for (i=0; i