From d1cffeb4c16f31185a45400cebb0fd449beebb1f Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Wed, 4 Sep 2013 22:54:10 +0200 Subject: [PATCH] LA: make Iterator generic & shared --- .../IterativeSolvers/BiCgStabSolver.cs | 4 +- .../CompositeSolverExample.cs | 3 +- .../IterativeSolvers/GpBiCgSolver.cs | 4 +- .../IterativeSolvers/MlkBiCgStabSolver.cs | 4 +- .../IterativeSolvers/TFQMRSolver.cs | 4 +- .../LinearAlgebra/Complex/Solvers/Iterator.cs | 263 +-------------- .../Complex32/Solvers/Iterator.cs | 263 +-------------- .../LinearAlgebra/Double/Solvers/Iterator.cs | 263 +-------------- .../LinearAlgebra/Single/Solvers/Iterator.cs | 263 +-------------- .../LinearAlgebra/Solvers/Iterator.cs | 299 ++++++++++++++++++ src/Numerics/Numerics.csproj | 1 + .../Complex/Solvers/Iterative/BiCgStabTest.cs | 11 +- .../Complex/Solvers/Iterative/GpBiCgTest.cs | 11 +- .../Solvers/Iterative/MlkBiCgStabTest.cs | 11 +- .../Complex/Solvers/Iterative/TFQMRTest.cs | 11 +- .../Complex/Solvers/IteratorTest.cs | 43 +-- .../Solvers/Iterative/BiCgStabTest.cs | 12 +- .../Complex32/Solvers/Iterative/GpBiCgTest.cs | 10 +- .../Solvers/Iterative/MlkBiCgStabTest.cs | 12 +- .../Complex32/Solvers/Iterative/TFQMRTest.cs | 12 +- .../Complex32/Solvers/IteratorTest.cs | 43 +-- .../Double/Solvers/Iterative/BiCgStabTest.cs | 12 +- .../Double/Solvers/Iterative/GpBiCgTest.cs | 14 +- .../Solvers/Iterative/MlkBiCgStabTest.cs | 12 +- .../Double/Solvers/Iterative/TFQMRTest.cs | 12 +- .../Double/Solvers/IteratorTest.cs | 44 +-- .../Single/Solvers/Iterative/BiCgStabTest.cs | 12 +- .../Single/Solvers/Iterative/GpBiCgTest.cs | 12 +- .../Solvers/Iterative/MlkBiCgStabTest.cs | 12 +- .../Single/Solvers/Iterative/TFQMRTest.cs | 12 +- .../Single/Solvers/IteratorTest.cs | 44 +-- 31 files changed, 501 insertions(+), 1232 deletions(-) create mode 100644 src/Numerics/LinearAlgebra/Solvers/Iterator.cs diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs b/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs index da2d7216..48d0122b 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs @@ -27,9 +27,9 @@ using System; using System.Globalization; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples @@ -102,7 +102,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples var residualStopCriterium = new ResidualStopCriterium(1e-10); // Create monitor with defined stop criteriums - var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); + var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); // Create Bi-Conjugate Gradient Stabilized solver var solver = new BiCgStab(monitor); diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs b/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs index 038c6d2f..0586169c 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs @@ -28,7 +28,6 @@ using System; using System.Globalization; using System.Reflection; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers; @@ -102,7 +101,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples var residualStopCriterium = new ResidualStopCriterium(1e-10); // Create monitor with defined stop criteriums - var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); + var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); // Load all suitable solvers from current assembly. Below in this example, there is user-defined solver // "class UserBiCgStab : IIterativeSolverSetup" which uses regular BiCgStab solver. But user may create any other solver diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs b/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs index fabfe484..7432154a 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs @@ -27,9 +27,9 @@ using System; using System.Globalization; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples @@ -100,7 +100,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples var residualStopCriterium = new ResidualStopCriterium(1e-10); // Create monitor with defined stop criteriums - var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); + var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); // Create Generalized Product Bi-Conjugate Gradient solver var solver = new GpBiCg(monitor); diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs b/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs index 2b63286a..f8c74827 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs @@ -27,9 +27,9 @@ using System; using System.Globalization; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples @@ -101,7 +101,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples var residualStopCriterium = new ResidualStopCriterium(1e-10); // Create monitor with defined stop criteriums - var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); + var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); // Create Multiple-Lanczos Bi-Conjugate Gradient Stabilized solver var solver = new MlkBiCgStab(monitor); diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs b/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs index 20dfe6c8..3d254514 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs @@ -27,9 +27,9 @@ using System; using System.Globalization; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples @@ -101,7 +101,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples var residualStopCriterium = new ResidualStopCriterium(1e-10); // Create monitor with defined stop criteriums - var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); + var monitor = new Iterator(new IIterationStopCriterium[] { iterationCountStopCriterium, residualStopCriterium }); // Create Transpose Free Quasi-Minimal Residual solver var solver = new TFQMR(monitor); diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs index 43e7dda9..fb4f5fc8 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs @@ -28,14 +28,9 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using System; -using System.Collections.Generic; -using System.Linq; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; -using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers { @@ -49,20 +44,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public static class Iterator { - /// - /// The default status for the iterator. - /// - private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); - /// /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); iterator.Add(new DivergenceStopCriterium()); iterator.Add(new IterationCountStopCriterium()); @@ -70,254 +60,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers return iterator; } - - /// - /// The collection that holds all the stop criteria and the flag indicating if they should be added - /// to the child iterators. - /// - private readonly Dictionary> _stopCriterias = new Dictionary>(); - - /// - /// The status of the iterator. - /// - private ICalculationStatus _status = DefaultStatus; - - /// - /// Indicates if the iteration was cancelled. - /// - private bool _wasIterationCancelled; - - /// - /// Initializes a new instance of the class. - /// - public Iterator() : this(null) - { - } - - /// - /// Initializes a new instance of the class with the specified stop criteria. - /// - /// - /// The specified stop criteria. Only one stop criterium of each type can be passed in. None - /// of the stop criteria will be passed on to child iterators. - /// - /// Thrown if contains multiple stop criteria of the same type. - public Iterator(IEnumerable> stopCriteria) - { - // Add the stop criteria - if (stopCriteria == null) - { - return; - } - - foreach (var stopCriterium in stopCriteria.Where(stopCriterium => stopCriterium != null)) - { - Add(stopCriterium); - } - } - - /// - /// Adds an to the internal collection of stop-criteria. Only a - /// single stop criterium of each type can be stored. - /// - /// The stop criterium to add. - /// Thrown if is . - /// - /// Thrown if is of the same type as an already - /// stored criterium. - /// - public void Add(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - throw new ArgumentException(Resources.StopCriteriumDuplicate); - } - - // Store the stop criterium. - _stopCriterias.Add(stopCriterium.GetType(), stopCriterium); - } - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (!_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - return; - } - - // Remove from the collection - _stopCriterias.Remove(stopCriterium.GetType()); - } - - /// - /// Indicates if the specific stop criterium is stored by the . - /// - /// The stop criterium. - /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) - { - return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); - } - - /// - /// Gets the number of stored stop criteria. - /// - /// Used for testing only. - internal int NumberOfCriteria - { - get - { - return _stopCriterias.Count; - } - } - - /// - /// Gets an IEnumerator that enumerates over all the stored stop criteria. - /// - /// Used for testing only. - internal IEnumerable> StoredStopCriteria - { - get - { - return _stopCriterias.Select(criterium => criterium.Value); - } - } - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// - /// Does not reset the stop-criteria. - /// - public void IterationCancelled() - { - _wasIterationCancelled = true; - _status = new CalculationCancelled(); - } - - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current IIterator. Result is set into Status field. - /// - /// The number of iterations that have passed so far. - /// The vector containing the current solution values. - /// The right hand side vector. - /// The vector containing the current residual vectors. - /// - /// The individual iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - public void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) - { - if (_stopCriterias.Count == 0) - { - throw new ArgumentException(Resources.StopCriteriumMissing); - } - - if (iterationNumber < 0) - { - throw new ArgumentOutOfRangeException("iterationNumber"); - } - - if (solutionVector == null) - { - throw new ArgumentNullException("solutionVector"); - } - - if (sourceVector == null) - { - throw new ArgumentNullException("sourceVector"); - } - - if (residualVector == null) - { - throw new ArgumentNullException("residualVector"); - } - - // While we're cancelled we don't call on the stop-criteria. - if (_wasIterationCancelled) - { - return; - } - - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); - var status = stopCriterium.Status; - - // Check if the status is: - // - Running --> keep going - // - Indetermined --> keep going - // Anything else: - // Stop looping and set that status - if ((status is CalculationRunning) || (status is CalculationIndetermined)) - { - continue; - } - - _status = status; - return; - } - - // Got all the way through - // So we're running because we had vectors passed to us. - if (!(_status is CalculationRunning)) - { - _status = new CalculationRunning(); - } - } - - /// - /// Gets the current calculation status. - /// - public ICalculationStatus Status - { - get - { - return _status; - } - } - - /// - /// Resets the to the pre-calculation state. - /// - public void ResetToPrecalculationState() - { - // Indicate that we're no longer cancelled. - _wasIterationCancelled = false; - - // Reset the status. - _status = DefaultStatus; - - // Reset the stop-criteria - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.ResetToPrecalculationState(); - } - } - - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - public IIterator Clone() - { - var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); - return new Iterator(stopCriteria); - } } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs index 1543f914..40a4037e 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs @@ -28,14 +28,9 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using System; -using System.Collections.Generic; -using System.Linq; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; -using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers { @@ -44,20 +39,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public static class Iterator { - /// - /// The default status for the iterator. - /// - private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); - /// /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); iterator.Add(new DivergenceStopCriterium()); iterator.Add(new IterationCountStopCriterium()); @@ -65,254 +55,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers return iterator; } - - /// - /// The collection that holds all the stop criteria and the flag indicating if they should be added - /// to the child iterators. - /// - private readonly Dictionary> _stopCriterias = new Dictionary>(); - - /// - /// The status of the iterator. - /// - private ICalculationStatus _status = DefaultStatus; - - /// - /// Indicates if the iteration was cancelled. - /// - private bool _wasIterationCancelled; - - /// - /// Initializes a new instance of the class. - /// - public Iterator() : this(null) - { - } - - /// - /// Initializes a new instance of the class with the specified stop criteria. - /// - /// - /// The specified stop criteria. Only one stop criterium of each type can be passed in. None - /// of the stop criteria will be passed on to child iterators. - /// - /// Thrown if contains multiple stop criteria of the same type. - public Iterator(IEnumerable> stopCriteria) - { - // Add the stop criteria - if (stopCriteria == null) - { - return; - } - - foreach (var stopCriterium in stopCriteria.Where(stopCriterium => stopCriterium != null)) - { - Add(stopCriterium); - } - } - - /// - /// Adds an to the internal collection of stop-criteria. Only a - /// single stop criterium of each type can be stored. - /// - /// The stop criterium to add. - /// Thrown if is . - /// - /// Thrown if is of the same type as an already - /// stored criterium. - /// - public void Add(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - throw new ArgumentException(Resources.StopCriteriumDuplicate); - } - - // Store the stop criterium. - _stopCriterias.Add(stopCriterium.GetType(), stopCriterium); - } - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (!_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - return; - } - - // Remove from the collection - _stopCriterias.Remove(stopCriterium.GetType()); - } - - /// - /// Indicates if the specific stop criterium is stored by the . - /// - /// The stop criterium. - /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) - { - return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); - } - - /// - /// Gets the number of stored stop criteria. - /// - /// Used for testing only. - internal int NumberOfCriteria - { - get - { - return _stopCriterias.Count; - } - } - - /// - /// Gets an IEnumerator that enumerates over all the stored stop criteria. - /// - /// Used for testing only. - internal IEnumerable> StoredStopCriteria - { - get - { - return _stopCriterias.Select(criterium => criterium.Value); - } - } - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// - /// Does not reset the stop-criteria. - /// - public void IterationCancelled() - { - _wasIterationCancelled = true; - _status = new CalculationCancelled(); - } - - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current IIterator. Result is set into Status field. - /// - /// The number of iterations that have passed so far. - /// The vector containing the current solution values. - /// The right hand side vector. - /// The vector containing the current residual vectors. - /// - /// The individual iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - public void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) - { - if (_stopCriterias.Count == 0) - { - throw new ArgumentException(Resources.StopCriteriumMissing); - } - - if (iterationNumber < 0) - { - throw new ArgumentOutOfRangeException("iterationNumber"); - } - - if (solutionVector == null) - { - throw new ArgumentNullException("solutionVector"); - } - - if (sourceVector == null) - { - throw new ArgumentNullException("sourceVector"); - } - - if (residualVector == null) - { - throw new ArgumentNullException("residualVector"); - } - - // While we're cancelled we don't call on the stop-criteria. - if (_wasIterationCancelled) - { - return; - } - - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); - var status = stopCriterium.Status; - - // Check if the status is: - // - Running --> keep going - // - Indetermined --> keep going - // Anything else: - // Stop looping and set that status - if ((status is CalculationRunning) || (status is CalculationIndetermined)) - { - continue; - } - - _status = status; - return; - } - - // Got all the way through - // So we're running because we had vectors passed to us. - if (!(_status is CalculationRunning)) - { - _status = new CalculationRunning(); - } - } - - /// - /// Gets the current calculation status. - /// - public ICalculationStatus Status - { - get - { - return _status; - } - } - - /// - /// Resets the to the pre-calculation state. - /// - public void ResetToPrecalculationState() - { - // Indicate that we're no longer cancelled. - _wasIterationCancelled = false; - - // Reset the status. - _status = DefaultStatus; - - // Reset the stop-criteria - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.ResetToPrecalculationState(); - } - } - - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - public IIterator Clone() - { - var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); - return new Iterator(stopCriteria); - } } } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs index f6a61106..b7cbe980 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs @@ -28,34 +28,24 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using System; -using System.Collections.Generic; -using System.Linq; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; -using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers { /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public static class Iterator { - /// - /// The default status for the iterator. - /// - private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); - /// /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); iterator.Add(new DivergenceStopCriterium()); iterator.Add(new IterationCountStopCriterium()); @@ -63,254 +53,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers return iterator; } - - /// - /// The collection that holds all the stop criteria and the flag indicating if they should be added - /// to the child iterators. - /// - private readonly Dictionary> _stopCriterias = new Dictionary>(); - - /// - /// The status of the iterator. - /// - private ICalculationStatus _status = DefaultStatus; - - /// - /// Indicates if the iteration was canceled. - /// - private bool _wasIterationCancelled; - - /// - /// Initializes a new instance of the class. - /// - public Iterator() : this(null) - { - } - - /// - /// Initializes a new instance of the class with the specified stop criteria. - /// - /// - /// The specified stop criteria. Only one stop criterium of each type can be passed in. None - /// of the stop criteria will be passed on to child iterators. - /// - /// Thrown if contains multiple stop criteria of the same type. - public Iterator(IEnumerable> stopCriteria) - { - // Add the stop criteria - if (stopCriteria == null) - { - return; - } - - foreach (var stopCriterium in stopCriteria.Where(stopCriterium => stopCriterium != null)) - { - Add(stopCriterium); - } - } - - /// - /// Adds an to the internal collection of stop-criteria. Only a - /// single stop criterium of each type can be stored. - /// - /// The stop criterium to add. - /// Thrown if is . - /// - /// Thrown if is of the same type as an already - /// stored criterium. - /// - public void Add(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - throw new ArgumentException(Resources.StopCriteriumDuplicate); - } - - // Store the stop criterium. - _stopCriterias.Add(stopCriterium.GetType(), stopCriterium); - } - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (!_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - return; - } - - // Remove from the collection - _stopCriterias.Remove(stopCriterium.GetType()); - } - - /// - /// Indicates if the specific stop criterium is stored by the . - /// - /// The stop criterium. - /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) - { - return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); - } - - /// - /// Gets the number of stored stop criteria. - /// - /// Used for testing only. - internal int NumberOfCriteria - { - get - { - return _stopCriterias.Count; - } - } - - /// - /// Gets an IEnumerator that enumerates over all the stored stop criteria. - /// - /// Used for testing only. - internal IEnumerable> StoredStopCriteria - { - get - { - return _stopCriterias.Select(criterium => criterium.Value); - } - } - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// - /// Does not reset the stop-criteria. - /// - public void IterationCancelled() - { - _wasIterationCancelled = true; - _status = new CalculationCancelled(); - } - - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Result is set into Status field. - /// - /// The number of iterations that have passed so far. - /// The vector containing the current solution values. - /// The right hand side vector. - /// The vector containing the current residual vectors. - /// - /// The individual iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - public void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) - { - if (_stopCriterias.Count == 0) - { - throw new ArgumentException(Resources.StopCriteriumMissing); - } - - if (iterationNumber < 0) - { - throw new ArgumentOutOfRangeException("iterationNumber"); - } - - if (solutionVector == null) - { - throw new ArgumentNullException("solutionVector"); - } - - if (sourceVector == null) - { - throw new ArgumentNullException("sourceVector"); - } - - if (residualVector == null) - { - throw new ArgumentNullException("residualVector"); - } - - // While we're cancelled we don't call on the stop-criteria. - if (_wasIterationCancelled) - { - return; - } - - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); - var status = stopCriterium.Status; - - // Check if the status is: - // - Running --> keep going - // - Indetermined --> keep going - // Anything else: - // Stop looping and set that status - if ((status is CalculationRunning) || (status is CalculationIndetermined)) - { - continue; - } - - _status = status; - return; - } - - // Got all the way through - // So we're running because we had vectors passed to us. - if (!(_status is CalculationRunning)) - { - _status = new CalculationRunning(); - } - } - - /// - /// Gets the current calculation status. - /// - public ICalculationStatus Status - { - get - { - return _status; - } - } - - /// - /// Resets the to the pre-calculation state. - /// - public void ResetToPrecalculationState() - { - // Indicate that we're no longer cancelled. - _wasIterationCancelled = false; - - // Reset the status. - _status = DefaultStatus; - - // Reset the stop-criteria - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.ResetToPrecalculationState(); - } - } - - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - public IIterator Clone() - { - var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); - return new Iterator(stopCriteria); - } } } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs index dc2b97ea..928aacff 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs @@ -28,34 +28,24 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using System; -using System.Collections.Generic; -using System.Linq; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; -using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers { /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public static class Iterator { - /// - /// The default status for the iterator. - /// - private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); - /// /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); iterator.Add(new DivergenceStopCriterium()); iterator.Add(new IterationCountStopCriterium()); @@ -63,254 +53,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers return iterator; } - - /// - /// The collection that holds all the stop criteria and the flag indicating if they should be added - /// to the child iterators. - /// - private readonly Dictionary> _stopCriterias = new Dictionary>(); - - /// - /// The status of the iterator. - /// - private ICalculationStatus _status = DefaultStatus; - - /// - /// Indicates if the iteration was cancelled. - /// - private bool _wasIterationCancelled; - - /// - /// Initializes a new instance of the class. - /// - public Iterator() : this(null) - { - } - - /// - /// Initializes a new instance of the class with the specified stop criteria. - /// - /// - /// The specified stop criteria. Only one stop criterium of each type can be passed in. None - /// of the stop criteria will be passed on to child iterators. - /// - /// Thrown if contains multiple stop criteria of the same type. - public Iterator(IEnumerable> stopCriteria) - { - // Add the stop criteria - if (stopCriteria == null) - { - return; - } - - foreach (var stopCriterium in stopCriteria.Where(stopCriterium => stopCriterium != null)) - { - Add(stopCriterium); - } - } - - /// - /// Adds an to the internal collection of stop-criteria. Only a - /// single stop criterium of each type can be stored. - /// - /// The stop criterium to add. - /// Thrown if is . - /// - /// Thrown if is of the same type as an already - /// stored criterium. - /// - public void Add(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - throw new ArgumentException(Resources.StopCriteriumDuplicate); - } - - // Store the stop criterium. - _stopCriterias.Add(stopCriterium.GetType(), stopCriterium); - } - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) - { - if (stopCriterium == null) - { - throw new ArgumentNullException("stopCriterium"); - } - - if (!_stopCriterias.ContainsKey(stopCriterium.GetType())) - { - return; - } - - // Remove from the collection - _stopCriterias.Remove(stopCriterium.GetType()); - } - - /// - /// Indicates if the specific stop criterium is stored by the . - /// - /// The stop criterium. - /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) - { - return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); - } - - /// - /// Gets the number of stored stop criteria. - /// - /// Used for testing only. - internal int NumberOfCriteria - { - get - { - return _stopCriterias.Count; - } - } - - /// - /// Gets an IEnumerator that enumerates over all the stored stop criteria. - /// - /// Used for testing only. - internal IEnumerable> StoredStopCriteria - { - get - { - return _stopCriterias.Select(criterium => criterium.Value); - } - } - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// - /// Does not reset the stop-criteria. - /// - public void IterationCancelled() - { - _wasIterationCancelled = true; - _status = new CalculationCancelled(); - } - - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Result is set into Status field. - /// - /// The number of iterations that have passed so far. - /// The vector containing the current solution values. - /// The right hand side vector. - /// The vector containing the current residual vectors. - /// - /// The individual iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - public void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) - { - if (_stopCriterias.Count == 0) - { - throw new ArgumentException(Resources.StopCriteriumMissing); - } - - if (iterationNumber < 0) - { - throw new ArgumentOutOfRangeException("iterationNumber"); - } - - if (solutionVector == null) - { - throw new ArgumentNullException("solutionVector"); - } - - if (sourceVector == null) - { - throw new ArgumentNullException("sourceVector"); - } - - if (residualVector == null) - { - throw new ArgumentNullException("residualVector"); - } - - // While we're cancelled we don't call on the stop-criteria. - if (_wasIterationCancelled) - { - return; - } - - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); - var status = stopCriterium.Status; - - // Check if the status is: - // - Running --> keep going - // - Indetermined --> keep going - // Anything else: - // Stop looping and set that status - if ((status is CalculationRunning) || (status is CalculationIndetermined)) - { - continue; - } - - _status = status; - return; - } - - // Got all the way through - // So we're running because we had vectors passed to us. - if (!(_status is CalculationRunning)) - { - _status = new CalculationRunning(); - } - } - - /// - /// Gets the current calculation status. - /// - public ICalculationStatus Status - { - get - { - return _status; - } - } - - /// - /// Resets the to the pre-calculation state. - /// - public void ResetToPrecalculationState() - { - // Indicate that we're no longer cancelled. - _wasIterationCancelled = false; - - // Reset the status. - _status = DefaultStatus; - - // Reset the stop-criteria - foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) - { - stopCriterium.ResetToPrecalculationState(); - } - } - - /// - /// Creates a deep clone of the current iterator. - /// - /// The deep clone of the current iterator. - public IIterator Clone() - { - var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); - return new Iterator(stopCriteria); - } } } diff --git a/src/Numerics/LinearAlgebra/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Solvers/Iterator.cs new file mode 100644 index 00000000..b4a303d7 --- /dev/null +++ b/src/Numerics/LinearAlgebra/Solvers/Iterator.cs @@ -0,0 +1,299 @@ +// +// Math.NET Numerics, part of the Math.NET Project +// http://numerics.mathdotnet.com +// http://github.com/mathnet/mathnet-numerics +// http://mathnetnumerics.codeplex.com +// +// Copyright (c) 2009-2010 Math.NET +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Collections.Generic; +using System.Linq; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; +using MathNet.Numerics.Properties; + +namespace MathNet.Numerics.LinearAlgebra.Solvers +{ + /// + /// An iterator that is used to check if an iterative calculation should continue or stop. + /// + public sealed class Iterator : IIterator where T : struct, IEquatable, IFormattable + { + /// + /// The default status for the iterator. + /// + private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); + + /// + /// The collection that holds all the stop criteria and the flag indicating if they should be added + /// to the child iterators. + /// + private readonly Dictionary> _stopCriterias = new Dictionary>(); + + /// + /// The status of the iterator. + /// + private ICalculationStatus _status = DefaultStatus; + + /// + /// Indicates if the iteration was canceled. + /// + private bool _wasIterationCancelled; + + /// + /// Initializes a new instance of the class. + /// + public Iterator() : this(null) + { + } + + /// + /// Initializes a new instance of the class with the specified stop criteria. + /// + /// + /// The specified stop criteria. Only one stop criterium of each type can be passed in. None + /// of the stop criteria will be passed on to child iterators. + /// + /// Thrown if contains multiple stop criteria of the same type. + public Iterator(IEnumerable> stopCriteria) + { + // Add the stop criteria + if (stopCriteria == null) + { + return; + } + + foreach (var stopCriterium in stopCriteria.Where(stopCriterium => stopCriterium != null)) + { + Add(stopCriterium); + } + } + + /// + /// Adds an to the internal collection of stop-criteria. Only a + /// single stop criterium of each type can be stored. + /// + /// The stop criterium to add. + /// Thrown if is . + /// + /// Thrown if is of the same type as an already + /// stored criterium. + /// + public void Add(IIterationStopCriterium stopCriterium) + { + if (stopCriterium == null) + { + throw new ArgumentNullException("stopCriterium"); + } + + if (_stopCriterias.ContainsKey(stopCriterium.GetType())) + { + throw new ArgumentException(Resources.StopCriteriumDuplicate); + } + + // Store the stop criterium. + _stopCriterias.Add(stopCriterium.GetType(), stopCriterium); + } + + /// + /// Removes the from the internal collection. + /// + /// The stop criterium that must be removed. + public void Remove(IIterationStopCriterium stopCriterium) + { + if (stopCriterium == null) + { + throw new ArgumentNullException("stopCriterium"); + } + + if (!_stopCriterias.ContainsKey(stopCriterium.GetType())) + { + return; + } + + // Remove from the collection + _stopCriterias.Remove(stopCriterium.GetType()); + } + + /// + /// Indicates if the specific stop criterium is stored by the . + /// + /// The stop criterium. + /// true if the contains the stop criterium; otherwise false. + public bool Contains(IIterationStopCriterium stopCriterium) + { + return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); + } + + /// + /// Gets the number of stored stop criteria. + /// + /// Used for testing only. + internal int NumberOfCriteria + { + get + { + return _stopCriterias.Count; + } + } + + /// + /// Gets an IEnumerator that enumerates over all the stored stop criteria. + /// + /// Used for testing only. + internal IEnumerable> StoredStopCriteria + { + get + { + return _stopCriterias.Select(criterium => criterium.Value); + } + } + + /// + /// Indicates to the iterator that the iterative process has been cancelled. + /// + /// + /// Does not reset the stop-criteria. + /// + public void IterationCancelled() + { + _wasIterationCancelled = true; + _status = new CalculationCancelled(); + } + + /// + /// Determines the status of the iterative calculation based on the stop criteria stored + /// by the current . Result is set into Status field. + /// + /// The number of iterations that have passed so far. + /// The vector containing the current solution values. + /// The right hand side vector. + /// The vector containing the current residual vectors. + /// + /// The individual iterators may internally track the progress of the calculation based + /// on the invocation of this method. Therefore this method should only be called if the + /// calculation has moved forwards at least one step. + /// + public void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) + { + if (_stopCriterias.Count == 0) + { + throw new ArgumentException(Resources.StopCriteriumMissing); + } + + if (iterationNumber < 0) + { + throw new ArgumentOutOfRangeException("iterationNumber"); + } + + if (solutionVector == null) + { + throw new ArgumentNullException("solutionVector"); + } + + if (sourceVector == null) + { + throw new ArgumentNullException("sourceVector"); + } + + if (residualVector == null) + { + throw new ArgumentNullException("residualVector"); + } + + // While we're cancelled we don't call on the stop-criteria. + if (_wasIterationCancelled) + { + return; + } + + foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) + { + stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); + var status = stopCriterium.Status; + + // Check if the status is: + // - Running --> keep going + // - Indetermined --> keep going + // Anything else: + // Stop looping and set that status + if ((status is CalculationRunning) || (status is CalculationIndetermined)) + { + continue; + } + + _status = status; + return; + } + + // Got all the way through + // So we're running because we had vectors passed to us. + if (!(_status is CalculationRunning)) + { + _status = new CalculationRunning(); + } + } + + /// + /// Gets the current calculation status. + /// + public ICalculationStatus Status + { + get + { + return _status; + } + } + + /// + /// Resets the to the pre-calculation state. + /// + public void ResetToPrecalculationState() + { + // Indicate that we're no longer cancelled. + _wasIterationCancelled = false; + + // Reset the status. + _status = DefaultStatus; + + // Reset the stop-criteria + foreach (var stopCriterium in _stopCriterias.Select(pair => pair.Value)) + { + stopCriterium.ResetToPrecalculationState(); + } + } + + /// + /// Creates a deep clone of the current iterator. + /// + /// The deep clone of the current iterator. + public IIterator Clone() + { + var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); + return new Iterator(stopCriteria); + } + } +} diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 02423683..e0bfb248 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -122,6 +122,7 @@ + diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs index cd33a8f3..17c7bb10 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs @@ -33,6 +33,7 @@ using MathNet.Numerics.LinearAlgebra.Complex; using MathNet.Numerics.LinearAlgebra.Complex.Solvers; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => Complex.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -141,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => Complex.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -219,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => Complex.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -260,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -292,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs index da477a6a..27ab53a6 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs @@ -33,6 +33,7 @@ using MathNet.Numerics.LinearAlgebra.Complex; using MathNet.Numerics.LinearAlgebra.Complex.Solvers; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -141,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -262,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -294,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs index ac8d195e..dd513a51 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs @@ -33,6 +33,7 @@ using MathNet.Numerics.LinearAlgebra.Complex; using MathNet.Numerics.LinearAlgebra.Complex.Solvers; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -142,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -261,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -293,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs index 8c43bf34..1085bf36 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs @@ -33,6 +33,7 @@ using MathNet.Numerics.LinearAlgebra.Complex; using MathNet.Numerics.LinearAlgebra.Complex.Solvers; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -142,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -261,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -293,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs index a4e6ef73..473235a9 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs @@ -33,6 +33,7 @@ using System.Collections.Generic; using MathNet.Numerics.LinearAlgebra.Complex; using MathNet.Numerics.LinearAlgebra.Complex.Solvers; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -53,7 +54,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void CreateWithNullCollection() { - var iterator = new Iterator(null); + var iterator = new Iterator(null); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -64,7 +65,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void CreateWithEmptyCollection() { - var iterator = new Iterator(new IIterationStopCriterium[] { }); + var iterator = new Iterator(new IIterationStopCriterium[] { }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -75,7 +76,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void CreateWithCollectionWithNulls() { - var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); + var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -86,7 +87,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void CreateWithDuplicatesThrowsArgumentException() { - Assert.Throws(() => new Iterator(new IIterationStopCriterium[] + Assert.Throws(() => new Iterator(new IIterationStopCriterium[] { new FailureStopCriterium(), new FailureStopCriterium() @@ -106,7 +107,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.IsNotNull(iterator, "Should have an iterator"); // Check that we have all the criteria @@ -123,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void AddWithNullStopCriteriumThrowsArgumentNullException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.Add(null)); } @@ -133,7 +134,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void AddWithExistingStopCriteriumThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); Assert.AreEqual(1, iterator.NumberOfCriteria, "Incorrect criterium count"); @@ -153,7 +154,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -183,7 +184,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); Assert.Throws(() => iterator.Remove(null)); @@ -201,7 +202,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new DivergenceStopCriterium(), new IterationCountStopCriterium(), }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); iterator.Remove(new ResidualStopCriterium()); @@ -221,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -237,7 +238,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatusWithoutStopCriteriaThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.DetermineStatus( 0, DenseVector.Create(3, i => 4), @@ -258,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( -1, @@ -280,7 +281,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -302,7 +303,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -324,7 +325,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -346,7 +347,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -378,7 +379,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -409,12 +410,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); var clonedIterator = iterator.Clone(); - Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type"); + Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type"); - var clone = clonedIterator as Iterator; + var clone = clonedIterator as Iterator; Assert.IsNotNull(clone); // ReSharper disable PossibleNullReferenceException diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs index ac6c6cb5..9806d41f 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Complex32; -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -219,7 +219,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -307,7 +307,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs index 5eb4e939..b6bc86d6 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Complex32; -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs index c06e9d86..4c8d025f 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Complex32; -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -142,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -304,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs index 4ad8dea8..0e3dbedd 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Complex32; -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -142,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -304,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs index d7067d03..0701cdda 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs @@ -33,6 +33,7 @@ using System.Collections.Generic; using MathNet.Numerics.LinearAlgebra.Complex32; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -53,7 +54,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void CreateWithNullCollection() { - var iterator = new Iterator(null); + var iterator = new Iterator(null); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -64,7 +65,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void CreateWithEmptyCollection() { - var iterator = new Iterator(new IIterationStopCriterium[] { }); + var iterator = new Iterator(new IIterationStopCriterium[] { }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -75,7 +76,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void CreateWithCollectionWithNulls() { - var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); + var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -86,7 +87,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void CreateWithDuplicatesThrowsArgumentException() { - Assert.Throws(() => new Iterator(new IIterationStopCriterium[] + Assert.Throws(() => new Iterator(new IIterationStopCriterium[] { new FailureStopCriterium(), new FailureStopCriterium() @@ -106,7 +107,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.IsNotNull(iterator, "Should have an iterator"); // Check that we have all the criteria @@ -123,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void AddWithNullStopCriteriumThrowsArgumentNullException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.Add(null)); } @@ -133,7 +134,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void AddWithExistingStopCriteriumThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); Assert.AreEqual(1, iterator.NumberOfCriteria, "Incorrect criterium count"); @@ -153,7 +154,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -183,7 +184,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); Assert.Throws(() => iterator.Remove(null)); @@ -201,7 +202,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new DivergenceStopCriterium(), new IterationCountStopCriterium(), }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); iterator.Remove(new ResidualStopCriterium()); @@ -221,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -237,7 +238,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatusWithoutStopCriteriaThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.DetermineStatus( 0, DenseVector.Create(3, i => 4), @@ -258,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( -1, @@ -280,7 +281,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -302,7 +303,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -324,7 +325,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -346,7 +347,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -378,7 +379,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -409,12 +410,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); var clonedIterator = iterator.Clone(); - Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type"); + Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type"); - var clone = clonedIterator as Iterator; + var clone = clonedIterator as Iterator; Assert.IsNotNull(clone); // ReSharper disable PossibleNullReferenceException diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs index f2ae2cdf..569d8361 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -217,7 +217,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -293,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs index 02643582..3f180aec 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs @@ -28,14 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative { @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -295,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs index 12fc1946..34fa4776 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -140,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -294,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs index 562b3d27..0d0c5686 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -140,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -259,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10), @@ -290,7 +290,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-10) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs index 994639b4..82b6db6c 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs @@ -31,8 +31,8 @@ using System; using System.Collections.Generic; using MathNet.Numerics.LinearAlgebra.Double; -using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -51,7 +51,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void CreateWithNullCollection() { - var iterator = new Iterator(null); + var iterator = new Iterator(null); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -62,7 +62,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void CreateWithEmptyCollection() { - var iterator = new Iterator(new IIterationStopCriterium[] { }); + var iterator = new Iterator(new IIterationStopCriterium[] { }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -73,7 +73,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void CreateWithCollectionWithNulls() { - var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); + var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -84,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void CreateWithDuplicatesThrowsArgumentException() { - Assert.Throws(() => new Iterator(new IIterationStopCriterium[] + Assert.Throws(() => new Iterator(new IIterationStopCriterium[] { new FailureStopCriterium(), new FailureStopCriterium() @@ -104,7 +104,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.IsNotNull(iterator, "Should have an iterator"); // Check that we have all the criteria @@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void AddWithNullStopCriteriumThrowsArgumentNullException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.Add(null)); } @@ -131,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void AddWithExistingStopCriteriumThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); Assert.AreEqual(1, iterator.NumberOfCriteria, "Incorrect criterium count"); @@ -151,7 +151,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -181,7 +181,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); Assert.Throws(() => iterator.Remove(null)); @@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new DivergenceStopCriterium(), new IterationCountStopCriterium(), }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); iterator.Remove(new ResidualStopCriterium()); @@ -219,7 +219,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -235,7 +235,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatusWithoutStopCriteriaThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.DetermineStatus( 0, DenseVector.Create(3, i => 4), @@ -256,7 +256,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( -1, @@ -278,7 +278,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -300,7 +300,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -344,7 +344,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -376,7 +376,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -407,12 +407,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); var clonedIterator = iterator.Clone(); - Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type"); + Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type"); - var clone = clonedIterator as Iterator; + var clone = clonedIterator as Iterator; Assert.IsNotNull(clone); // ReSharper disable PossibleNullReferenceException diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs index d8099612..c9ce1678 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Single; -using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -217,7 +217,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -260,7 +260,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -301,7 +301,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs index d3953206..1eae836f 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Single; -using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -303,7 +303,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs index 7a69763d..34f9e22e 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs @@ -31,9 +31,9 @@ using System; using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Single; -using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -95,7 +95,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -223,7 +223,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative for (var iteration = 0; iteration <= 3; iteration++) { // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -279,7 +279,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs index f5c152c0..fea8be3f 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs @@ -30,9 +30,9 @@ using System; using MathNet.Numerics.LinearAlgebra.Single; -using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -140,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var y = DenseVector.Create(matrix.RowCount, i => 1); // Create an iteration monitor which will keep track of iterative convergence - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary), @@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)), @@ -302,7 +302,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var monitor = new Iterator(new IIterationStopCriterium[] + var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs index 2015e2bf..6b9163d0 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs @@ -31,8 +31,8 @@ using System; using System.Collections.Generic; using MathNet.Numerics.LinearAlgebra.Single; -using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; @@ -51,7 +51,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void CreateWithNullCollection() { - var iterator = new Iterator(null); + var iterator = new Iterator(null); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -62,7 +62,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void CreateWithEmptyCollection() { - var iterator = new Iterator(new IIterationStopCriterium[] { }); + var iterator = new Iterator(new IIterationStopCriterium[] { }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -73,7 +73,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void CreateWithCollectionWithNulls() { - var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); + var iterator = new Iterator(new IIterationStopCriterium[] { null, null }); Assert.IsNotNull(iterator, "Should have an iterator"); Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria"); } @@ -84,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void CreateWithDuplicatesThrowsArgumentException() { - Assert.Throws(() => new Iterator(new IIterationStopCriterium[] + Assert.Throws(() => new Iterator(new IIterationStopCriterium[] { new FailureStopCriterium(), new FailureStopCriterium() @@ -104,7 +104,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.IsNotNull(iterator, "Should have an iterator"); // Check that we have all the criteria @@ -121,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void AddWithNullStopCriteriumThrowsArgumentNullException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.Add(null)); } @@ -131,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void AddWithExistingStopCriteriumThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); Assert.AreEqual(1, iterator.NumberOfCriteria, "Incorrect criterium count"); @@ -151,7 +151,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -181,7 +181,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); Assert.Throws(() => iterator.Remove(null)); @@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new DivergenceStopCriterium(), new IterationCountStopCriterium(), }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); iterator.Remove(new ResidualStopCriterium()); @@ -219,7 +219,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count"); foreach (var criterium in criteria) @@ -235,7 +235,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatusWithoutStopCriteriaThrowsArgumentException() { - var iterator = new Iterator(); + var iterator = new Iterator(); Assert.Throws(() => iterator.DetermineStatus( 0, DenseVector.Create(3, i => 4), @@ -256,7 +256,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( -1, @@ -278,7 +278,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -300,7 +300,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -322,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(), new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); Assert.Throws(() => iterator.DetermineStatus( 1, @@ -344,7 +344,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -376,7 +376,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new IterationCountStopCriterium(1) }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); // First step, nothing should happen. iterator.DetermineStatus( @@ -407,12 +407,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers new ResidualStopCriterium() }; - var iterator = new Iterator(criteria); + var iterator = new Iterator(criteria); var clonedIterator = iterator.Clone(); - Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type"); + Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type"); - var clone = clonedIterator as Iterator; + var clone = clonedIterator as Iterator; Assert.IsNotNull(clone); // ReSharper disable PossibleNullReferenceException