Browse Source

LA: make IterationCountStopCriterium generic & shared

pull/163/head
Christoph Ruegg 13 years ago
parent
commit
d1cbfb5487
  1. 2
      src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs
  2. 2
      src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs
  3. 2
      src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs
  4. 2
      src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs
  5. 2
      src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs
  6. 8
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs
  7. 222
      src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs
  8. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs
  9. 217
      src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs
  10. 8
      src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs
  11. 215
      src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs
  12. 8
      src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs
  13. 28
      src/Numerics/LinearAlgebra/Solvers/StopCriterium/IterationCountStopCriterium.cs
  14. 5
      src/Numerics/Numerics.csproj
  15. 10
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs
  16. 10
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs
  17. 10
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs
  18. 10
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs
  19. 24
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
  20. 26
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
  21. 10
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs
  22. 8
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs
  23. 12
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs
  24. 12
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs
  25. 24
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
  26. 26
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
  27. 12
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs
  28. 10
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs
  29. 12
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs
  30. 12
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs
  31. 28
      src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs
  32. 24
      src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
  33. 12
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs
  34. 12
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs
  35. 12
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs
  36. 12
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs
  37. 28
      src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs
  38. 24
      src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs

2
src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs

@ -96,7 +96,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
// - ResidualStopCriterium: monitors residuals if calculation is considered converged;
// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);
var iterationCountStopCriterium = new IterationCountStopCriterium<double>(1000);
// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

2
src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs

@ -95,7 +95,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
// - ResidualStopCriterium: monitors residuals if calculation is considered converged;
// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);
var iterationCountStopCriterium = new IterationCountStopCriterium<double>(1000);
// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

2
src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs

@ -94,7 +94,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
// - ResidualStopCriterium: monitors residuals if calculation is considered converged;
// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);
var iterationCountStopCriterium = new IterationCountStopCriterium<double>(1000);
// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

2
src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs

@ -95,7 +95,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
// - ResidualStopCriterium: monitors residuals if calculation is considered converged;
// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);
var iterationCountStopCriterium = new IterationCountStopCriterium<double>(1000);
// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

2
src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs

@ -95,7 +95,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
// - ResidualStopCriterium: monitors residuals if calculation is considered converged;
// Stop calculation if 1000 iterations reached during calculation
var iterationCountStopCriterium = new IterationCountStopCriterium(1000);
var iterationCountStopCriterium = new IterationCountStopCriterium<double>(1000);
// Stop calculation if residuals are below 1E-10 --> the calculation is considered converged
var residualStopCriterium = new ResidualStopCriterium(1e-10);

8
src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs

