diff --git a/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs index fafaaf0d..d6024748 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs @@ -641,5 +641,29 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double } } } + + [Test] + public void CanGetSubMatrix_Issue35() + { + // [ 1 0 0 ] + // [ 0 2 0 ] + // [ 0 0 3 ] + var diagMatrix = new DiagonalMatrix(3); + for (int i = 0; i < 3; i++) + { + diagMatrix[i, i] = i + 1; + } + + // [ 0 0 ] + // [ 2 0 ] + var subM2 = diagMatrix.SubMatrix(0, 2, 1, 2); + Assert.IsTrue(subM2.Equals(new DenseMatrix(2, 2, new[] {0d, 2d, 0d, 0d}))); + + // [ 0 0 ] + // [ 2 0 ] + // [ 0 3 ] + var subM3 = diagMatrix.SubMatrix(0, 3, 1, 2); + Assert.IsTrue(subM3.Equals(new DenseMatrix(3, 2, new[] { 0d, 2d, 0d, 0d, 0d, 3d }))); + } } }