Currently everything is implemented in MatrixDataTempl using template specialization. Even though methods are defined as virtual in Data class.
We should move implementations to DenseMatrixData, SparseMatrixData and ScarseMatrixData.
Also SparseMatrixData and ScarseMatrixData should NOT share the implementation.
Current implementation using Eigen Sparse matrix does not consider implicit zeroes, so it is invalid for SparseMatrixData case.
Currently everything is implemented in MatrixDataTempl using template specialization. Even though methods are defined as virtual in Data class. We should move implementations to DenseMatrixData, SparseMatrixData and ScarseMatrixData. Also SparseMatrixData and ScarseMatrixData should NOT share the implementation. Current implementation using Eigen Sparse matrix does not consider implicit zeroes, so it is invalid for SparseMatrixData case.