private static void TestReorderingCamdSuiteSparse() { Skip.IfNot(TestSettings.TestSuiteSparse, TestSettings.MessageWhenSkippingSuiteSparse); int n = SparsePosDef10by10.Order; var pattern = SparsityPatternSymmetric.CreateFromDense(Matrix.CreateFromArray(SparsePosDef10by10.Matrix)); var orderingAlg = new OrderingCamdSuiteSparse(); (int[] permutation, ReorderingStatistics stats) = orderingAlg.FindPermutation(pattern, SparsePosDef10by10.ConstraintsCAMD); var originalDiagonal = new double[n]; var permutedDiagonal = new double[n]; for (int i = 0; i < n; ++i) { originalDiagonal[i] = SparsePosDef10by10.Matrix[i, i]; } for (int i = 0; i < n; ++i) { permutedDiagonal[i] = originalDiagonal[permutation[i]]; } var writer = new Array1DWriter(); Console.Write("Permutation (new-to-old): "); writer.WriteToConsole(permutation); Console.Write("Original diagonal: "); writer.WriteToConsole(originalDiagonal); Console.Write("Permuted diagonal: "); writer.WriteToConsole(permutedDiagonal); comparer.AssertEqual(SparsePosDef10by10.PermutationCAMD, permutation); }
private static void TestReorderingAmdCSparseNet() { var pattern = SparsityPatternSymmetric.CreateFromDense(Matrix.CreateFromArray(SparsePosDef10by10.Matrix)); var orderingAlg = new OrderingAmdCSparseNet(); (int[] permutation, bool oldToNew) = orderingAlg.FindPermutation(pattern); comparer.AssertEqual(SparsePosDef10by10.MatlabPermutationAMD, permutation); }
private static void TestReorderingAmdSuiteSparse() { Skip.IfNot(TestSettings.TestSuiteSparse, TestSettings.MessageWhenSkippingSuiteSparse); var pattern = SparsityPatternSymmetric.CreateFromDense(Matrix.CreateFromArray(SparsePosDef10by10.Matrix)); var orderingAlg = new OrderingAmdSuiteSparse(); (int[] permutation, bool oldToNew) = orderingAlg.FindPermutation(pattern); comparer.AssertEqual(SparsePosDef10by10.MatlabPermutationAMD, permutation); }