public void TestRandomly() { const int Runs = 100; var gen = new Random(); for (int run = 0; run < Runs; run++) { const int MaxSize = 50; int size = gen.Next(1, MaxSize); int from, to; if (size == 0) { from = 0; to = -1; } else { from = gen.Next(0, size - 1); to = gen.Next(Math.Min(from, size - 1), size - 1); } var a1 = new DenseDoubleMatrix2D(size, size); var p1 = a1.ViewPart(from, from, size - to, size - to); int intervalFrom = gen.Next(size / 2, 2 * size); int intervalTo = gen.Next(intervalFrom, 2 * size); for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { a1[i, j] = gen.Next(intervalFrom, intervalTo); } } var a2 = a1.Copy(); var p2 = a2.ViewPart(from, from, size - to, size - to); const int Column = 0; var s1 = Cern.Colt.Matrix.DoubleAlgorithms.Sorting.QuickSort.Sort(p1, Column); var s2 = Cern.Colt.Matrix.DoubleAlgorithms.Sorting.MergeSort.Sort(p2, Column); var v1 = s1.ViewColumn(Column); var sv1 = v1.ToString(); var v2 = s2.ViewColumn(Column); var sv2 = v2.ToString(); Assert.IsTrue(v1.Equals(v2)); } }
public void TestOperations() { var a = new DenseDoubleMatrix2D(new[] { new[] { 3d, 6d }, new[] { 5d, 8d }, new[] { -2d, 9d } }); var b = new DenseDoubleMatrix2D(new[] { new[] { -6d, 1d }, new[] { 0d, 9d }, new[] { 8d, 3d } }); Assert.AreEqual(new DenseDoubleMatrix2D(new[] { new[] { -3d, 7d }, new[] { 5d, 17d }, new[] { 6d, 12d } }), a.Copy().Assign(b, BinaryFunctions.Plus)); Assert.AreEqual(new DenseDoubleMatrix2D(new[] { new[] { 9d, 5d }, new[] { 5d, -1d }, new[] { -10d, 6d } }), a.Copy().Assign(b, BinaryFunctions.Minus)); Assert.AreEqual(new DenseDoubleMatrix2D(new[] { new[] { 6d, 12d }, new[] { 10d, 16d }, new[] { -4d, 18d } }), a.Copy().Assign(UnaryFunctions.Mult(2d))); Assert.AreEqual(new DenseDoubleMatrix2D(new[] { new[] { 1.5d, 3d }, new[] { 2.5d, 4d }, new[] { -1d, 4.5d } }), a.Copy().Assign(UnaryFunctions.Div(2d))); var c = new DenseDoubleMatrix2D( new[] { new[] { 4d, 1d, 9d }, new[] { 6d, 2d, 8d }, new[] { 7d, 3d, 5d }, new[] { 11d, 10d, 12d } }); var d = new DenseDoubleMatrix2D(new[] { new[] { 2d, 9d }, new[] { 5d, 12d }, new[] { 8d, 10d } }); Assert.AreEqual( new DenseDoubleMatrix2D(new[] { new[] { 85d, 138d }, new[] { 86d, 158d }, new[] { 69d, 149d }, new[] { 168d, 339d } }), Algebra.Mult(c, d)); }