Open dsimcha opened 12 years ago
Yeah, like I mentioned in a commit message, DiagonalMatrices are in need of quite a bit of attention, they were left behind in a refactoring a while back - should I prioritise it higher? I actually didn't think they would be this useful, but you seem to be using them quite a bit.
I've been working on integrating Dstats into SciD (definitely still a work in progress) and I need diagonal matrices for singular value decomposition and weighted least squares regression. That's where all this is coming from. Overall, though, I don't think diagonal matrices are that high a priority. I just seem to have stumbled on the few use cases where they're needed lately. Just to give a complete answer, here are the things I would put ahead of diagonal matrices, in order of priority. Maybe this should be on the wiki, too, with anything you would add:
scid\ops\expression.d(403): Error: static assert "Types 'BasicMatrix!(BasicDiagonalMatrixStorage!(RefCounted!(CowArray!(double),cast(RefCountedAutoInitialize)1),cast(DiagonalMatrixStorageType)0))' and 'double' do not define a promotion. " scid\ops\expression.d(376): instantiated from here: PromotionImpl!(BasicMatrix!(BasicDiagonalMatrixStorage!(RefCounted!(CowArray!(double),cast(RefCountedAutoInitialize)1),cast(DiagonalMatrixStorageType)0)),double) scid\ops\expression.d(312): instantiated from here: Promotion!(BasicMatrix!(BasicDiagonalMatrixStorage!(RefCounted!(CowArray!(double),cast(RefCountedAutoInitialize)1),cast(DiagonalMatrixStorageType)0)),double) scid\ops\eval.d(70): instantiated from here: ExpressionResult!(Expression!(op,BasicMatrix!(BasicDiagonalMatrixStorage!(RefCounted!(CowArray!(double),cast(RefCountedAutoInitialize)1),cast(DiagonalMatrixStorageType)0)),Expression!(op,double,double))) test.d(5): instantiated from here: eval!(Expression!(op,BasicMatrix!(BasicDiagonalMatrixStorage!(RefCounted!(CowArray!(double),cast(RefCountedAutoInitialize)1),cast(DiagonalMatrixStorageType)0)),Expression!(op,double,double)))