@ -28,13 +28,13 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using System.Collections.Generic;
using System.Linq;
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;
using System.Linq;
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
{
@ -64,7 +64,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
var iterator = new Iterator();
iterator.Add(new FailureStopCriterium());
iterator.Add(new DivergenceStopCriterium());
iterator.Add(new IterationCountStopCriterium());
iterator.Add(new IterationCountStopCriterium<Complex>());
iterator.Add(new ResidualStopCriterium());
return iterator;

222
src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -1,222 +0,0 @@
// <copyright file="IterationCountStopCriterium.cs" company="Math.NET">
// 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.
// </copyright>
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using System;
using System.Diagnostics;
namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium
{
#if NOSYSNUMERICS
using Complex = Numerics.Complex;
#else
using Complex = System.Numerics.Complex;
#endif
/// <summary>
/// Defines an <see cref="IIterationStopCriterium"/> that monitors the numbers of iteration
/// steps as stop criterium.
/// </summary>
public sealed class IterationCountStopCriterium : IIterationStopCriterium<Complex>
{
/// <summary>
/// The default value for the maximum number of iterations the process is allowed
/// to perform.
/// </summary>
public const int DefaultMaximumNumberOfIterations = 1000;
/// <summary>
/// The default status.
/// </summary>
private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
/// <summary>
/// The maximum number of iterations the calculation is allowed to perform.
/// </summary>
private int _maximumNumberOfIterations;
/// <summary>
/// The status of the calculation
/// </summary>
private ICalculationStatus _status = DefaultStatus;
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the default maximum
/// number of iterations.
/// </summary>
public IterationCountStopCriterium() : this(DefaultMaximumNumberOfIterations)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the specified maximum
/// number of iterations.
/// </summary>
/// <param name="maximumNumberOfIterations">The maximum number of iterations the calculation is allowed to perform.</param>
public IterationCountStopCriterium(int maximumNumberOfIterations)
{
if (maximumNumberOfIterations < 1)
{
throw new ArgumentOutOfRangeException("maximumNumberOfIterations");
}
_maximumNumberOfIterations = maximumNumberOfIterations;
}
/// <summary>
/// Gets or sets the maximum number of iterations the calculation is allowed to perform.
/// </summary>
/// <exception cref="ArgumentOutOfRangeException">Thrown if the <c>Maximum</c> is set to a negative value.</exception>
public int MaximumNumberOfIterations
{
[DebuggerStepThrough]
get
{
return _maximumNumberOfIterations;
}
[DebuggerStepThrough]
set
{
if (value < 1)
{
throw new ArgumentOutOfRangeException("value");
}
_maximumNumberOfIterations = value;
}
}
/// <summary>
/// Returns the maximum number of iterations to the default.
/// </summary>
public void ResetMaximumNumberOfIterationsToDefault()
{
_maximumNumberOfIterations = DefaultMaximumNumberOfIterations;
}
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
/// by the current <see cref="IterationCountStopCriterium"/>. Result is set into <c>Status</c> field.
/// </summary>
/// <param name="iterationNumber">The number of iterations that have passed so far.</param>
/// <param name="solutionVector">The vector containing the current solution values.</param>
/// <param name="sourceVector">The right hand side vector.</param>
/// <param name="residualVector">The vector containing the current residual vectors.</param>
/// <remarks>
/// 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.
/// </remarks>
public void DetermineStatus(int iterationNumber, Vector<Complex> solutionVector, Vector<Complex> sourceVector, Vector<Complex> residualVector)
{
if (iterationNumber < 0)
{
throw new ArgumentOutOfRangeException("iterationNumber");
}
if (iterationNumber >= _maximumNumberOfIterations)
{
SetStatusToFinished();
}
else
{
SetStatusToRunning();
}
}
/// <summary>
/// Set status to <see cref="CalculationFailure"/>
/// </summary>
private void SetStatusToFinished()
{
if (!(_status is CalculationStoppedWithoutConvergence))
{
_status = new CalculationStoppedWithoutConvergence();
}
}
/// <summary>
/// Set status to <see cref="CalculationRunning"/>
/// </summary>
private void SetStatusToRunning()
{
if (!(_status is CalculationRunning))
{
_status = new CalculationRunning();
}
}
/// <summary>
/// Gets the current calculation status.
/// </summary>
public ICalculationStatus Status
{
[DebuggerStepThrough]
get
{
return _status;
}
}
/// <summary>
/// Resets the <see cref="IterationCountStopCriterium"/> to the pre-calculation state.
/// </summary>
public void ResetToPrecalculationState()
{
_status = DefaultStatus;
}
/// <summary>
/// Gets the <see cref="StopLevel"/> which indicates what sort of stop criterium this
/// <see cref="IterationCountStopCriterium"/> monitors.
/// </summary>
/// <value>Returns <see cref="StopLevel"/>.</value>
public StopLevel StopLevel
{
[DebuggerStepThrough]
get
{
return StopLevel.StoppedWithoutConvergence;
}
}
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> class.</returns>
public IIterationStopCriterium<Complex> Clone()
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs

@ -59,7 +59,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
var iterator = new Iterator();
iterator.Add(new FailureStopCriterium());
iterator.Add(new DivergenceStopCriterium());
iterator.Add(new IterationCountStopCriterium());
iterator.Add(new IterationCountStopCriterium<Complex32>());
iterator.Add(new ResidualStopCriterium());
return iterator;

217
src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -1,217 +0,0 @@
// <copyright file="IterationCountStopCriterium.cs" company="Math.NET">
// 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.
// </copyright>
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;
/// <summary>
/// Defines an <see cref="IIterationStopCriterium{T}"/> that monitors the numbers of iteration
/// steps as stop criterium.
/// </summary>
public sealed class IterationCountStopCriterium : IIterationStopCriterium<Complex32>
{
/// <summary>
/// The default value for the maximum number of iterations the process is allowed
/// to perform.
/// </summary>
public const int DefaultMaximumNumberOfIterations = 1000;
/// <summary>
/// The default status.
/// </summary>
private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
/// <summary>
/// The maximum number of iterations the calculation is allowed to perform.
/// </summary>
private int _maximumNumberOfIterations;
/// <summary>
/// The status of the calculation
/// </summary>
private ICalculationStatus _status = DefaultStatus;
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the default maximum
/// number of iterations.
/// </summary>
public IterationCountStopCriterium() : this(DefaultMaximumNumberOfIterations)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the specified maximum
/// number of iterations.
/// </summary>
/// <param name="maximumNumberOfIterations">The maximum number of iterations the calculation is allowed to perform.</param>
public IterationCountStopCriterium(int maximumNumberOfIterations)
{
if (maximumNumberOfIterations < 1)
{
throw new ArgumentOutOfRangeException("maximumNumberOfIterations");
}
_maximumNumberOfIterations = maximumNumberOfIterations;
}
/// <summary>
/// Gets or sets the maximum number of iterations the calculation is allowed to perform.
/// </summary>
/// <exception cref="ArgumentOutOfRangeException">Thrown if the <c>Maximum</c> is set to a negative value.</exception>
public int MaximumNumberOfIterations
{
[DebuggerStepThrough]
get
{
return _maximumNumberOfIterations;
}
[DebuggerStepThrough]
set
{
if (value < 1)
{
throw new ArgumentOutOfRangeException("value");
}
_maximumNumberOfIterations = value;
}
}
/// <summary>
/// Returns the maximum number of iterations to the default.
/// </summary>
public void ResetMaximumNumberOfIterationsToDefault()
{
_maximumNumberOfIterations = DefaultMaximumNumberOfIterations;
}
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
/// by the current <see cref="IterationCountStopCriterium"/>. Result is set into <c>Status</c> field.
/// </summary>
/// <param name="iterationNumber">The number of iterations that have passed so far.</param>
/// <param name="solutionVector">The vector containing the current solution values.</param>
/// <param name="sourceVector">The right hand side vector.</param>
/// <param name="residualVector">The vector containing the current residual vectors.</param>
/// <remarks>
/// 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.
/// </remarks>
public void DetermineStatus(int iterationNumber, Vector<Complex32> solutionVector, Vector<Complex32> sourceVector, Vector<Complex32> residualVector)
{
if (iterationNumber < 0)
{
throw new ArgumentOutOfRangeException("iterationNumber");
}
if (iterationNumber >= _maximumNumberOfIterations)
{
SetStatusToFinished();
}
else
{
SetStatusToRunning();
}
}
/// <summary>
/// Set status to <see cref="CalculationFailure"/>
/// </summary>
private void SetStatusToFinished()
{
if (!(_status is CalculationStoppedWithoutConvergence))
{
_status = new CalculationStoppedWithoutConvergence();
}
}
/// <summary>
/// Set status to <see cref="CalculationRunning"/>
/// </summary>
private void SetStatusToRunning()
{
if (!(_status is CalculationRunning))
{
_status = new CalculationRunning();
}
}
/// <summary>
/// Gets the current calculation status.
/// </summary>
public ICalculationStatus Status
{
[DebuggerStepThrough]
get
{
return _status;
}
}
/// <summary>
/// Resets the <see cref="IterationCountStopCriterium"/> to the pre-calculation state.
/// </summary>
public void ResetToPrecalculationState()
{
_status = DefaultStatus;
}
/// <summary>
/// Gets the <see cref="StopLevel"/> which indicates what sort of stop criterium this
/// <see cref="IterationCountStopCriterium"/> monitors.
/// </summary>
/// <value>Returns <see cref="StopLevel"/>.</value>
public StopLevel StopLevel
{
[DebuggerStepThrough]
get
{
return StopLevel.StoppedWithoutConvergence;
}
}
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> class.</returns>
public IIterationStopCriterium<Complex32> Clone()
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
}
}

8
src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs

@ -28,13 +28,13 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using System.Collections.Generic;
using System.Linq;
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;
using System.Linq;
namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
{
@ -57,7 +57,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
var iterator = new Iterator();
iterator.Add(new FailureStopCriterium());
iterator.Add(new DivergenceStopCriterium());
iterator.Add(new IterationCountStopCriterium());
iterator.Add(new IterationCountStopCriterium<double>());
iterator.Add(new ResidualStopCriterium());
return iterator;

215
src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -1,215 +0,0 @@
// <copyright file="IterationCountStopCriterium.cs" company="Math.NET">
// 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.
// </copyright>
using System;
using System.Diagnostics;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium
{
/// <summary>
/// Defines an <see cref="IIterationStopCriterium{T}"/> that monitors the numbers of iteration
/// steps as stop criterium.
/// </summary>
public sealed class IterationCountStopCriterium : IIterationStopCriterium<double>
{
/// <summary>
/// The default value for the maximum number of iterations the process is allowed
/// to perform.
/// </summary>
public const int DefaultMaximumNumberOfIterations = 1000;
/// <summary>
/// The default status.
/// </summary>
private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
/// <summary>
/// The maximum number of iterations the calculation is allowed to perform.
/// </summary>
private int _maximumNumberOfIterations;
/// <summary>
/// The status of the calculation
/// </summary>
private ICalculationStatus _status = DefaultStatus;
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the default maximum
/// number of iterations.
/// </summary>
public IterationCountStopCriterium() : this(DefaultMaximumNumberOfIterations)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the specified maximum
/// number of iterations.
/// </summary>
/// <param name="maximumNumberOfIterations">The maximum number of iterations the calculation is allowed to perform.</param>
public IterationCountStopCriterium(int maximumNumberOfIterations)
{
if (maximumNumberOfIterations < 1)
{
throw new ArgumentOutOfRangeException("maximumNumberOfIterations");
}
_maximumNumberOfIterations = maximumNumberOfIterations;
}
/// <summary>
/// Gets or sets the maximum number of iterations the calculation is allowed to perform.
/// </summary>
/// <exception cref="ArgumentOutOfRangeException">Thrown if the <c>Maximum</c> is set to a negative value.</exception>
public int MaximumNumberOfIterations
{
[DebuggerStepThrough]
get
{
return _maximumNumberOfIterations;
}
[DebuggerStepThrough]
set
{
if (value < 1)
{
throw new ArgumentOutOfRangeException("value");
}
_maximumNumberOfIterations = value;
}
}
/// <summary>
/// Returns the maximum number of iterations to the default.
/// </summary>
public void ResetMaximumNumberOfIterationsToDefault()
{
_maximumNumberOfIterations = DefaultMaximumNumberOfIterations;
}
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
/// by the current <see cref="IterationCountStopCriterium"/>. Result is set into <c>Status</c> field.
/// </summary>
/// <param name="iterationNumber">The number of iterations that have passed so far.</param>
/// <param name="solutionVector">The vector containing the current solution values.</param>
/// <param name="sourceVector">The right hand side vector.</param>
/// <param name="residualVector">The vector containing the current residual vectors.</param>
/// <remarks>
/// 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.
/// </remarks>
public void DetermineStatus(int iterationNumber, Vector<double> solutionVector, Vector<double> sourceVector, Vector<double> residualVector)
{
if (iterationNumber < 0)
{
throw new ArgumentOutOfRangeException("iterationNumber");
}
if (iterationNumber >= _maximumNumberOfIterations)
{
SetStatusToFinished();
}
else
{
SetStatusToRunning();
}
}
/// <summary>
/// Set status to <see cref="CalculationFailure"/>
/// </summary>
private void SetStatusToFinished()
{
if (!(_status is CalculationStoppedWithoutConvergence))
{
_status = new CalculationStoppedWithoutConvergence();
}
}
/// <summary>
/// Set status to <see cref="CalculationRunning"/>
/// </summary>
private void SetStatusToRunning()
{
if (!(_status is CalculationRunning))
{
_status = new CalculationRunning();
}
}
/// <summary>
/// Gets the current calculation status.
/// </summary>
public ICalculationStatus Status
{
[DebuggerStepThrough]
get
{
return _status;
}
}
/// <summary>
/// Resets the <see cref="IterationCountStopCriterium"/> to the pre-calculation state.
/// </summary>
public void ResetToPrecalculationState()
{
_status = DefaultStatus;
}
/// <summary>
/// Gets the <see cref="StopLevel"/> which indicates what sort of stop criterium this
/// <see cref="IterationCountStopCriterium"/> monitors.
/// </summary>
/// <value>Returns <see cref="StopLevel"/>.</value>
public StopLevel StopLevel
{
[DebuggerStepThrough]
get
{
return StopLevel.StoppedWithoutConvergence;
}
}
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> class.</returns>
public IIterationStopCriterium<double> Clone()
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
}
}
}

8
src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs

@ -28,13 +28,13 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using System.Collections.Generic;
using System.Linq;
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;
using System.Linq;
namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
{
@ -57,7 +57,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
var iterator = new Iterator();
iterator.Add(new FailureStopCriterium());
iterator.Add(new DivergenceStopCriterium());
iterator.Add(new IterationCountStopCriterium());
iterator.Add(new IterationCountStopCriterium<float>());
iterator.Add(new ResidualStopCriterium());
return iterator;

28
src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/IterationCountStopCriterium.cs → src/Numerics/LinearAlgebra/Solvers/StopCriterium/IterationCountStopCriterium.cs

@ -28,18 +28,17 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using System;
using System.Diagnostics;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
namespace MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium
{
/// <summary>
/// Defines an <see cref="IIterationStopCriterium{T}"/> that monitors the numbers of iteration
/// steps as stop criterium.
/// </summary>
public sealed class IterationCountStopCriterium : IIterationStopCriterium<float>
public sealed class IterationCountStopCriterium<T> : IIterationStopCriterium<T> where T : struct, IEquatable<T>, IFormattable
{
/// <summary>
/// The default value for the maximum number of iterations the process is allowed
@ -63,7 +62,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
private ICalculationStatus _status = DefaultStatus;
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the default maximum
/// Initializes a new instance of the <see cref="IterationCountStopCriterium{T}"/> class with the default maximum
/// number of iterations.
/// </summary>
public IterationCountStopCriterium() : this(DefaultMaximumNumberOfIterations)
@ -71,7 +70,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
}
/// <summary>
/// Initializes a new instance of the <see cref="IterationCountStopCriterium"/> class with the specified maximum
/// Initializes a new instance of the <see cref="IterationCountStopCriterium{T}"/> class with the specified maximum
/// number of iterations.
/// </summary>
/// <param name="maximumNumberOfIterations">The maximum number of iterations the calculation is allowed to perform.</param>
@ -119,7 +118,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
/// <summary>
/// Determines the status of the iterative calculation based on the stop criteria stored
/// by the current <see cref="IterationCountStopCriterium"/>. Result is set into <c>Status</c> field.
/// by the current <see cref="IterationCountStopCriterium{T}"/>. Result is set into <c>Status</c> field.
/// </summary>
/// <param name="iterationNumber">The number of iterations that have passed so far.</param>
/// <param name="solutionVector">The vector containing the current solution values.</param>
@ -130,7 +129,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.
/// </remarks>
public void DetermineStatus(int iterationNumber, Vector<float> solutionVector, Vector<float> sourceVector, Vector<float> residualVector)
public void DetermineStatus(int iterationNumber, Vector<T> solutionVector, Vector<T> sourceVector, Vector<T> residualVector)
{
if (iterationNumber < 0)
{
@ -182,7 +181,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
}
/// <summary>
/// Resets the <see cref="IterationCountStopCriterium"/> to the pre-calculation state.
/// Resets the <see cref="IterationCountStopCriterium{T}"/> to the pre-calculation state.
/// </summary>
public void ResetToPrecalculationState()
{
@ -191,7 +190,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
/// <summary>
/// Gets the <see cref="StopLevel"/> which indicates what sort of stop criterium this
/// <see cref="IterationCountStopCriterium"/> monitors.
/// <see cref="IterationCountStopCriterium{T}"/> monitors.
/// </summary>
/// <value>Returns <see cref="StopLevel"/>.</value>
public StopLevel StopLevel
@ -204,13 +203,12 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium
}
/// <summary>
/// Clones the current <see cref="IterationCountStopCriterium"/> and its settings.
/// Clones the current <see cref="IterationCountStopCriterium{T}"/> and its settings.
/// </summary>
/// <returns>A new instance of the <see cref="IterationCountStopCriterium"/> class.</returns>
public IIterationStopCriterium<float> Clone()
/// <returns>A new instance of the <see cref="IterationCountStopCriterium{T}"/> class.</returns>
public IIterationStopCriterium<T> Clone()
{
return new IterationCountStopCriterium(_maximumNumberOfIterations);
return new IterationCountStopCriterium<T>(_maximumNumberOfIterations);
}
}
}

5
src/Numerics/Numerics.csproj

@ -122,7 +122,7 @@
<Compile Include="Distributions\Wishart.cs" />
<Compile Include="Distributions\Zipf.cs" />
<Compile Include="LinearAlgebra\Builder.cs" />
<Compile Include="LinearAlgebra\Double\Solvers\StopCriterium\IterationCountStopCriterium.cs" />
<Compile Include="LinearAlgebra\Solvers\StopCriterium\IterationCountStopCriterium.cs" />
<Compile Include="Providers\LinearAlgebra\Acml\AcmlLinearAlgebraProvider.Complex.cs" />
<Compile Include="Providers\LinearAlgebra\Acml\AcmlLinearAlgebraProvider.Complex32.cs" />
<Compile Include="Providers\LinearAlgebra\Acml\AcmlLinearAlgebraProvider.Double.cs" />
@ -258,7 +258,6 @@
<Compile Include="LinearAlgebra\Complex32\Solvers\Preconditioners\UnitPreconditioner.cs" />
<Compile Include="LinearAlgebra\Complex32\Solvers\StopCriterium\DivergenceStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex32\Solvers\StopCriterium\FailureStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex32\Solvers\StopCriterium\IterationCountStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex32\Solvers\StopCriterium\ResidualStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex32\SparseVector.cs" />
<Compile Include="LinearAlgebra\Complex\Factorization\DenseGramSchmidt.cs" />
@ -286,7 +285,6 @@
<Compile Include="LinearAlgebra\Complex\Solvers\Preconditioners\UnitPreconditioner.cs" />
<Compile Include="LinearAlgebra\Complex\Solvers\StopCriterium\DivergenceStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex\Solvers\StopCriterium\FailureStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex\Solvers\StopCriterium\IterationCountStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex\Solvers\StopCriterium\ResidualStopCriterium.cs" />
<Compile Include="LinearAlgebra\Complex\SparseVector.cs" />
<Compile Include="LinearAlgebra\Double\DenseVector.cs" />
@ -335,7 +333,6 @@
<Compile Include="LinearAlgebra\Single\Solvers\Preconditioners\UnitPreconditioner.cs" />
<Compile Include="LinearAlgebra\Single\Solvers\StopCriterium\DivergenceStopCriterium.cs" />
<Compile Include="LinearAlgebra\Single\Solvers\StopCriterium\FailureStopCriterium.cs" />
<Compile Include="LinearAlgebra\Single\Solvers\StopCriterium\IterationCountStopCriterium.cs" />
<Compile Include="LinearAlgebra\Single\Solvers\StopCriterium\ResidualStopCriterium.cs" />
<Compile Include="LinearAlgebra\Single\SparseMatrix.cs" />
<Compile Include="LinearAlgebra\Single\SparseVector.cs" />

10
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -221,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(monitor);
@ -294,7 +294,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(monitor);

10
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(monitor);
@ -296,7 +296,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(monitor);

10
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -144,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(monitor);
@ -295,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(monitor);

10
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -144,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(monitor);
@ -295,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var monitor = new Iterator(new IIterationStopCriterium<Complex>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(monitor);

24
src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs

@ -103,7 +103,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -150,7 +150,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator();
@ -180,7 +180,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
};
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -255,7 +255,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -277,7 +277,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -321,7 +321,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -343,7 +343,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<Complex>(1)
};
var iterator = new Iterator(criteria);
@ -375,7 +375,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<Complex>(1)
};
var iterator = new Iterator(criteria);
@ -405,7 +405,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex>(),
new ResidualStopCriterium()
};

