It may be good to rethink the names of the sparse storage tensors and constructors. Right now there is:
Dense
Diag
BlockSparse
DiagBlockSparse
DiagBlockSparse may not be a good name, however. I think it is a bit misleading, because naively one might expect that it has a general block sparse structure (where any blocks may be nonzero), where the blocks are diagonal. However, it is actually a block diagonal tensor (the only nonzero blocks are along the diagonal), where the nonzero blocks themselves are diagonal. Therefore, it may be better to call it DiagBlockDiag. This looks like a strange name, but it is anticipating that we may want to have a BlockDiag storage where the diagonal blocks are dense (many block diagonal matrices already show up in the code, for example as inputs to eigen).
Additionally, we may want to rename these constructors:
It may be good to rethink the names of the sparse storage tensors and constructors. Right now there is:
Dense
Diag
BlockSparse
DiagBlockSparse
DiagBlockSparse
may not be a good name, however. I think it is a bit misleading, because naively one might expect that it has a general block sparse structure (where any blocks may be nonzero), where the blocks are diagonal. However, it is actually a block diagonal tensor (the only nonzero blocks are along the diagonal), where the nonzero blocks themselves are diagonal. Therefore, it may be better to call itDiagBlockDiag
. This looks like a strange name, but it is anticipating that we may want to have aBlockDiag
storage where the diagonal blocks are dense (many block diagonal matrices already show up in the code, for example as inputs toeigen
).Additionally, we may want to rename these constructors:
to explicitly use
UniformDiag
instead ofDiag
, so it is clearer that a uniform Diag storage is being made.