Matt Fishman
Matt Fishman
Also note that as of https://github.com/ITensor/ITensors.jl/pull/686 you can do: ```julia N = 4 ds = (n + 1 for n in 1:N) ts = ("$n" for n in 1:N) is...
Thanks for the report @VietTralala. I think the issue is that the observer is creating an operator internally which is by default being allocated on CPU, and contracting an ITensor...
This is fixed by #956.
Which version of ITensor are you using? I get the following output: ```julia maxlinkdim(psi) = 16 maxlinkdim(A) = 1 maxlinkdim(psi0) = 16 maxlinkdim(psi1) = 16 maxlinkdim(psi2) = 16 maxlinkdim(psi3) =...
Generally I agree with your logic, though I wouldn't have expected that you could slice a Julia `Array` like `A[i => 1:end, j => 1:end]`, only an `ITensor` that already...
This made me think about the copying behavior of `permute`. It seems like if you call `permute!(A, (i, i'))`, if `A` has indices ordered as `(i, i')` then it shouldn't...
Somehow it seems backwards to define `permute!` in terms of `permute` instead of the other way around, but I think that is the way to go in this case...
That sounds good to implement it only in `permute` and then `permute!` just uses the `always_copy = false` version. I think it is fine to always call `setstore!` and `setinds!`...
A more subtle issue comes up that for `always_copy = false`, storage types like `Diag` and `DiagBlockSparse` in general do not need to manipulate the storage, so I think could...
One potential breaking change that came up here is if we should have `permute` by default return a view if possible (i.e. default to `always_copy = false`). I would lean...