You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be good to think about the interface for converting from sparse ITensor types to Dense, or other less sparse types where it makes sense. It would be good to have the following operations, with some proposed names:
Convert to Dense:
Diag -> Dense (dense)
BlockSparse -> Dense (dense, removeqns) (dense is implemented but not removeqns)
DiagBlockSparse -> Dense (dense)
Convert to Diag:
DiagBlockSparse -> Diag (diag, removeqns)
Convert to BlockSparse:
DiagBlockSparse -> BlockSparse (denseblocks)
Right now, I believe all of the dense conversion functions are implemented (but none of the others are).
The text was updated successfully, but these errors were encountered:
Also on a related note, it would be nice to have a function that acts like removeqns but within NDTensors, perhaps called removeblocks. This would do the conversions:
BlockSparse -> Dense
DiagBlockSparse -> Diag
This will be useful for generic code, since then removeqns(::ITensor) can just call removeblocks(::Tensor).
I think these names and concepts are all great. It’s a good distinction to make that removing QNs doesn’t necessarily mean going all the way to dense storage, because there may be other kinds of sparsity involved like diagonal sparsity. If we find a good application (data science?) of general sparsity that will be another situation that can be composed with block sparsity too.
If we do need better names later, we can always make them synonyms for some of these (soft deprecation).
It would be good to think about the interface for converting from sparse ITensor types to Dense, or other less sparse types where it makes sense. It would be good to have the following operations, with some proposed names:
Convert to
Dense
:Diag -> Dense
(dense
)BlockSparse -> Dense
(dense
,removeqns
) (dense
is implemented but notremoveqns
)DiagBlockSparse -> Dense
(dense
)Convert to
Diag
:DiagBlockSparse -> Diag
(diag
,removeqns
)Convert to
BlockSparse
:DiagBlockSparse -> BlockSparse
(denseblocks
)Right now, I believe all of the
dense
conversion functions are implemented (but none of the others are).The text was updated successfully, but these errors were encountered: