docs: def _ttv_compute(self, v, dims, vidx, remdims):
          """
          Tensor times vector product
  
          Parameter
          ---------
          """
          if not isinstance(v, tuple):
              raise ValueError('v must be a tuple of vectors')
          ndim = self.ndim
          order = list(remdims) + list(dims)
          if ndim > 1:
              T = self.transpose(order)
          sz = array(self.shape)[order]
          for i in np.arange(len(dims), 0, -1):
              T = T.reshape((sz[:ndim - 1].prod(), sz[ndim - 1]))
              T = T.dot(v[vidx[i - 1]])
              ndim -= 1
          if ndim > 0:
              T = T.reshape(sz[:ndim])
          return T