move DECL_ALL from internal to external
add mul(const matrix<T>, T, matrix<T>&)