26
src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs

@ -28,14 +28,16 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Complex;
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.StopCriterium
{
using System.Numerics;
/// <summary>
/// Iteration count stop criterium tests.
/// </summary>
@ -48,7 +50,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void CreateWithIllegalMinimumIterationsThrowsArgumentOutOfRangeException()
{
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium(-1));
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium<Complex>(-1));
}
/// <summary>
@ -57,7 +59,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void Create()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
}
@ -67,13 +69,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void ResetMaximumIterations()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum number of iterations");
criterium.ResetMaximumNumberOfIterationsToDefault();
Assert.AreNotEqual(10, criterium.MaximumNumberOfIterations, "Should have reset");
Assert.AreEqual(IterationCountStopCriterium.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
Assert.AreEqual(IterationCountStopCriterium<Complex>.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
}
/// <summary>
@ -82,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void DetermineStatusWithIllegalIterationNumberThrowsArgumentOutOfRangeException()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.Throws<ArgumentOutOfRangeException>(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
@ -94,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void DetermineStatus()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -110,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void ResetCalculationState()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -126,14 +128,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
[Test]
public void Clone()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
Assert.IsInstanceOf(typeof(IterationCountStopCriterium<Complex>), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
var clonedCriterium = clone as IterationCountStopCriterium<Complex>;
Assert.IsNotNull(clonedCriterium);
// ReSharper disable PossibleNullReferenceException

10
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -221,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -266,7 +266,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new BiCgStab(monitor);
@ -309,7 +309,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(monitor);

8
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs

@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new GpBiCg(monitor);

12
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Complex32;
using MathNet.Numerics.LinearAlgebra.Complex32.Solvers;
using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative;
@ -35,7 +36,6 @@ 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
{
@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -144,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new MlkBiCgStab(monitor);
@ -306,7 +306,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(monitor);

12
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Complex32;
using MathNet.Numerics.LinearAlgebra.Complex32.Solvers;
using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative;
@ -35,7 +36,6 @@ 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
{
@ -98,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -144,7 +144,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new TFQMR(monitor);
@ -306,7 +306,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var monitor = new Iterator(new IIterationStopCriterium<Complex32>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<Complex32>(1000),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(monitor);

24
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs

@ -103,7 +103,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -150,7 +150,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator();
@ -180,7 +180,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -199,7 +199,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
};
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@ -218,7 +218,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -255,7 +255,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -277,7 +277,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -299,7 +299,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -321,7 +321,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -343,7 +343,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<Complex32>(1)
};
var iterator = new Iterator(criteria);
@ -375,7 +375,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<Complex32>(1)
};
var iterator = new Iterator(criteria);
@ -405,7 +405,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<Complex32>(),
new ResidualStopCriterium()
};

26
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs

@ -28,14 +28,16 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Complex32;
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.StopCriterium
{
using Numerics;
/// <summary>
/// Iteration count stop criterium tests.
/// </summary>
@ -48,7 +50,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void CreateWithIllegalMinimumIterationsThrowsArgumentOutOfRangeException()
{
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium(-1));
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium<Complex32>(-1));
}
/// <summary>
@ -57,7 +59,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void Create()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
}
@ -67,13 +69,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void ResetMaximumIterations()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum number of iterations");
criterium.ResetMaximumNumberOfIterationsToDefault();
Assert.AreNotEqual(10, criterium.MaximumNumberOfIterations, "Should have reset");
Assert.AreEqual(IterationCountStopCriterium.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
Assert.AreEqual(IterationCountStopCriterium<Complex32>.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
}
/// <summary>
@ -82,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void DetermineStatusWithIllegalIterationNumberThrowsArgumentOutOfRangeException()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.Throws<ArgumentOutOfRangeException>(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
@ -94,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void DetermineStatus()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -110,7 +112,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void ResetCalculationState()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -126,14 +128,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
[Test]
public void Clone()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<Complex32>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
Assert.IsInstanceOf(typeof(IterationCountStopCriterium<Complex32>), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
var clonedCriterium = clone as IterationCountStopCriterium<Complex32>;
Assert.IsNotNull(clonedCriterium);
// ReSharper disable PossibleNullReferenceException

12
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Solvers;
using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -219,7 +219,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(monitor);
@ -295,7 +295,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10)
});
var solver = new BiCgStab(monitor);

