# Efficient matrix operation by directly accessing the storage of ITensor

Hi,
I'm recently developing some Krylov subspace algorithm with itensor, and the final step is phi = V*u, where V and u are std::vector<ITensor> V(n) and std::vector<Cplx> u(n) respectively. One can consider V as a matrix (it has n columns with each be an ITensor, all ITensors have same IndexSet).

A possible efficient way is extracting each storage of ITensors in V and joint them into a new large storage(since itensor use column major, it's straightforward to combine these storages into a new one), then do matrix multiplication with u.

I'm not familiar with lower itensor apis and any help is appreciated. It is also necessary to consider the block storage of QN ITensors.

for(auto i : range(u.size())) V[i] *= u[i]; for(auto i : range1(u.size())) V[0] += V[i]; phi = V[0];