diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterativeSolver.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterativeSolver.cs index 0aac6a61..cbe09f7e 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterativeSolver.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterativeSolver.cs @@ -28,6 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers @@ -57,7 +58,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Sets the that will be used to track the iterative process. /// /// The iterator. - void SetIterator(IIterator iterator); + void SetIterator(IIterator iterator); /// /// Gets the status of the iteration once the calculation is finished. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs deleted file mode 100644 index 8487d3a4..00000000 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/IIterator.cs +++ /dev/null @@ -1,110 +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 System; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers -{ - -#if NOSYSNUMERICS - using Complex = Numerics.Complex; -#else - using Complex = System.Numerics.Complex; -#endif - - /// - /// Defines the base interface for iterators that help control an iterative calculation. - /// - public interface IIterator - { - /// - /// 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); - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - 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); - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// Does not reset the stop-criteria. - void IterationCancelled(); - - /// - /// 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 iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - 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. - /// - /// - /// Note 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(); - - IIterator Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs index 6d85b9b2..89c0c9e7 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs @@ -28,9 +28,10 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using System; using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative @@ -89,7 +90,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -127,7 +128,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public BiCgStab(IIterator iterator) + public BiCgStab(IIterator iterator) : this(null, iterator) { } @@ -162,7 +163,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public BiCgStab(IPreConditioner preconditioner, IIterator iterator) + public BiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -181,7 +182,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs index 77208b91..1aed113d 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using MathNet.Numerics.LinearAlgebra.Solvers; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative { @@ -349,7 +350,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The iterator that is used to control the iteration process. /// - private IIterator _iterator; + private IIterator _iterator; /// /// A flag indicating if the solver has been stopped or not. @@ -373,7 +374,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Initializes a new instance of the class with the specified iterator. /// /// The iterator that will be used to control the iteration process. - public CompositeSolver(IIterator iterator) + public CompositeSolver(IIterator iterator) { _iterator = iterator; } @@ -382,7 +383,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Sets the IIterator that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs index 88de1d88..d3be8fe1 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative { @@ -87,7 +88,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates the number of BiCGStab steps should be taken @@ -137,7 +138,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public GpBiCg(IIterator iterator) + public GpBiCg(IIterator iterator) : this(null, iterator) { } @@ -172,7 +173,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public GpBiCg(IPreConditioner preconditioner, IIterator iterator) + public GpBiCg(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -229,7 +230,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs index bb8138bd..0da5d2b1 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs @@ -34,6 +34,7 @@ using System.Diagnostics; using System.Linq; using MathNet.Numerics.Distributions; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; @@ -92,7 +93,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// The collection of starting vectors which are used as the basis for the Krylov sub-space. @@ -140,7 +141,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IIterator iterator) + public MlkBiCgStab(IIterator iterator) : this(null, iterator) { } @@ -175,7 +176,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) + public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -226,7 +227,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs index 9451e49f..6d83d4d2 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative { @@ -77,7 +78,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -115,7 +116,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public TFQMR(IIterator iterator) + public TFQMR(IIterator iterator) : this(null, iterator) { } @@ -150,7 +151,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public TFQMR(IPreConditioner preconditioner, IIterator iterator) + public TFQMR(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -169,7 +170,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs index d0f5e9c9..9d0964b7 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Linq; using MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; @@ -48,7 +49,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public sealed class Iterator : IIterator { /// /// The default status for the iterator. @@ -59,7 +60,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Creates a default iterator with all the objects. /// /// A new object. - public static IIterator CreateDefault() + public static IIterator CreateDefault() { var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); @@ -313,7 +314,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers /// Creates a deep clone of the current iterator. /// /// The deep clone of the current iterator. - public IIterator Clone() + public IIterator Clone() { var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); return new Iterator(stopCriteria); diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterativeSolver.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterativeSolver.cs index ea4ca6de..53431dd0 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterativeSolver.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterativeSolver.cs @@ -28,6 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers @@ -52,7 +53,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Sets the that will be used to track the iterative process. /// /// The iterator. - void SetIterator(IIterator iterator); + void SetIterator(IIterator iterator); /// /// Gets the status of the iteration once the calculation is finished. diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs deleted file mode 100644 index 04e937ac..00000000 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/IIterator.cs +++ /dev/null @@ -1,105 +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 System; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers -{ - using Numerics; - - /// - /// Defines the base interface for iterators that help control an iterative calculation. - /// - public interface IIterator - { - /// - /// 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); - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - 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); - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// Does not reset the stop-criteria. - void IterationCancelled(); - - /// - /// 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 iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - 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. - /// - /// - /// Note 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(); - - IIterator Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs index dbf8ecdd..a80d2eb0 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative { @@ -83,7 +84,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -121,7 +122,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public BiCgStab(IIterator iterator) + public BiCgStab(IIterator iterator) : this(null, iterator) { } @@ -156,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public BiCgStab(IPreConditioner preconditioner, IIterator iterator) + public BiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -175,7 +176,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs index 80c03a18..e131a836 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using MathNet.Numerics.LinearAlgebra.Solvers; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative { @@ -344,7 +345,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The iterator that is used to control the iteration process. /// - private IIterator _iterator; + private IIterator _iterator; /// /// A flag indicating if the solver has been stopped or not. @@ -368,7 +369,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Initializes a new instance of the class with the specified iterator. /// /// The iterator that will be used to control the iteration process. - public CompositeSolver(IIterator iterator) + public CompositeSolver(IIterator iterator) { _iterator = iterator; } @@ -377,7 +378,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Sets the IIterator that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs index 27db32fa..7799cb11 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative { @@ -81,7 +82,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates the number of BiCGStab steps should be taken @@ -131,7 +132,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public GpBiCg(IIterator iterator) + public GpBiCg(IIterator iterator) : this(null, iterator) { } @@ -166,7 +167,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public GpBiCg(IPreConditioner preconditioner, IIterator iterator) + public GpBiCg(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -223,7 +224,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs index 97eb95f5..1b6a631e 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs @@ -34,6 +34,7 @@ using System.Diagnostics; using System.Linq; using MathNet.Numerics.Distributions; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; @@ -86,7 +87,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// The collection of starting vectors which are used as the basis for the Krylov sub-space. @@ -134,7 +135,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IIterator iterator) + public MlkBiCgStab(IIterator iterator) : this(null, iterator) { } @@ -169,7 +170,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) + public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -220,7 +221,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs index 216bea34..402bf1cc 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative { @@ -71,7 +72,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -109,7 +110,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public TFQMR(IIterator iterator) + public TFQMR(IIterator iterator) : this(null, iterator) { } @@ -144,7 +145,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public TFQMR(IPreConditioner preconditioner, IIterator iterator) + public TFQMR(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -163,7 +164,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs index 13432126..8d0cd0c4 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Linq; using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; @@ -43,7 +44,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public sealed class Iterator : IIterator { /// /// The default status for the iterator. @@ -54,7 +55,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Creates a default iterator with all the objects. /// /// A new object. - public static IIterator CreateDefault() + public static IIterator CreateDefault() { var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); @@ -308,7 +309,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers /// Creates a deep clone of the current iterator. /// /// The deep clone of the current iterator. - public IIterator Clone() + public IIterator Clone() { var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); return new Iterator(stopCriteria); diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/IIterativeSolver.cs b/src/Numerics/LinearAlgebra/Double/Solvers/IIterativeSolver.cs index a717f56a..6f2c2fe3 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/IIterativeSolver.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/IIterativeSolver.cs @@ -28,6 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers @@ -50,7 +51,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// Sets the that will be used to track the iterative process. /// /// The iterator. - void SetIterator(IIterator iterator); + void SetIterator(IIterator iterator); /// /// Gets the status of the iteration once the calculation is finished. diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs index 3332750e..ed65645c 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative { @@ -81,7 +82,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -118,7 +119,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public BiCgStab(IIterator iterator) : this(null, iterator) + public BiCgStab(IIterator iterator) + : this(null, iterator) { } @@ -151,7 +153,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public BiCgStab(IPreConditioner preconditioner, IIterator iterator) + public BiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -170,7 +172,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs index 60e27db0..76b815bf 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using MathNet.Numerics.LinearAlgebra.Solvers; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative { @@ -339,7 +340,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The iterator that is used to control the iteration process. /// - private IIterator _iterator; + private IIterator _iterator; /// /// A flag indicating if the solver has been stopped or not. @@ -363,7 +364,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Initializes a new instance of the class with the specified iterator. /// /// The iterator that will be used to control the iteration process. - public CompositeSolver(IIterator iterator) + public CompositeSolver(IIterator iterator) { _iterator = iterator; } @@ -372,7 +373,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs index 6ade9c87..222724de 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative { @@ -79,7 +80,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// Indicates the number of BiCGStab steps should be taken @@ -128,7 +129,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public GpBiCg(IIterator iterator) : this(null, iterator) + public GpBiCg(IIterator iterator) + : this(null, iterator) { } @@ -161,7 +163,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public GpBiCg(IPreConditioner preconditioner, IIterator iterator) + public GpBiCg(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -224,7 +226,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs index 0e0a9771..8f2c89ad 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs @@ -34,6 +34,7 @@ using System.Diagnostics; using System.Linq; using MathNet.Numerics.Distributions; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; @@ -84,7 +85,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// The collection of starting vectors which are used as the basis for the Krylov sub-space. @@ -131,7 +132,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IIterator iterator) : this(null, iterator) + public MlkBiCgStab(IIterator iterator) + : this(null, iterator) { } @@ -164,7 +166,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) + public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -218,7 +220,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs index 77e1a85f..34cc2a58 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Double.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative { @@ -69,7 +70,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -106,7 +107,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public TFQMR(IIterator iterator) : this(null, iterator) + public TFQMR(IIterator iterator) + : this(null, iterator) { } @@ -139,7 +141,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public TFQMR(IPreConditioner preconditioner, IIterator iterator) + public TFQMR(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -158,7 +160,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs index bf5fbf15..02a5d47b 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Linq; using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; @@ -41,7 +42,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public sealed class Iterator : IIterator { /// /// The default status for the iterator. @@ -52,7 +53,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// Creates a default iterator with all the objects. /// /// A new object. - public static IIterator CreateDefault() + public static IIterator CreateDefault() { var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); @@ -306,7 +307,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// Creates a deep clone of the current iterator. /// /// The deep clone of the current iterator. - public IIterator Clone() + public IIterator Clone() { var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); return new Iterator(stopCriteria); diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/IIterativeSolver.cs b/src/Numerics/LinearAlgebra/Single/Solvers/IIterativeSolver.cs index d77e1a8a..efce1c3d 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/IIterativeSolver.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/IIterativeSolver.cs @@ -28,6 +28,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers @@ -50,7 +51,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Sets the that will be used to track the iterative process. /// /// The iterator. - void SetIterator(IIterator iterator); + void SetIterator(IIterator iterator); /// /// Gets the status of the iteration once the calculation is finished. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs deleted file mode 100644 index 63771847..00000000 --- a/src/Numerics/LinearAlgebra/Single/Solvers/IIterator.cs +++ /dev/null @@ -1,103 +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 System; -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; - -namespace MathNet.Numerics.LinearAlgebra.Single.Solvers -{ - /// - /// Defines the base interface for iterators that help control an iterative calculation. - /// - public interface IIterator - { - /// - /// 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); - - /// - /// Removes the from the internal collection. - /// - /// The stop criterium that must be removed. - 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); - - /// - /// Indicates to the iterator that the iterative process has been cancelled. - /// - /// Does not reset the stop-criteria. - void IterationCancelled(); - - /// - /// 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 iterators may internally track the progress of the calculation based - /// on the invocation of this method. Therefore this method should only be called if the - /// calculation has moved forwards at least one step. - /// - 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. - /// - /// - /// Note 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(); - - IIterator Clone(); - } -} diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs index 73626e54..3a2c996d 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative { @@ -81,7 +82,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -118,7 +119,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public BiCgStab(IIterator iterator) : this(null, iterator) + public BiCgStab(IIterator iterator) + : this(null, iterator) { } @@ -151,7 +153,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public BiCgStab(IPreConditioner preconditioner, IIterator iterator) + public BiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -170,7 +172,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs index 642b7559..8a6868b7 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs @@ -28,13 +28,14 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.Solvers.Status; -using MathNet.Numerics.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using MathNet.Numerics.LinearAlgebra.Solvers; +using MathNet.Numerics.LinearAlgebra.Solvers.Status; +using MathNet.Numerics.Properties; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative { @@ -342,7 +343,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The iterator that is used to control the iteration process. /// - private IIterator _iterator; + private IIterator _iterator; /// /// A flag indicating if the solver has been stopped or not. @@ -366,7 +367,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Initializes a new instance of the class with the specified iterator. /// /// The iterator that will be used to control the iteration process. - public CompositeSolver(IIterator iterator) + public CompositeSolver(IIterator iterator) { _iterator = iterator; } @@ -375,7 +376,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs index 374e7686..e3718bfe 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative { @@ -79,7 +80,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates the number of BiCGStab steps should be taken @@ -129,7 +130,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public GpBiCg(IIterator iterator) + public GpBiCg(IIterator iterator) : this(null, iterator) { } @@ -164,7 +165,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public GpBiCg(IPreConditioner preconditioner, IIterator iterator) + public GpBiCg(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -221,7 +222,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs index d6601a93..a7f6517e 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs @@ -33,6 +33,7 @@ using System.Collections.Generic; using System.Diagnostics; using MathNet.Numerics.Distributions; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; @@ -83,7 +84,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The iterative process controller. /// - private IIterator _iterator; + private IIterator _iterator; /// /// The collection of starting vectors which are used as the basis for the Krylov sub-space. @@ -130,7 +131,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IIterator iterator) : this(null, iterator) + public MlkBiCgStab(IIterator iterator) + : this(null, iterator) { } @@ -163,7 +165,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) + public MlkBiCgStab(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -217,7 +219,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs index 0ffe4c0a..5a3917fe 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs @@ -28,10 +28,11 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using System; using MathNet.Numerics.LinearAlgebra.Single.Solvers.Preconditioners; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.Properties; -using System; namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative { @@ -69,7 +70,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The iterative process controller. /// - IIterator _iterator; + IIterator _iterator; /// /// Indicates if the user has stopped the solver. @@ -107,7 +108,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// /// The that will be used to monitor the iterative process. - public TFQMR(IIterator iterator) + public TFQMR(IIterator iterator) : this(null, iterator) { } @@ -142,7 +143,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// /// The that will be used to precondition the matrix equation. /// The that will be used to monitor the iterative process. - public TFQMR(IPreConditioner preconditioner, IIterator iterator) + public TFQMR(IPreConditioner preconditioner, IIterator iterator) { _iterator = iterator; _preconditioner = preconditioner; @@ -161,7 +162,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative /// Sets the that will be used to track the iterative process. /// /// The iterator. - public void SetIterator(IIterator iterator) + public void SetIterator(IIterator iterator) { _iterator = iterator; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs index 97c2cda1..7c81ef83 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Linq; using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium; +using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.LinearAlgebra.Solvers.Status; using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium; using MathNet.Numerics.Properties; @@ -41,7 +42,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// /// An iterator that is used to check if an iterative calculation should continue or stop. /// - public sealed class Iterator : IIterator + public sealed class Iterator : IIterator { /// /// The default status for the iterator. @@ -52,7 +53,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Creates a default iterator with all the objects. /// /// A new object. - public static IIterator CreateDefault() + public static IIterator CreateDefault() { var iterator = new Iterator(); iterator.Add(new FailureStopCriterium()); @@ -306,7 +307,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers /// Creates a deep clone of the current iterator. /// /// The deep clone of the current iterator. - public IIterator Clone() + public IIterator Clone() { var stopCriteria = _stopCriterias.Select(pair => pair.Value).Select(stopCriterium => stopCriterium.Clone()).ToList(); return new Iterator(stopCriteria); diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs b/src/Numerics/LinearAlgebra/Solvers/IIterator.cs similarity index 83% rename from src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs rename to src/Numerics/LinearAlgebra/Solvers/IIterator.cs index b810c4e7..258c0415 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/IIterator.cs +++ b/src/Numerics/LinearAlgebra/Solvers/IIterator.cs @@ -4,7 +4,7 @@ // 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 @@ -28,16 +28,16 @@ // OTHER DEALINGS IN THE SOFTWARE. // -using MathNet.Numerics.LinearAlgebra.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.Double.Solvers +namespace MathNet.Numerics.LinearAlgebra.Solvers { /// /// Defines the base interface for iterators that help control an iterative calculation. /// - public interface IIterator + public interface IIterator where T : struct, IEquatable, IFormattable { /// /// Adds an to the internal collection of stop-criteria. Only a @@ -46,20 +46,20 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// 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. /// /// 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 . + /// 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); + /// true if the contains the stop criterium; otherwise false. + bool Contains(IIterationStopCriterium stopCriterium); /// /// Indicates to the iterator that the iterative process has been cancelled. @@ -69,7 +69,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// /// 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 . 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. @@ -80,7 +80,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// 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. @@ -89,7 +89,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers ICalculationStatus Status { get; } /// - /// Resets the to the pre-calculation state. + /// Resets the to the pre-calculation state. /// /// /// Note to implementers: Invoking this method should not clear the user defined @@ -98,6 +98,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers /// void ResetToPrecalculationState(); - IIterator Clone(); + IIterator Clone(); } } diff --git a/src/Numerics/Numerics.csproj b/src/Numerics/Numerics.csproj index 1b926c4f..5750b17e 100644 --- a/src/Numerics/Numerics.csproj +++ b/src/Numerics/Numerics.csproj @@ -192,7 +192,6 @@ - @@ -211,7 +210,6 @@ - @@ -227,7 +225,7 @@ - + @@ -318,7 +316,6 @@ -