Hi all, I am working on a set of modules dealing with banded matrices (aka band matrices or band diagonal matrices). These are a certain kind of sparse matrices where all entries are known to be 0 except close to the main diagonal. Obviously, this condition can be exploited for efficient storage and algorithms.
I am planning to use the Math::Matrix::Banded namespace. However, I require separate namespaces for rectangular (i.e. non-square) and symmetric systems because they are stored differently and allow a distinct set of algorithms. I have considered Math::Matrix::Banded Math::Matrix::BandedRectangular Math::Matrix::BandedSymmetric What I don't like about this option is that the package name would be Math-Matrix-Banded, but it would use namespaces outside the top level namespace. An obvious alternative would be Math::Matrix::Banded Math::Matrix::Banded::Rectangular Math::Matrix::Banded::Symmetric What I don't like here is that it suggests that the latter two classes are subclasses of the first, which is not the case. The third option I came up with is Math::Matrix::Banded::Square Math::Matrix::Banded::Rectangular Math::Matrix::Banded::Symmetric This is all within the Math::Matrix::Banded namespace and reflects the sibling relationship between the three classes. What I can see as a disadvantage - apart from long names - is that the package would still be called Math-Matrix-Banded, but there is no class occupying the top level namespace, which might be confusing for users. Do you have any thoughts on this matter? Thank you and best wishes, Lutz