From 6a41820fc0f763ac43fd203ab1ad18e420f0ec5a Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Wed, 4 Sep 2013 19:36:13 +0200 Subject: [PATCH] LA: make IIterationStopCriterium generic & shared --- .../IterativeSolvers/BiCgStabSolver.cs | 3 +- .../CompositeSolverExample.cs | 3 +- .../IterativeSolvers/GpBiCgSolver.cs | 3 +- .../IterativeSolvers/MlkBiCgStabSolver.cs | 3 +- .../IterativeSolvers/TFQMRSolver.cs | 3 +- .../Complex/Solvers/IIterator.cs | 14 ++-- .../LinearAlgebra/Complex/Solvers/Iterator.cs | 15 ++-- .../StopCriterium/DivergenceStopCriterium.cs | 4 +- .../StopCriterium/FailureStopCriterium.cs | 4 +- .../StopCriterium/IIterationStopCriterium.cs | 81 ------------------- .../IterationCountStopCriterium.cs | 4 +- .../StopCriterium/ResidualStopCriterium.cs | 4 +- .../Complex32/Solvers/IIterator.cs | 14 ++-- .../Complex32/Solvers/Iterator.cs | 19 ++--- .../StopCriterium/DivergenceStopCriterium.cs | 4 +- .../StopCriterium/FailureStopCriterium.cs | 6 +- .../StopCriterium/IIterationStopCriterium.cs | 76 ----------------- .../IterationCountStopCriterium.cs | 10 +-- .../StopCriterium/ResidualStopCriterium.cs | 10 +-- .../LinearAlgebra/Double/Solvers/IIterator.cs | 12 +-- .../LinearAlgebra/Double/Solvers/Iterator.cs | 17 ++-- .../StopCriterium/DivergenceStopCriterium.cs | 4 +- .../StopCriterium/FailureStopCriterium.cs | 4 +- .../StopCriterium/IIterationStopCriterium.cs | 74 ----------------- .../IterationCountStopCriterium.cs | 10 +-- .../StopCriterium/ResidualStopCriterium.cs | 6 +- .../{ => Factorization}/ISolver.cs | 2 +- .../LinearAlgebra/Single/Solvers/IIterator.cs | 14 ++-- .../LinearAlgebra/Single/Solvers/Iterator.cs | 19 ++--- .../StopCriterium/DivergenceStopCriterium.cs | 4 +- .../StopCriterium/FailureStopCriterium.cs | 6 +- .../IterationCountStopCriterium.cs | 6 +- .../StopCriterium/ResidualStopCriterium.cs | 12 +-- .../StopCriterium/IIterationStopCriterium.cs | 22 ++--- .../Solvers/StopCriterium/StopLevel.cs | 6 +- src/Numerics/Numerics.csproj | 9 +-- .../Complex/Solvers/Iterative/BiCgStabTest.cs | 13 +-- .../Complex/Solvers/Iterative/GpBiCgTest.cs | 15 ++-- .../Solvers/Iterative/MlkBiCgStabTest.cs | 15 ++-- .../Complex/Solvers/Iterative/TFQMRTest.cs | 15 ++-- .../Complex/Solvers/IteratorTest.cs | 37 +++++---- .../Solvers/Iterative/BiCgStabTest.cs | 13 +-- .../Complex32/Solvers/Iterative/GpBiCgTest.cs | 13 +-- .../Solvers/Iterative/MlkBiCgStabTest.cs | 13 +-- .../Complex32/Solvers/Iterative/TFQMRTest.cs | 13 +-- .../Complex32/Solvers/IteratorTest.cs | 37 +++++---- .../Double/Solvers/Iterative/BiCgStabTest.cs | 11 +-- .../Double/Solvers/Iterative/GpBiCgTest.cs | 11 +-- .../Solvers/Iterative/MlkBiCgStabTest.cs | 11 +-- .../Double/Solvers/Iterative/TFQMRTest.cs | 11 +-- .../Double/Solvers/IteratorTest.cs | 31 +++---- .../Single/Solvers/Iterative/BiCgStabTest.cs | 11 +-- .../Single/Solvers/Iterative/GpBiCgTest.cs | 11 +-- .../Solvers/Iterative/MlkBiCgStabTest.cs | 11 +-- .../Single/Solvers/Iterative/TFQMRTest.cs | 11 +-- .../Single/Solvers/IteratorTest.cs | 31 +++---- 56 files changed, 330 insertions(+), 511 deletions(-) delete mode 100644 src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs delete mode 100644 src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs delete mode 100644 src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs rename src/Numerics/LinearAlgebra/{ => Factorization}/ISolver.cs (98%) rename src/Numerics/LinearAlgebra/{Single => }/Solvers/StopCriterium/IIterationStopCriterium.cs (82%) diff --git a/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs b/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs index 799f5e7f..d5fc08bb 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs @@ -30,6 +30,7 @@ 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.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples { @@ -101,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 3ed08287..aeac9b55 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs @@ -31,6 +31,7 @@ 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.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples { @@ -100,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 d4d0b49d..176900b0 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs @@ -30,6 +30,7 @@ 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.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples { @@ -99,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 3b20aafb..3fab9166 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs @@ -30,6 +30,7 @@ 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.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples { @@ -100,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 1b9f908d..a2166027 100644 --- a/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs +++ b/src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs @@ -30,6 +30,7 @@ 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.StopCriterium; namespace Examples.LinearAlgebra.IterativeSolversExamples { @@ -100,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/IIterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs index 85c64a8c..8487d3a4 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs @@ -28,9 +28,9 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using System; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers { @@ -47,26 +47,26 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers public interface IIterator { /// - /// Adds an to the internal collection of stop-criteria. Only a + /// 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. - void Add(IIterationStopCriterium stopCriterium); + void Add(IIterationStopCriterium stopCriterium); /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - void Remove(IIterationStopCriterium stopCriterium); + void Remove(IIterationStopCriterium stopCriterium); /// /// Indicates if the specific stop criterium is stored by the . /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - bool Contains(IIterationStopCriterium stopCriterium); + bool Contains(IIterationStopCriterium stopCriterium); /// /// Indicates to the iterator that the iterative process has been cancelled. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs index a84d46b2..f60cdb6c 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs @@ -30,6 +30,7 @@ using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; using System; using System.Collections.Generic; @@ -55,7 +56,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); /// - /// Creates a default iterator with all the objects. + /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() @@ -73,7 +74,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// 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(); + private readonly Dictionary> _stopCriterias = new Dictionary>(); /// /// The status of the iterator. @@ -100,7 +101,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// 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) + public Iterator(IEnumerable> stopCriteria) { // Add the stop criteria if (stopCriteria == null) @@ -124,7 +125,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Thrown if is of the same type as an already /// stored criterium. /// - public void Add(IIterationStopCriterium stopCriterium) + public void Add(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -144,7 +145,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) + public void Remove(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -165,7 +166,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) + public bool Contains(IIterationStopCriterium stopCriterium) { return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); } @@ -186,7 +187,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Gets an IEnumerator that enumerates over all the stored stop criteria. /// /// Used for testing only. - internal IEnumerable StoredStopCriteria + internal IEnumerable> StoredStopCriteria { get { diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs index 56a58e7e..e7e6a7a5 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -45,7 +45,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// Monitors an iterative calculation for signs of divergence. /// - public sealed class DivergenceStopCriterium : IIterationStopCriterium + public sealed class DivergenceStopCriterium : IIterationStopCriterium { /// /// Default value for the maximum relative increase that the @@ -380,7 +380,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs index 1aa6e50b..69556882 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs @@ -46,7 +46,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// Defines an that monitors residuals for NaN's. /// - public sealed class FailureStopCriterium : IIterationStopCriterium + public sealed class FailureStopCriterium : IIterationStopCriterium { /// /// Defines the default last iteration number. Set to -1 because iterations normally @@ -188,7 +188,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new FailureStopCriterium(); } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs deleted file mode 100644 index 1d6c41c0..00000000 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IIterationStopCriterium.cs +++ /dev/null @@ -1,81 +0,0 @@ -// -// 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 MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium -{ - -#if NOSYSNUMERICS - using Complex = Numerics.Complex; -#else - using Complex = System.Numerics.Complex; -#endif - - /// - /// The base interface for classes that provide stop criteria for iterative calculations. - /// - public interface IIterationStopCriterium - { - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Status is set to Status field of current object. - /// - /// 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 stop criteria 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. - /// - void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector); - - /// - /// Gets the current calculation status. - /// - /// is not a legal value. Status should be set in implementation. - ICalculationStatus Status { get; } - - /// - /// Resets the to the pre-calculation state. - /// - /// To implementers: Invoking this method should not clear the user defined - /// property values, only the state that is used to track the progress of the - /// calculation. - void ResetToPrecalculationState(); - - /// - /// Gets the which indicates what sort of stop criterium this - /// monitors. - /// - StopLevel StopLevel { get; } - - IIterationStopCriterium Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs index 0c241524..96db9d8f 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs @@ -46,7 +46,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// Defines an that monitors the numbers of iteration /// steps as stop criterium. /// - public sealed class IterationCountStopCriterium : IIterationStopCriterium + public sealed class IterationCountStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum number of iterations the process is allowed @@ -214,7 +214,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new IterationCountStopCriterium(_maximumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs index 84e3ee13..a7371d87 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -46,7 +46,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// Defines an that monitors residuals as stop criterium. /// - public sealed class ResidualStopCriterium : IIterationStopCriterium + public sealed class ResidualStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum value of the residual. @@ -396,7 +396,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum); } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs index 605f1630..04e937ac 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs @@ -28,9 +28,9 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using System; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers { @@ -42,26 +42,26 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers public interface IIterator { /// - /// Adds an to the internal collection of stop-criteria. Only a + /// 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. - void Add(IIterationStopCriterium stopCriterium); + void Add(IIterationStopCriterium stopCriterium); /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - void Remove(IIterationStopCriterium stopCriterium); + void Remove(IIterationStopCriterium stopCriterium); /// /// Indicates if the specific stop criterium is stored by the . /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - bool Contains(IIterationStopCriterium stopCriterium); + bool Contains(IIterationStopCriterium stopCriterium); /// /// Indicates to the iterator that the iterative process has been cancelled. diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs index 9eac256f..22cc5e6c 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs @@ -28,12 +28,13 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.Properties; using System; using System.Collections.Generic; using System.Linq; +using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; +using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers { @@ -68,7 +69,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// 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(); + private readonly Dictionary> _stopCriterias = new Dictionary>(); /// /// The status of the iterator. @@ -95,7 +96,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// 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) + public Iterator(IEnumerable> stopCriteria) { // Add the stop criteria if (stopCriteria == null) @@ -119,7 +120,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Thrown if is of the same type as an already /// stored criterium. /// - public void Add(IIterationStopCriterium stopCriterium) + public void Add(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -139,7 +140,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) + public void Remove(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -160,7 +161,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) + public bool Contains(IIterationStopCriterium stopCriterium) { return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); } @@ -181,7 +182,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Gets an IEnumerator that enumerates over all the stored stop criteria. /// /// Used for testing only. - internal IEnumerable StoredStopCriteria + internal IEnumerable> StoredStopCriteria { get { diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs index f9a3c5e3..2436bb2f 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -40,7 +40,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// Monitors an iterative calculation for signs of divergence. /// - public sealed class DivergenceStopCriterium : IIterationStopCriterium + public sealed class DivergenceStopCriterium : IIterationStopCriterium { /// /// Default value for the maximum relative increase that the @@ -375,7 +375,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs index 5a5c909e..c2a07a72 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs @@ -41,7 +41,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// Defines an that monitors residuals for NaN's. /// - public sealed class FailureStopCriterium : IIterationStopCriterium + public sealed class FailureStopCriterium : IIterationStopCriterium { /// /// Defines the default last iteration number. Set to -1 because iterations normally @@ -167,7 +167,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// Gets the which indicates what sort of stop criterium this - /// monitors. + /// monitors. /// /// Returns . public StopLevel StopLevel @@ -183,7 +183,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new FailureStopCriterium(); } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs deleted file mode 100644 index 1bc6ed87..00000000 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IIterationStopCriterium.cs +++ /dev/null @@ -1,76 +0,0 @@ -// -// 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 MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium -{ - using Numerics; - - /// - /// The base interface for classes that provide stop criteria for iterative calculations. - /// - public interface IIterationStopCriterium - { - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Status is set to Status field of current object. - /// - /// 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 stop criteria 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. - /// - void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector); - - /// - /// Gets the current calculation status. - /// - /// is not a legal value. Status should be set in implementation. - ICalculationStatus Status { get; } - - /// - /// Resets the to the pre-calculation state. - /// - /// To implementers: Invoking this method should not clear the user defined - /// property values, only the state that is used to track the progress of the - /// calculation. - void ResetToPrecalculationState(); - - /// - /// Gets the which indicates what sort of stop criterium this - /// monitors. - /// - StopLevel StopLevel { get; } - - IIterationStopCriterium Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs index 630439c5..b95cb5fd 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs @@ -28,20 +28,20 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using System; using System.Diagnostics; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium { using Numerics; /// - /// Defines an that monitors the numbers of iteration + /// Defines an that monitors the numbers of iteration /// steps as stop criterium. /// - public sealed class IterationCountStopCriterium : IIterationStopCriterium + public sealed class IterationCountStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum number of iterations the process is allowed @@ -209,7 +209,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new IterationCountStopCriterium(_maximumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs index 812da360..5e2ce616 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -28,20 +28,20 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; +using System.Diagnostics; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; -using System; -using System.Diagnostics; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium { using Numerics; /// - /// Defines an that monitors residuals as stop criterium. + /// Defines an that monitors residuals as stop criterium. /// - public sealed class ResidualStopCriterium : IIterationStopCriterium + public sealed class ResidualStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum value of the residual. @@ -391,7 +391,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum); } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs index b5d29fd8..b810c4e7 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs @@ -28,7 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using System; @@ -40,26 +40,26 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers public interface IIterator { /// - /// Adds an to the internal collection of stop-criteria. Only a + /// 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. - void Add(IIterationStopCriterium stopCriterium); + void Add(IIterationStopCriterium stopCriterium); /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - void Remove(IIterationStopCriterium stopCriterium); + void Remove(IIterationStopCriterium stopCriterium); /// /// Indicates if the specific stop criterium is stored by the . /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - bool Contains(IIterationStopCriterium stopCriterium); + bool Contains(IIterationStopCriterium stopCriterium); /// /// Indicates to the iterator that the iterative process has been cancelled. diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs index f3e7f3af..c5cb809d 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs @@ -30,6 +30,7 @@ using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; using System; using System.Collections.Generic; @@ -48,7 +49,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); /// - /// Creates a default iterator with all the objects. + /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() @@ -66,7 +67,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// 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(); + private readonly Dictionary> _stopCriterias = new Dictionary>(); /// /// The status of the iterator. @@ -93,7 +94,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// 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) + public Iterator(IEnumerable> stopCriteria) { // Add the stop criteria if (stopCriteria == null) @@ -117,7 +118,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// Thrown if is of the same type as an already /// stored criterium. /// - public void Add(IIterationStopCriterium stopCriterium) + public void Add(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -134,10 +135,10 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers } /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) + public void Remove(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -158,7 +159,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) + public bool Contains(IIterationStopCriterium stopCriterium) { return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); } @@ -179,7 +180,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// Gets an IEnumerator that enumerates over all the stored stop criteria. /// /// Used for testing only. - internal IEnumerable StoredStopCriteria + internal IEnumerable> StoredStopCriteria { get { diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs index 9cc562c2..1b618d17 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -38,7 +38,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// /// Monitors an iterative calculation for signs of divergence. /// - public sealed class DivergenceStopCriterium : IIterationStopCriterium + public sealed class DivergenceStopCriterium : IIterationStopCriterium { /// /// Default value for the maximum relative increase that the @@ -373,7 +373,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs index d4353a75..ecef2793 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs @@ -39,7 +39,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// /// Defines an that monitors residuals for NaN's. /// - public sealed class FailureStopCriterium : IIterationStopCriterium + public sealed class FailureStopCriterium : IIterationStopCriterium { /// /// Defines the default last iteration number. Set to -1 because iterations normally @@ -181,7 +181,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new FailureStopCriterium(); } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs deleted file mode 100644 index 23f87ece..00000000 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IIterationStopCriterium.cs +++ /dev/null @@ -1,74 +0,0 @@ -// -// 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 MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium -{ - /// - /// The base interface for classes that provide stop criteria for iterative calculations. - /// - public interface IIterationStopCriterium - { - /// - /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Status is set to Status field of current object. - /// - /// 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 stop criteria 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. - /// - void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector); - - /// - /// Gets the current calculation status. - /// - /// is not a legal value. Status should be set in implementation. - ICalculationStatus Status { get; } - - /// - /// Resets the to the pre-calculation state. - /// - /// To implementers: Invoking this method should not clear the user defined - /// property values, only the state that is used to track the progress of the - /// calculation. - void ResetToPrecalculationState(); - - /// - /// Gets the which indicates what sort of stop criterium this - /// monitors. - /// - StopLevel StopLevel { get; } - - IIterationStopCriterium Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs index dfee9ebb..c406ef93 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs @@ -28,18 +28,18 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using System; using System.Diagnostics; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium { /// - /// Defines an that monitors the numbers of iteration + /// Defines an that monitors the numbers of iteration /// steps as stop criterium. /// - public sealed class IterationCountStopCriterium : IIterationStopCriterium + public sealed class IterationCountStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum number of iterations the process is allowed @@ -207,7 +207,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new IterationCountStopCriterium(_maximumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs index 17ea01e9..e06e845c 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -37,9 +37,9 @@ using System.Diagnostics; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium { /// - /// Defines an that monitors residuals as stop criterium. + /// Defines an that monitors residuals as stop criterium. /// - public sealed class ResidualStopCriterium : IIterationStopCriterium + public sealed class ResidualStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum value of the residual. @@ -389,7 +389,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum); } diff --git a/src/Numerics/LinearAlgebra/ISolver.cs b/src/Numerics/LinearAlgebra/Factorization/ISolver.cs similarity index 98% rename from src/Numerics/LinearAlgebra/ISolver.cs rename to src/Numerics/LinearAlgebra/Factorization/ISolver.cs index 0e351629..a0a9df3e 100644 --- a/src/Numerics/LinearAlgebra/ISolver.cs +++ b/src/Numerics/LinearAlgebra/Factorization/ISolver.cs @@ -30,7 +30,7 @@ using System; -namespace MathNet.Numerics.LinearAlgebra +namespace MathNet.Numerics.LinearAlgebra.Factorization { /// /// Classes that solves a system of linear equations, AX = B. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs index dad55a83..63771847 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs @@ -28,9 +28,9 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; using System; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers { @@ -40,26 +40,26 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers public interface IIterator { /// - /// Adds an to the internal collection of stop-criteria. Only a + /// 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. - void Add(IIterationStopCriterium stopCriterium); + void Add(IIterationStopCriterium stopCriterium); /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - void Remove(IIterationStopCriterium stopCriterium); + void Remove(IIterationStopCriterium stopCriterium); /// /// Indicates if the specific stop criterium is stored by the . /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - bool Contains(IIterationStopCriterium stopCriterium); + bool Contains(IIterationStopCriterium stopCriterium); /// /// Indicates to the iterator that the iterative process has been cancelled. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs index 81918ba5..9c573c91 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs @@ -30,6 +30,7 @@ using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; using System; using System.Collections.Generic; @@ -48,7 +49,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined(); /// - /// Creates a default iterator with all the objects. + /// Creates a default iterator with all the objects. /// /// A new object. public static IIterator CreateDefault() @@ -66,7 +67,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// 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(); + private readonly Dictionary> _stopCriterias = new Dictionary>(); /// /// The status of the iterator. @@ -93,7 +94,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// 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) + public Iterator(IEnumerable> stopCriteria) { // Add the stop criteria if (stopCriteria == null) @@ -108,7 +109,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers } /// - /// Adds an to the internal collection of stop-criteria. Only a + /// 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. @@ -117,7 +118,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Thrown if is of the same type as an already /// stored criterium. /// - public void Add(IIterationStopCriterium stopCriterium) + public void Add(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -134,10 +135,10 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers } /// - /// Removes the from the internal collection. + /// Removes the from the internal collection. /// /// The stop criterium that must be removed. - public void Remove(IIterationStopCriterium stopCriterium) + public void Remove(IIterationStopCriterium stopCriterium) { if (stopCriterium == null) { @@ -158,7 +159,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// /// The stop criterium. /// true if the contains the stop criterium; otherwise false. - public bool Contains(IIterationStopCriterium stopCriterium) + public bool Contains(IIterationStopCriterium stopCriterium) { return stopCriterium != null && _stopCriterias.ContainsKey(stopCriterium.GetType()); } @@ -179,7 +180,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Gets an IEnumerator that enumerates over all the stored stop criteria. /// /// Used for testing only. - internal IEnumerable StoredStopCriteria + internal IEnumerable> StoredStopCriteria { get { diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs index 9ac0be1f..30ec8432 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -38,7 +38,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// Monitors an iterative calculation for signs of divergence. /// - public sealed class DivergenceStopCriterium : IIterationStopCriterium + public sealed class DivergenceStopCriterium : IIterationStopCriterium { /// /// Default value for the maximum relative increase that the @@ -373,7 +373,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs index 41ec51ca..28f65a2f 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs @@ -37,9 +37,9 @@ using System.Diagnostics; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { /// - /// Defines an that monitors residuals for NaN's. + /// Defines an that monitors residuals for NaN's. /// - public sealed class FailureStopCriterium : IIterationStopCriterium + public sealed class FailureStopCriterium : IIterationStopCriterium { /// /// Defines the default last iteration number. Set to -1 because iterations normally @@ -181,7 +181,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new FailureStopCriterium(); } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs index c83805c2..1d392372 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs @@ -36,10 +36,10 @@ using System.Diagnostics; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { /// - /// Defines an that monitors the numbers of iteration + /// Defines an that monitors the numbers of iteration /// steps as stop criterium. /// - public sealed class IterationCountStopCriterium : IIterationStopCriterium + public sealed class IterationCountStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum number of iterations the process is allowed @@ -207,7 +207,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new IterationCountStopCriterium(_maximumNumberOfIterations); } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs index 1d2fa386..0f8303ae 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -37,9 +37,9 @@ using System.Diagnostics; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium { /// - /// Defines an that monitors residuals as stop criterium. + /// Defines an that monitors residuals as stop criterium. /// - public sealed class ResidualStopCriterium : IIterationStopCriterium + public sealed class ResidualStopCriterium : IIterationStopCriterium { /// /// The default value for the maximum value of the residual. @@ -211,7 +211,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Result is set into Status field. + /// 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. @@ -362,7 +362,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium } /// - /// Resets the to the pre-calculation state. + /// Resets the to the pre-calculation state. /// public void ResetToPrecalculationState() { @@ -373,7 +373,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// Gets the which indicates what sort of stop criterium this - /// monitors. + /// monitors. /// /// Returns . public StopLevel StopLevel @@ -389,7 +389,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Clones the current and its settings. /// /// A new instance of the class. - public IIterationStopCriterium Clone() + public IIterationStopCriterium Clone() { return new ResidualStopCriterium(_maximum, _minimumIterationsBelowMaximum); } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs b/src/Numerics/LinearAlgebra/Solvers/StopCriterium/IIterationStopCriterium.cs similarity index 82% rename from src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs rename to src/Numerics/LinearAlgebra/Solvers/StopCriterium/IIterationStopCriterium.cs index 5e0b32ea..b808e9b0 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IIterationStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Solvers/StopCriterium/IIterationStopCriterium.cs @@ -3,7 +3,9 @@ // http://numerics.mathdotnet.com // http://github.com/mathnet/mathnet-numerics // http://mathnetnumerics.codeplex.com -// Copyright (c) 2009-2010 Math.NET +// +// Copyright (c) 2009-2013 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 @@ -12,8 +14,10 @@ // 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 @@ -24,19 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; -namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium +namespace MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium { /// /// The base interface for classes that provide stop criteria for iterative calculations. /// - public interface IIterationStopCriterium + public interface IIterationStopCriterium where T : struct, IEquatable, IFormattable { /// /// Determines the status of the iterative calculation based on the stop criteria stored - /// by the current . Status is set to Status field of current object. + /// by the current IIterationStopCriterium. Status is set to Status field of current object. /// /// The number of iterations that have passed so far. /// The vector containing the current solution values. @@ -47,7 +51,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// on the invocation of this method. Therefore this method should only be called if the /// calculation has moved forwards at least one step. /// - void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector); + void DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector); /// /// Gets the current calculation status. @@ -56,7 +60,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium ICalculationStatus Status { get; } /// - /// Resets the to the pre-calculation state. + /// Resets the IIterationStopCriterium to the pre-calculation state. /// /// To implementers: Invoking this method should not clear the user defined /// property values, only the state that is used to track the progress of the @@ -65,10 +69,10 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// Gets the which indicates what sort of stop criterium this - /// monitors. + /// IIterationStopCriterium monitors. /// StopLevel StopLevel { get; } - IIterationStopCriterium Clone(); + IIterationStopCriterium Clone(); } } diff --git a/src/Numerics/LinearAlgebra/Solvers/StopCriterium/StopLevel.cs b/src/Numerics/LinearAlgebra/Solvers/StopCriterium/StopLevel.cs index bcf7b3a1..2bfb3cf0 100644 --- a/src/Numerics/LinearAlgebra/Solvers/StopCriterium/StopLevel.cs +++ b/src/Numerics/LinearAlgebra/Solvers/StopCriterium/StopLevel.cs @@ -3,7 +3,9 @@ // http://numerics.mathdotnet.com // http://github.com/mathnet/mathnet-numerics // http://mathnetnumerics.codeplex.com -// Copyright (c) 2009-2010 Math.NET +// +// Copyright (c) 2009-2013 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 @@ -12,8 +14,10 @@ // 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 diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 4a1d98b7..accb0d35 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -122,6 +122,7 @@ + @@ -193,7 +194,6 @@ - @@ -213,7 +213,6 @@ - @@ -230,7 +229,7 @@ - + @@ -336,7 +335,6 @@ - @@ -354,7 +352,7 @@ - + @@ -378,7 +376,6 @@ - diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs index b0cc60f8..9e25f69d 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative { @@ -95,7 +96,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), @@ -140,7 +141,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), @@ -218,7 +219,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), @@ -259,7 +260,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), @@ -291,7 +292,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 6adf19fd..7d110611 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative { + using System.Numerics; + /// /// Tests for Generalized Product Bi-Conjugate Gradient iterative matrix solver. /// @@ -93,7 +96,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), @@ -138,7 +141,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), @@ -217,7 +220,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), @@ -259,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), @@ -291,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/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs index b7ff47a8..2b13ce99 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative { + using System.Numerics; + /// /// Tests for Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. /// @@ -93,7 +96,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), @@ -139,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), @@ -217,7 +220,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), @@ -258,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), @@ -290,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/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs index 77b80fab..f714d85d 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative { + using System.Numerics; + /// /// Tests of Transpose Free Quasi-Minimal Residual iterative matrix solver. /// @@ -93,7 +96,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), @@ -139,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), @@ -217,7 +220,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), @@ -258,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), @@ -290,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/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs index 54dfb425..9a12d81c 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; +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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; -using System.Collections.Generic; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers { + using System.Numerics; + /// /// Iterator tests /// @@ -61,7 +64,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"); } @@ -72,7 +75,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"); } @@ -83,7 +86,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() @@ -96,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void CreateWithCollection() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -143,7 +146,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void Add() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -173,7 +176,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void RemoveWithNullStopCriteriumThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -192,7 +195,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void RemoveWithNonExistingStopCriterium() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -211,7 +214,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void Remove() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -248,7 +251,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -270,7 +273,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -292,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -314,7 +317,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -336,7 +339,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void DetermineStatus() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -368,7 +371,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void ResetToPrecalculationState() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -398,7 +401,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers [Test] public void Clone() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs index c5ae14a2..c1fe25be 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // +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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterative { @@ -95,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), @@ -140,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), @@ -218,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), @@ -263,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)), @@ -306,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 30f8fcf7..acf227e3 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterative { + using Numerics; + /// /// Tests for Generalized Product Bi-Conjugate Gradient iterative matrix solver. /// @@ -93,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), @@ -138,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), @@ -217,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), @@ -259,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 187b201a..c71d1c96 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs @@ -33,11 +33,14 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterative { + using Numerics; + /// /// Tests for Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. /// @@ -93,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), @@ -139,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), @@ -217,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), @@ -258,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)), @@ -301,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 9f60bd16..f0845d74 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs @@ -33,11 +33,14 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterative { + using Numerics; + /// /// Tests of Transpose Free Quasi-Minimal Residual iterative matrix solver. /// @@ -93,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), @@ -139,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), @@ -217,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), @@ -258,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)), @@ -301,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 838c8919..a2aeeaa7 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs @@ -28,16 +28,19 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; +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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; -using System; -using System.Collections.Generic; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers { + using Numerics; + /// /// Iterator tests /// @@ -61,7 +64,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"); } @@ -72,7 +75,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"); } @@ -83,7 +86,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() @@ -96,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void CreateWithCollection() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -143,7 +146,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void Add() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -173,7 +176,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void RemoveWithNullStopCriteriumThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -192,7 +195,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void RemoveWithNonExistingStopCriterium() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -211,7 +214,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void Remove() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -248,7 +251,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -270,7 +273,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -292,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -314,7 +317,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -336,7 +339,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void DetermineStatus() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -368,7 +371,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void ResetToPrecalculationState() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -398,7 +401,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers [Test] public void Clone() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs index 22d2a121..cb27a596 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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), @@ -138,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), @@ -216,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), @@ -261,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), @@ -292,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 4a5f70a7..9e5cbb89 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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), @@ -138,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 +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 +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), @@ -294,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 39136503..cda37ee9 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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 +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), @@ -217,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), @@ -262,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), @@ -293,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 7068afad..de9328e3 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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 +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), @@ -217,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), @@ -258,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), @@ -289,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 bad123f8..2c88a23d 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs @@ -32,6 +32,7 @@ using MathNet.Numerics.LinearAlgebra.Double; using MathNet.Numerics.LinearAlgebra.Double.Solvers; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; using System.Collections.Generic; @@ -61,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"); } @@ -72,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"); } @@ -83,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() @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void CreateWithCollection() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -143,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void Add() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -173,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void RemoveWithNullStopCriteriumThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -192,7 +193,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void RemoveWithNonExistingStopCriterium() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -211,7 +212,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void Remove() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -248,7 +249,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -270,7 +271,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -292,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -314,7 +315,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -336,7 +337,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void DetermineStatus() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -368,7 +369,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void ResetToPrecalculationState() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -398,7 +399,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers [Test] public void Clone() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs index a3a62570..05c71a22 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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), @@ -138,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), @@ -216,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), @@ -259,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)), @@ -300,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 c4c190f9..d6ade093 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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), @@ -138,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 +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 +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)), @@ -302,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 350368a5..39e5225e 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs @@ -34,6 +34,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -94,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), @@ -140,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), @@ -222,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), @@ -278,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)), @@ -321,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 90629e88..7a20d262 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs @@ -33,6 +33,7 @@ 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.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; @@ -93,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 +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), @@ -217,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), @@ -260,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)), @@ -301,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 0408fff7..c7d21eb3 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs @@ -32,6 +32,7 @@ using MathNet.Numerics.LinearAlgebra.Single; using MathNet.Numerics.LinearAlgebra.Single.Solvers; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using NUnit.Framework; using System; using System.Collections.Generic; @@ -61,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"); } @@ -72,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"); } @@ -83,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() @@ -96,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void CreateWithCollection() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -143,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void Add() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -173,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void RemoveWithNullStopCriteriumThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -192,7 +193,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void RemoveWithNonExistingStopCriterium() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -211,7 +212,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void Remove() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -248,7 +249,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -270,7 +271,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -292,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -314,7 +315,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -336,7 +337,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void DetermineStatus() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -368,7 +369,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void ResetToPrecalculationState() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(), @@ -398,7 +399,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers [Test] public void Clone() { - var criteria = new List + var criteria = new List> { new FailureStopCriterium(), new DivergenceStopCriterium(),