Blas backend

Expressions supported by the BLAS backend

BLAS function Expression
nrm2 assign(double &,norm2_expression< dense_vector< double > > const &)
scal mult_assign_scalar(dense_vector< double >&,double const &)
axpy plus_assign(dense_vector&lt; double >&,scalar_vector_mult(double const &, dense_vector< double > > const &)
assign(dense_vector< double >&,scalar_vector_mult_expression(double const &, dense_vector< double > > const &)

Concepts needed for the BLAS backend

The BLAS backend only works for dense vectors whose data are stored on a set of adresses (or pointer) on constant distance (the stride) and dense matrices that are column oriented, with columns of consecutive adresses, and where the pointers to the start of each column lie on equal distance (the leading_dimension). For a vector v should hold the following:
glas::pointer(v(i)) == glas::pointer(v)+i*glas::stride(v)
For a matrix, we should have
glas::pointer(m(i,j)) == glas::pointerglas::pointer(m)+j* glas::leading_dimension(m)+i