blas_test.cpp itpp/itbase.h mat mat matmul (mat &A, mat &B) matmul mat & A mat & B void void matmul2 (int n, double *A, double *B, double *C) matmul2 int n double * A double * B double * C int int main () main #include<itpp/itbase.h> usingnamespaceitpp; //Theselinesareneededforuseofcoutandendl usingstd::cout; usingstd::endl; matmatmul(mat&A,mat&B){ matC(A.rows(),B.cols()); inti,j,k; doublesum; for(i=0;i<A.rows();i++){ for(j=0;j<A.cols();j++){ sum=0.0; for(k=0;k<A.cols();k++){ sum+=A._elem(i,k)*B._elem(k,j); } C(i,j)=sum; } } returnC; } voidmatmul2(intn,double*A,double*B,double*C){ inti,j,k; doublesum; for(i=0;i<n;i++){ for(j=0;j<n;j++){ sum=0.0; for(k=0;k<n;k++){ sum+=A[i*n+k]*B[k*n+j]; } C[i*n+j]=sum; } } //returnC; } intmain(){ Real_Timertt; vecexec_times(4); vecexec_times_b(4); vecexec_times_c(4); matA; matB; matC; vecvn="550200500"; intn; for(inti=0;i<vn.length();i++){ n=vn(i); A=randu(n,n); B=randu(n,n); tt.tic(); for(intii=0;ii<10;ii++){C=matmul(A,B);} exec_times(i)=tt.toc(); tt.tic(); for(intii=0;ii<10;ii++){C=A*B;} exec_times_b(i)=tt.toc(); C=zeros(n,n); tt.tic(); for(intii=0;ii<10;ii++){matmul2(n,A._data(),B._data(),C._data());} exec_times_c(i)=tt.toc(); } cout<<exec_times<<endl; cout<<exec_times_b<<endl; cout<<exec_times_c<<endl; it_fileitf("blas_test.it"); itf<<Name("exec_times")<<exec_times; itf<<Name("exec_times_b")<<exec_times_b; itf<<Name("exec_times_c")<<exec_times_c; return0; }