10
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs

@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -266,7 +266,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(monitor);
@ -297,7 +297,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10)
});
var solver = new GpBiCg(monitor);

12
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Solvers;
using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -142,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -265,7 +265,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(monitor);
@ -296,7 +296,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10)
});
var solver = new MlkBiCgStab(monitor);

12
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Solvers;
using MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -142,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(monitor);
@ -292,7 +292,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<double>[]
{
new IterationCountStopCriterium(1000),
new IterationCountStopCriterium<double>(1000),
new ResidualStopCriterium(1e-10)
});
var solver = new TFQMR(monitor);

28
src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs

@ -28,14 +28,14 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using System.Collections.Generic;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Solvers;
using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
using System.Collections.Generic;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
@ -101,7 +101,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -148,7 +148,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator();
@ -178,7 +178,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -197,7 +197,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
};
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@ -216,7 +216,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -253,7 +253,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -275,7 +275,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -297,7 +297,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -319,7 +319,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<double>(1)
};
var iterator = new Iterator(criteria);
@ -373,7 +373,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<double>(1)
};
var iterator = new Iterator(criteria);
@ -403,7 +403,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<double>(),
new ResidualStopCriterium()
};

24
src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs

@ -28,11 +28,11 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCriterium
{
@ -48,7 +48,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void CreateWithIllegalMinimumIterationsThrowsArgumentOutOfRangeException()
{
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium(-1));
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium<double>(-1));
}
/// <summary>
@ -57,7 +57,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void Create()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
}
@ -67,13 +67,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void ResetMaximumIterations()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum number of iterations");
criterium.ResetMaximumNumberOfIterationsToDefault();
Assert.AreNotEqual(10, criterium.MaximumNumberOfIterations, "Should have reset");
Assert.AreEqual(IterationCountStopCriterium.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
Assert.AreEqual(IterationCountStopCriterium<double>.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
}
/// <summary>
@ -82,7 +82,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void DetermineStatusWithIllegalIterationNumberThrowsArgumentOutOfRangeException()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.Throws<ArgumentOutOfRangeException>(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void DetermineStatus()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -110,7 +110,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void ResetCalculationState()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -126,14 +126,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
[Test]
public void Clone()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<double>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
Assert.IsInstanceOf(typeof(IterationCountStopCriterium<double>), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
var clonedCriterium = clone as IterationCountStopCriterium<double>;
Assert.IsNotNull(clonedCriterium);
// ReSharper disable PossibleNullReferenceException

12
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers;
using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -219,7 +219,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -262,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new BiCgStab(monitor);
@ -303,7 +303,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(monitor);

12
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers;
using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -264,7 +264,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new GpBiCg(monitor);
@ -305,7 +305,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new GpBiCg(monitor);

12
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers;
@ -36,7 +37,6 @@ using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
{
@ -97,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -225,7 +225,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -281,7 +281,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new MlkBiCgStab(monitor);
@ -324,7 +324,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(monitor);

12
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs

@ -28,6 +28,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers;
using MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative;
@ -35,7 +36,6 @@ using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
{
@ -96,7 +96,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -142,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium(ConvergenceBoundary),
new DivergenceStopCriterium(),
new FailureStopCriterium()
@ -263,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new TFQMR(monitor);
@ -304,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var monitor = new Iterator(new IIterationStopCriterium<float>[]
{
new IterationCountStopCriterium(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations),
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(monitor);

28
src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs

@ -28,14 +28,14 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using System.Collections.Generic;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers;
using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
using System.Collections.Generic;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
@ -101,7 +101,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -148,7 +148,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator();
@ -178,7 +178,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -197,7 +197,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
};
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@ -216,7 +216,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -253,7 +253,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -275,7 +275,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -297,7 +297,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -319,7 +319,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};
var iterator = new Iterator(criteria);
@ -341,7 +341,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<float>(1)
};
var iterator = new Iterator(criteria);
@ -373,7 +373,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(1)
new IterationCountStopCriterium<float>(1)
};
var iterator = new Iterator(criteria);
@ -403,7 +403,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
{
new FailureStopCriterium(),
new DivergenceStopCriterium(),
new IterationCountStopCriterium(),
new IterationCountStopCriterium<float>(),
new ResidualStopCriterium()
};

24
src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs

@ -28,11 +28,11 @@
// OTHER DEALINGS IN THE SOFTWARE.
// </copyright>
using System;
using MathNet.Numerics.LinearAlgebra.Single;
using MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium;
using MathNet.Numerics.LinearAlgebra.Solvers.Status;
using MathNet.Numerics.LinearAlgebra.Solvers.StopCriterium;
using NUnit.Framework;
using System;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCriterium
{
@ -48,7 +48,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void CreateWithIllegalMinimumIterationsThrowsArgumentOutOfRangeException()
{
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium(-1));
Assert.Throws<ArgumentOutOfRangeException>(() => new IterationCountStopCriterium<float>(-1));
}
/// <summary>
@ -57,7 +57,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void Create()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
}
@ -67,13 +67,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void ResetMaximumIterations()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum number of iterations");
criterium.ResetMaximumNumberOfIterationsToDefault();
Assert.AreNotEqual(10, criterium.MaximumNumberOfIterations, "Should have reset");
Assert.AreEqual(IterationCountStopCriterium.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
Assert.AreEqual(IterationCountStopCriterium<float>.DefaultMaximumNumberOfIterations, criterium.MaximumNumberOfIterations, "Reset to the wrong value");
}
/// <summary>
@ -82,7 +82,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void DetermineStatusWithIllegalIterationNumberThrowsArgumentOutOfRangeException()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.Throws<ArgumentOutOfRangeException>(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
@ -94,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void DetermineStatus()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -110,7 +110,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void ResetCalculationState()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
@ -126,14 +126,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite
[Test]
public void Clone()
{
var criterium = new IterationCountStopCriterium(10);
var criterium = new IterationCountStopCriterium<float>(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
Assert.IsInstanceOf(typeof(IterationCountStopCriterium<float>), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
var clonedCriterium = clone as IterationCountStopCriterium<float>;
Assert.IsNotNull(clonedCriterium);
// ReSharper disable PossibleNullReferenceException

Loading…
Cancel
Save