diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs index 76a9da61..3c86293f 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/BiCgStab.cs @@ -91,20 +91,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -170,7 +156,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers Complex omega = 0; var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, result, input, residuals) == IterationStatus.Continue) { // rho_(i-1) = r~^T r_(i-1) // dotproduct r~ and r_(i-1) var oldRho = currentRho; @@ -229,7 +215,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers temp2.CopyTo(temp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, temp, input, vecS)) + if (iterator.DetermineStatus(iterationNumber, temp, input, vecS) != IterationStatus.Continue) { temp.CopyTo(result); @@ -237,7 +223,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers CalculateTrueResidual(matrix, residuals, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // We're all good now. return; @@ -278,7 +264,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers throw new Exception("Iterative solver experience a numerical break down"); } - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs index fb94c6c2..762d4ce3 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/GpBiCg.cs @@ -137,20 +137,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Decide if to do steps with BiCgStab /// @@ -238,7 +224,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers // for (k = 0, 1, .... ) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // p_k = r_k + beta_(k-1) * (p_(k-1) - u_(k-1)) p.Subtract(u, temp); @@ -379,7 +365,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers preconditioner.Approximate(xtemp, result); // Now check for convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs index 1bfad10a..2827d730 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/MlkBiCgStab.cs @@ -240,20 +240,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -347,7 +333,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers // FOR (j = 0, 1, 2 ....) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // SOLVE M g~_((j-1)k+k) = g_((j-1)k+k) preconditioner.Approximate(g[k - 1], gtemp); @@ -405,13 +391,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers temp2.CopyTo(xtemp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Calculate the true residual CalculateTrueResidual(matrix, residuals, xtemp, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // We're all good now. // Exit from the while loop. @@ -540,7 +526,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers temp2.CopyTo(residuals); // We can check the residuals here if they're close - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs index 0f0a550f..ce8d8ab6 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -77,7 +77,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The array that holds the tracking information. @@ -257,7 +257,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium } // Check if we are diverging and if so set the status - _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Running; + _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -318,7 +318,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; _residualHistory = null; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs index ab351e88..93b3239b 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/FailureStopCriterium.cs @@ -56,7 +56,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The iteration number of the last iteration. @@ -99,7 +99,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium var residualNorm = residualVector.InfinityNorm(); var solutionNorm = solutionVector.InfinityNorm(); - _status = double.IsNaN(solutionNorm.Real) || double.IsNaN(residualNorm.Real) ? IterationStatus.Failure : IterationStatus.Running; + _status = double.IsNaN(solutionNorm.Real) || double.IsNaN(residualNorm.Real) ? IterationStatus.Failure : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -122,7 +122,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs index 12415970..3680311b 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -76,7 +76,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The number of iterations since the residuals got below the maximum. @@ -267,13 +267,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium if (_lastIteration <= iterationNumber) { _iterationCount = iterationNumber - _lastIteration; - _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Running; + _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Continue; } } else { _iterationCount = 0; - _status = IterationStatus.Running; + _status = IterationStatus.Continue; } _lastIteration = iterationNumber; @@ -313,7 +313,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _iterationCount = 0; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs index 55bd3dc2..32222bb9 100644 --- a/src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Complex/Solvers/TFQMR.cs @@ -78,20 +78,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Is even? /// @@ -174,7 +160,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers // Start the iteration var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + while (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) == IterationStatus.Continue) { // First part of the step, the even bit if (IsEven(iterationNumber)) @@ -233,7 +219,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers temp2.CopyTo(x); // Check convergence and see if we can bail - if (!ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + if (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) != IterationStatus.Continue) { // Calculate the real values preconditioner.Approximate(x, result); @@ -244,7 +230,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers CalculateTrueResidual(matrix, temp, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, temp)) + if (iterator.DetermineStatus(iterationNumber, result, input, temp) != IterationStatus.Continue) { // We're all good now. return; diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs index 8db9969e..3619e7fe 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/BiCgStab.cs @@ -29,7 +29,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Preconditioners; using MathNet.Numerics.LinearAlgebra.Solvers; using MathNet.Numerics.Properties; @@ -85,20 +84,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -164,7 +149,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers Numerics.Complex32 omega = 0; var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, result, input, residuals) == IterationStatus.Continue) { // rho_(i-1) = r~^T r_(i-1) // dotproduct r~ and r_(i-1) var oldRho = currentRho; @@ -223,7 +208,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers temp2.CopyTo(temp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, temp, input, vecS)) + if (iterator.DetermineStatus(iterationNumber, temp, input, vecS) != IterationStatus.Continue) { temp.CopyTo(result); @@ -231,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers CalculateTrueResidual(matrix, residuals, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // We're all good now. return; @@ -272,7 +257,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers throw new Exception("Iterative solver experience a numerical break down"); } - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs index a04fcce4..e113020d 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/GpBiCg.cs @@ -130,20 +130,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Decide if to do steps with BiCgStab /// @@ -236,7 +222,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers // for (k = 0, 1, .... ) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // p_k = r_k + beta_(k-1) * (p_(k-1) - u_(k-1)) p.Subtract(u, temp); @@ -377,7 +363,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers preconditioner.Approximate(xtemp, result); // Now check for convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs index 4ecea50f..a9686192 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/MlkBiCgStab.cs @@ -233,20 +233,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -345,7 +331,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers // FOR (j = 0, 1, 2 ....) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // SOLVE M g~_((j-1)k+k) = g_((j-1)k+k) preconditioner.Approximate(g[k - 1], gtemp); @@ -403,13 +389,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers temp2.CopyTo(xtemp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Calculate the true residual CalculateTrueResidual(matrix, residuals, xtemp, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // We're all good now. // Exit from the while loop. @@ -538,7 +524,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers temp2.CopyTo(residuals); // We can check the residuals here if they're close - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs index 4b06fe24..3e00bb21 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -72,7 +72,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The array that holds the tracking information. @@ -252,7 +252,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium } // Check if we are diverging and if so set the status - _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Running; + _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -313,7 +313,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; _residualHistory = null; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs index 150a0504..43fbbdf3 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/FailureStopCriterium.cs @@ -51,7 +51,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The iteration number of the last iteration. @@ -94,7 +94,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium var residualNorm = residualVector.InfinityNorm(); var solutionNorm = solutionVector.InfinityNorm(); - _status = float.IsNaN(solutionNorm.Real) || float.IsNaN(residualNorm.Real) ? IterationStatus.Failure : IterationStatus.Running; + _status = float.IsNaN(solutionNorm.Real) || float.IsNaN(residualNorm.Real) ? IterationStatus.Failure : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -117,7 +117,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs index 81ff9a16..96f14308 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -71,7 +71,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The number of iterations since the residuals got below the maximum. @@ -262,13 +262,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium if (_lastIteration <= iterationNumber) { _iterationCount = iterationNumber - _lastIteration; - _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Running; + _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Continue; } } else { _iterationCount = 0; - _status = IterationStatus.Running; + _status = IterationStatus.Continue; } _lastIteration = iterationNumber; @@ -308,7 +308,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _iterationCount = 0; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs index d024a57b..9f810c29 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/TFQMR.cs @@ -70,20 +70,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Is even? /// @@ -171,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers // Start the iteration var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + while (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) == IterationStatus.Continue) { // First part of the step, the even bit if (IsEven(iterationNumber)) @@ -230,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers temp2.CopyTo(x); // Check convergence and see if we can bail - if (!ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + if (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) != IterationStatus.Continue) { // Calculate the real values preconditioner.Approximate(x, result); @@ -241,7 +227,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers CalculateTrueResidual(matrix, temp, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, temp)) + if (iterator.DetermineStatus(iterationNumber, result, input, temp) != IterationStatus.Continue) { // We're all good now. return; diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs b/src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs index 306ebff9..b263415d 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/BiCgStab.cs @@ -84,20 +84,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -163,7 +149,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers double omega = 0; var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, result, input, residuals) == IterationStatus.Continue) { // rho_(i-1) = r~^T r_(i-1) // dotproduct r~ and r_(i-1) var oldRho = currentRho; @@ -222,7 +208,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers temp2.CopyTo(temp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, temp, input, vecS)) + if (iterator.DetermineStatus(iterationNumber, temp, input, vecS) != IterationStatus.Continue) { temp.CopyTo(result); @@ -230,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers CalculateTrueResidual(matrix, residuals, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // We're all good now. return; @@ -271,7 +257,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers throw new Exception("Iterative solver experience a numerical break down"); } - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs b/src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs index 634de3c6..20b1fbf9 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/GpBiCg.cs @@ -136,20 +136,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Decide if to do steps with BiCgStab /// @@ -242,7 +228,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers // for (k = 0, 1, .... ) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // p_k = r_k + beta_(k-1) * (p_(k-1) - u_(k-1)) p.Subtract(u, temp); @@ -383,7 +369,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers preconditioner.Approximate(xtemp, result); // Now check for convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs index a9fba4ef..72f0d315 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/MlkBiCgStab.cs @@ -233,20 +233,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -345,7 +331,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers // FOR (j = 0, 1, 2 ....) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // SOLVE M g~_((j-1)k+k) = g_((j-1)k+k) preconditioner.Approximate(g[k - 1], gtemp); @@ -403,13 +389,13 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers temp2.CopyTo(xtemp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Calculate the true residual CalculateTrueResidual(matrix, residuals, xtemp, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // We're all good now. // Exit from the while loop. @@ -538,7 +524,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers temp2.CopyTo(residuals); // We can check the residuals here if they're close - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs index c81fd02e..ab6b52d9 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -44,7 +44,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// residual may experience before a divergence warning is issued. /// public const double DefaultMaximumRelativeIncrease = 0.08; - + /// /// Default value for the minimum number of iterations over which /// the residual must grow before a divergence warning is issued. @@ -55,32 +55,32 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Defines the default last iteration number. Set to -1 because iterations normally /// start at 0. /// - private const int DefaultLastIterationNumber = -1; + const int DefaultLastIterationNumber = -1; /// /// The maximum relative increase the residual may experience without triggering a divergence warning. /// - private double _maximumRelativeIncrease; + double _maximumRelativeIncrease; /// /// The number of iterations over which a residual increase should be tracked before issuing a divergence warning. /// - private int _minimumNumberOfIterations; + int _minimumNumberOfIterations; /// /// The status of the calculation /// - private IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The array that holds the tracking information. /// - private double[] _residualHistory; + double[] _residualHistory; /// /// The iteration number of the last iteration. /// - private int _lastIteration = DefaultLastIterationNumber; + int _lastIteration = DefaultLastIterationNumber; /// /// Initializes a new instance of the class with the default maximum @@ -104,7 +104,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// relative increase and the specified minimum number of tracking iterations. /// /// The minimum number of iterations over which the residual must grow before a divergence warning is issued. - public DivergenceStopCriterium(int minimumIterations) : this(DefaultMinimumNumberOfIterations, minimumIterations) + public DivergenceStopCriterium(int minimumIterations) : this(DefaultMinimumNumberOfIterations, minimumIterations) { } @@ -250,7 +250,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium } // Check if we are diverging and if so set the status - _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Running; + _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -260,7 +260,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// Detect if solution is diverging /// /// true if diverging, otherwise false - private bool IsDiverging() + bool IsDiverging() { // Run for each variable for (var i = 1; i < _residualHistory.Length; i++) @@ -270,7 +270,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium // Divergence is occurring if: // - the last residual is larger than the previous one // - the relative increase of the residual is larger than the setting allows - if ((difference < 0) || (_residualHistory[i - 1] * (1 + _maximumRelativeIncrease) >= _residualHistory[i])) + if ((difference < 0) || (_residualHistory[i - 1]*(1 + _maximumRelativeIncrease) >= _residualHistory[i])) { // No divergence taking place within the required number of iterations // So reset and stop the iteration. There is no way we can get to the @@ -285,7 +285,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// /// Gets required history Length /// - private int RequiredHistoryLength + int RequiredHistoryLength { [DebuggerStepThrough] get @@ -311,7 +311,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; _residualHistory = null; } @@ -325,4 +325,4 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium return new DivergenceStopCriterium(_maximumRelativeIncrease, _minimumNumberOfIterations); } } -} +} \ No newline at end of file diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs index c216998a..ea0973ac 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/FailureStopCriterium.cs @@ -49,7 +49,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The iteration number of the last iteration. @@ -92,7 +92,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium var residualNorm = residualVector.InfinityNorm(); var solutionNorm = solutionVector.InfinityNorm(); - _status = double.IsNaN(solutionNorm) || double.IsNaN(residualNorm) ? IterationStatus.Failure : IterationStatus.Running; + _status = double.IsNaN(solutionNorm) || double.IsNaN(residualNorm) ? IterationStatus.Failure : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -115,7 +115,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs index bb1dc3ad..f3f541f7 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -69,7 +69,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The number of iterations since the residuals got below the maximum. @@ -260,13 +260,13 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium if (_lastIteration <= iterationNumber) { _iterationCount = iterationNumber - _lastIteration; - _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Running; + _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Continue; } } else { _iterationCount = 0; - _status = IterationStatus.Running; + _status = IterationStatus.Continue; } _lastIteration = iterationNumber; @@ -306,7 +306,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _iterationCount = 0; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs b/src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs index 498dcd7f..21d9f875 100644 --- a/src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Double/Solvers/TFQMR.cs @@ -70,20 +70,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Is even? /// @@ -171,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers // Start the iteration var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + while (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) == IterationStatus.Continue) { // First part of the step, the even bit if (IsEven(iterationNumber)) @@ -230,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers temp2.CopyTo(x); // Check convergence and see if we can bail - if (!ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + if (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) != IterationStatus.Continue) { // Calculate the real values preconditioner.Approximate(x, result); @@ -241,7 +227,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers CalculateTrueResidual(matrix, temp, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, temp)) + if (iterator.DetermineStatus(iterationNumber, result, input, temp) != IterationStatus.Continue) { // We're all good now. return; diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs b/src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs index 0b48e54f..3eaec91f 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/BiCgStab.cs @@ -84,20 +84,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -163,7 +149,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers float omega = 0; var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, result, input, residuals) == IterationStatus.Continue) { // rho_(i-1) = r~^T r_(i-1) // dotproduct r~ and r_(i-1) var oldRho = currentRho; @@ -222,7 +208,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers temp2.CopyTo(temp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, temp, input, vecS)) + if (iterator.DetermineStatus(iterationNumber, temp, input, vecS) != IterationStatus.Continue) { temp.CopyTo(result); @@ -230,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers CalculateTrueResidual(matrix, residuals, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // We're all good now. return; @@ -271,7 +257,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers throw new Exception("Iterative solver experience a numerical break down"); } - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs b/src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs index 241c84b2..25bf38b5 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/GpBiCg.cs @@ -130,20 +130,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Decide if to do steps with BiCgStab /// @@ -236,7 +222,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers // for (k = 0, 1, .... ) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // p_k = r_k + beta_(k-1) * (p_(k-1) - u_(k-1)) p.Subtract(u, temp); @@ -377,7 +363,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers preconditioner.Approximate(xtemp, result); // Now check for convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, result, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs b/src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs index 8cc1a5ae..c6ae4702 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/MlkBiCgStab.cs @@ -236,20 +236,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the /// solution vector and x is the unknown vector. @@ -348,7 +334,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers // FOR (j = 0, 1, 2 ....) var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + while (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) == IterationStatus.Continue) { // SOLVE M g~_((j-1)k+k) = g_((j-1)k+k) preconditioner.Approximate(g[k - 1], gtemp); @@ -406,13 +392,13 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers temp2.CopyTo(xtemp); // Check convergence and stop if we are converged. - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Calculate the true residual CalculateTrueResidual(matrix, residuals, xtemp, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // We're all good now. // Exit from the while loop. @@ -541,7 +527,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers temp2.CopyTo(residuals); // We can check the residuals here if they're close - if (!ShouldContinue(iterator, iterationNumber, xtemp, input, residuals)) + if (iterator.DetermineStatus(iterationNumber, xtemp, input, residuals) != IterationStatus.Continue) { // Recalculate the residuals and go round again. This is done to ensure that // we have the proper residuals. diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs index af4fd7ad..66918ab1 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/DivergenceStopCriterium.cs @@ -44,7 +44,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// residual may experience before a divergence warning is issued. /// public const double DefaultMaximumRelativeIncrease = 0.08; - + /// /// Default value for the minimum number of iterations over which /// the residual must grow before a divergence warning is issued. @@ -55,32 +55,32 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Defines the default last iteration number. Set to -1 because iterations normally /// start at 0. /// - private const int DefaultLastIterationNumber = -1; + const int DefaultLastIterationNumber = -1; /// /// The maximum relative increase the residual may experience without triggering a divergence warning. /// - private double _maximumRelativeIncrease; + double _maximumRelativeIncrease; /// /// The number of iterations over which a residual increase should be tracked before issuing a divergence warning. /// - private int _minimumNumberOfIterations; + int _minimumNumberOfIterations; /// /// The status of the calculation /// - private IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The array that holds the tracking information. /// - private double[] _residualHistory; + double[] _residualHistory; /// /// The iteration number of the last iteration. /// - private int _lastIteration = DefaultLastIterationNumber; + int _lastIteration = DefaultLastIterationNumber; /// /// Initializes a new instance of the class with the default maximum @@ -104,7 +104,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// relative increase and the specified minimum number of tracking iterations. /// /// The minimum number of iterations over which the residual must grow before a divergence warning is issued. - public DivergenceStopCriterium(int minimumIterations) : this(DefaultMinimumNumberOfIterations, minimumIterations) + public DivergenceStopCriterium(int minimumIterations) : this(DefaultMinimumNumberOfIterations, minimumIterations) { } @@ -250,7 +250,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium } // Check if we are diverging and if so set the status - _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Running; + _status = IsDiverging() ? IterationStatus.Diverged : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -260,7 +260,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Detect if solution is diverging /// /// true if diverging, otherwise false - private bool IsDiverging() + bool IsDiverging() { // Run for each variable for (var i = 1; i < _residualHistory.Length; i++) @@ -270,7 +270,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium // Divergence is occurring if: // - the last residual is larger than the previous one // - the relative increase of the residual is larger than the setting allows - if ((difference < 0) || (_residualHistory[i - 1] * (1 + _maximumRelativeIncrease) >= _residualHistory[i])) + if ((difference < 0) || (_residualHistory[i - 1]*(1 + _maximumRelativeIncrease) >= _residualHistory[i])) { // No divergence taking place within the required number of iterations // So reset and stop the iteration. There is no way we can get to the @@ -285,7 +285,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// Gets required history Length /// - private int RequiredHistoryLength + int RequiredHistoryLength { [DebuggerStepThrough] get @@ -311,7 +311,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; _residualHistory = null; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs index a2b117dc..3c46508b 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/FailureStopCriterium.cs @@ -44,17 +44,17 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// Defines the default last iteration number. Set to -1 because iterations normally /// start at 0. /// - private const int DefaultLastIterationNumber = -1; + const int DefaultLastIterationNumber = -1; /// /// The status of the calculation /// - private IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The iteration number of the last iteration. /// - private int _lastIteration = DefaultLastIterationNumber; + int _lastIteration = DefaultLastIterationNumber; /// /// Determines the status of the iterative calculation based on the stop criteria stored @@ -92,7 +92,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium var residualNorm = residualVector.InfinityNorm(); var solutionNorm = solutionVector.InfinityNorm(); - _status = float.IsNaN(solutionNorm) || float.IsNaN(residualNorm) ? IterationStatus.Failure : IterationStatus.Running; + _status = float.IsNaN(solutionNorm) || float.IsNaN(residualNorm) ? IterationStatus.Failure : IterationStatus.Continue; _lastIteration = iterationNumber; return _status; @@ -115,7 +115,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs index 386ee27f..0540e4a0 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/StopCriterium/ResidualStopCriterium.cs @@ -69,7 +69,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// The number of iterations since the residuals got below the maximum. @@ -260,13 +260,13 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium if (_lastIteration <= iterationNumber) { _iterationCount = iterationNumber - _lastIteration; - _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Running; + _status = _iterationCount >= _minimumIterationsBelowMaximum ? IterationStatus.Converged : IterationStatus.Continue; } } else { _iterationCount = 0; - _status = IterationStatus.Running; + _status = IterationStatus.Continue; } _lastIteration = iterationNumber; @@ -306,7 +306,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.StopCriterium /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; _iterationCount = 0; _lastIteration = DefaultLastIterationNumber; } diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs b/src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs index 26a596fe..03f56cce 100644 --- a/src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs +++ b/src/Numerics/LinearAlgebra/Single/Solvers/TFQMR.cs @@ -70,20 +70,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers residual.Add(b, residual); } - /// - /// Determine if calculation should continue - /// - /// Number of iterations passed - /// Result . - /// Source . - /// Residual . - /// true if continue, otherwise false - static bool ShouldContinue(Iterator iterator, int iterationNumber, Vector result, Vector source, Vector residuals) - { - var status = iterator.DetermineStatus(iterationNumber, result, source, residuals); - return status == IterationStatus.Running || status == IterationStatus.Indetermined; - } - /// /// Is even? /// @@ -171,7 +157,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers // Start the iteration var iterationNumber = 0; - while (ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + while (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) == IterationStatus.Continue) { // First part of the step, the even bit if (IsEven(iterationNumber)) @@ -230,7 +216,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers temp2.CopyTo(x); // Check convergence and see if we can bail - if (!ShouldContinue(iterator, iterationNumber, result, input, pseudoResiduals)) + if (iterator.DetermineStatus(iterationNumber, result, input, pseudoResiduals) != IterationStatus.Continue) { // Calculate the real values preconditioner.Approximate(x, result); @@ -241,7 +227,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers CalculateTrueResidual(matrix, temp, result, input); // Now recheck the convergence - if (!ShouldContinue(iterator, iterationNumber, result, input, temp)) + if (iterator.DetermineStatus(iterationNumber, result, input, temp) != IterationStatus.Continue) { // We're all good now. return; diff --git a/src/Numerics/LinearAlgebra/Solvers/CancellationStopCriterium.cs b/src/Numerics/LinearAlgebra/Solvers/CancellationStopCriterium.cs index a9b97c60..04778543 100644 --- a/src/Numerics/LinearAlgebra/Solvers/CancellationStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Solvers/CancellationStopCriterium.cs @@ -75,7 +75,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// public IterationStatus DetermineStatus(int iterationNumber, Vector solutionVector, Vector sourceVector, Vector residualVector) { - return _currentTcs.Token.IsCancellationRequested ? IterationStatus.Cancelled : IterationStatus.Running; + return _currentTcs.Token.IsCancellationRequested ? IterationStatus.Cancelled : IterationStatus.Continue; } /// @@ -86,7 +86,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers [DebuggerStepThrough] get { - return _currentTcs.Token.IsCancellationRequested ? IterationStatus.Cancelled : IterationStatus.Running; + return _currentTcs.Token.IsCancellationRequested ? IterationStatus.Cancelled : IterationStatus.Continue; } } diff --git a/src/Numerics/LinearAlgebra/Solvers/IterationCountStopCriterium.cs b/src/Numerics/LinearAlgebra/Solvers/IterationCountStopCriterium.cs index 6b97771b..54d59750 100644 --- a/src/Numerics/LinearAlgebra/Solvers/IterationCountStopCriterium.cs +++ b/src/Numerics/LinearAlgebra/Solvers/IterationCountStopCriterium.cs @@ -53,7 +53,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// /// The status of the calculation /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// Initializes a new instance of the class with the default maximum @@ -130,7 +130,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers throw new ArgumentOutOfRangeException("iterationNumber"); } - _status = iterationNumber >= _maximumNumberOfIterations ? IterationStatus.StoppedWithoutConvergence : IterationStatus.Running; + _status = iterationNumber >= _maximumNumberOfIterations ? IterationStatus.StoppedWithoutConvergence : IterationStatus.Continue; return _status; } @@ -152,7 +152,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; } /// diff --git a/src/Numerics/LinearAlgebra/Solvers/IterationStatus.cs b/src/Numerics/LinearAlgebra/Solvers/IterationStatus.cs index 274b98f2..d70d8360 100644 --- a/src/Numerics/LinearAlgebra/Solvers/IterationStatus.cs +++ b/src/Numerics/LinearAlgebra/Solvers/IterationStatus.cs @@ -35,8 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// public enum IterationStatus { - Indetermined = 0, - Running, + Continue = 0, Converged, Diverged, StoppedWithoutConvergence, diff --git a/src/Numerics/LinearAlgebra/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Solvers/Iterator.cs index 07371111..a9adcfdc 100644 --- a/src/Numerics/LinearAlgebra/Solvers/Iterator.cs +++ b/src/Numerics/LinearAlgebra/Solvers/Iterator.cs @@ -49,7 +49,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// /// The status of the iterator. /// - IterationStatus _status = IterationStatus.Indetermined; + IterationStatus _status = IterationStatus.Continue; /// /// Initializes a new instance of the class with the specified stop criteria. @@ -133,13 +133,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers foreach (var stopCriterium in _stopCriteria) { var status = stopCriterium.DetermineStatus(iterationNumber, solutionVector, sourceVector, residualVector); - - // Check if the status is: - // - Running --> keep going - // - Indetermined --> keep going - // Anything else: - // Stop looping and set that status - if ((status == IterationStatus.Running) || (status == IterationStatus.Indetermined)) + if (status == IterationStatus.Continue) { continue; } @@ -150,7 +144,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers // Got all the way through // So we're running because we had vectors passed to us. - _status = IterationStatus.Running; + _status = IterationStatus.Continue; return _status; } @@ -171,7 +165,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers /// public void Reset() { - _status = IterationStatus.Indetermined; + _status = IterationStatus.Continue; foreach (var stopCriterium in _stopCriteria) { diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs index ae7e5358..ace973d2 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs @@ -102,7 +102,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); // Second step, should run out of iterations. iterator.DetermineStatus( @@ -134,13 +134,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); iterator.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, iterator.Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[0].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[1].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[2].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[0].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[1].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[2].Status, "Incorrect status"); } } } diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs index 3a89ea90..135f7dcb 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs @@ -139,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit new DenseVector(new[] {new Complex(1.0, 0)}), new DenseVector(new[] {new Complex((i + 1)*(Increase + 0.1), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -163,7 +163,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit new DenseVector(new[] {new Complex(1.0, 0)}), new DenseVector(new[] {new Complex((i + 1)*(Increase - 0.01), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -187,7 +187,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit new DenseVector(new[] {new Complex(1.0, 0)}), new DenseVector(new[] {new Complex((i + 1)*(Increase - 0.01), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Now make it fail by throwing in a NaN @@ -222,7 +222,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit new DenseVector(new[] {new Complex(1.0, 0)}), new DenseVector(new[] {new Complex(previous, 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Add the final residual. Now we should have divergence @@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count"); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Status check fail."); } /// @@ -282,11 +282,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit var clonedCriterium = clone as DivergenceStopCriterium; Assert.IsNotNull(clonedCriterium); - // ReSharper disable PossibleNullReferenceException Assert.AreEqual(criterium.MaximumRelativeIncrease, clonedCriterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(criterium.MinimumNumberOfIterations, clonedCriterium.MinimumNumberOfIterations, "Incorrect iteration count"); - - // ReSharper restore PossibleNullReferenceException } } } diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs index a8cb630d..41756825 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs @@ -126,7 +126,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit var residual = new DenseVector(new[] {new Complex(1.0, 0), new Complex(2.0, 0), new Complex(3, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); } /// @@ -143,10 +143,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit var residual = new DenseVector(new[] {new Complex(1000, 0), new Complex(1000, 0), new Complex(2001, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs index bca21dc9..c307ec3a 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs @@ -99,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); var status2 = criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); Assert.AreEqual(IterationStatus.StoppedWithoutConvergence, status2, "Should be finished"); @@ -115,10 +115,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs index 536bda16..90126415 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs @@ -239,7 +239,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit var residual = new DenseVector(new[] {new Complex(0.001, 0), new Complex(0.001, 0), new Complex(0.002, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should still be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should still be running"); var status2 = criterium.DetermineStatus(16, solution, source, residual); Assert.AreEqual(IterationStatus.Converged, status2, "Should be done"); @@ -259,10 +259,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit var residual = new DenseVector(new[] {new Complex(1.000, 0), new Complex(1.000, 0), new Complex(2.001, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs index 331d9b48..8a4384f4 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs @@ -102,7 +102,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); // Second step, should run out of iterations. iterator.DetermineStatus( @@ -134,13 +134,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); iterator.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, iterator.Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[0].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[1].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[2].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[0].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[1].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[2].Status, "Incorrect status"); } } } diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs index 96e1ac4a..33225b8d 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs @@ -138,7 +138,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr new DenseVector(new[] {new Complex32(1.0f, 0)}), new DenseVector(new[] {new Complex32(1.0f, 0)}), new DenseVector(new[] {new Complex32((i + 1)*(Increase + 0.1f), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -162,7 +162,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr new DenseVector(new[] {new Complex32(1.0f, 0)}), new DenseVector(new[] {new Complex32((i + 1)*(Increase - 0.01f), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -186,7 +186,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr new DenseVector(new[] {new Complex32(1.0f, 0)}), new DenseVector(new[] {new Complex32((i + 1)*(Increase - 0.01f), 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Now make it fail by throwing in a NaN @@ -221,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr new DenseVector(new[] {new Complex32(1.0f, 0)}), new DenseVector(new[] {new Complex32(previous, 0)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Add the final residual. Now we should have divergence @@ -260,7 +260,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count"); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Status check fail."); } /// @@ -281,11 +281,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr var clonedCriterium = clone as DivergenceStopCriterium; Assert.IsNotNull(clonedCriterium); - // ReSharper disable PossibleNullReferenceException Assert.AreEqual(criterium.MaximumRelativeIncrease, clonedCriterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(criterium.MinimumNumberOfIterations, clonedCriterium.MinimumNumberOfIterations, "Incorrect iteration count"); - - // ReSharper restore PossibleNullReferenceException } } } diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs index 1f0e8232..3890d85d 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs @@ -126,7 +126,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr var residual = new DenseVector(new[] {new Complex32(1.0f, 0), new Complex32(2.0f, 0), new Complex32(3, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); } /// @@ -143,10 +143,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr var residual = new DenseVector(new[] {new Complex32(1000, 0), new Complex32(1000, 0), new Complex32(2001, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs index ddef76be..e01c8b9f 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs @@ -99,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); var status2 = criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); Assert.AreEqual(IterationStatus.StoppedWithoutConvergence, status2, "Should be finished"); @@ -115,10 +115,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs index 727a83ba..5612f337 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs @@ -239,7 +239,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr var residual = new DenseVector(new[] {new Complex32(0.001f, 0), new Complex32(0.001f, 0), new Complex32(0.002f, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should still be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should still be running"); var status2 = criterium.DetermineStatus(16, solution, source, residual); Assert.AreEqual(IterationStatus.Converged, status2, "Should be done"); @@ -259,10 +259,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr var residual = new DenseVector(new[] {new Complex32(1.000f, 0), new Complex32(1.000f, 0), new Complex32(2.001f, 0)}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs index 67e79eb1..2c5e04de 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs @@ -100,7 +100,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); // Second step, should run out of iterations. iterator.DetermineStatus( @@ -132,13 +132,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); iterator.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, iterator.Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[0].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[1].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[2].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[0].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[1].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[2].Status, "Incorrect status"); } } } diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs index 72f07284..8170e185 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs @@ -137,7 +137,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite new DenseVector(new[] {1.0}), new DenseVector(new[] {(i + 1)*(Increase + 0.1)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -161,7 +161,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite new DenseVector(new[] {1.0}), new DenseVector(new[] {(i + 1)*(Increase - 0.01)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -185,7 +185,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite new DenseVector(new[] {1.0}), new DenseVector(new[] {(i + 1)*(Increase - 0.01)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Now make it fail by throwing in a NaN @@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite new DenseVector(new[] {1.0}), new DenseVector(new[] {previous})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Add the final residual. Now we should have divergence @@ -259,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count"); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Status check fail."); } /// @@ -280,11 +280,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite var clonedCriterium = clone as DivergenceStopCriterium; Assert.IsNotNull(clonedCriterium); - // ReSharper disable PossibleNullReferenceException Assert.AreEqual(criterium.MaximumRelativeIncrease, clonedCriterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(criterium.MinimumNumberOfIterations, clonedCriterium.MinimumNumberOfIterations, "Incorrect iteration count"); - - // ReSharper restore PossibleNullReferenceException } } } diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/FailureStopCriteriumTest.cs index 0d5c91ad..79ae6981 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/FailureStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/FailureStopCriteriumTest.cs @@ -124,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite var residual = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); } /// @@ -141,10 +141,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite var residual = new DenseVector(new[] { 1000.0, 1000.0, 2001.0 }); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs index e104384f..daad3e1e 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs @@ -97,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); var status2 = criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); Assert.AreEqual(IterationStatus.StoppedWithoutConvergence, status2, "Should be finished"); @@ -113,10 +113,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/ResidualStopCriteriumTest.cs index 65476a09..9098f2e3 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/ResidualStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterium/ResidualStopCriteriumTest.cs @@ -233,7 +233,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite var residual = new DenseVector(new[] {0.001, 0.001, 0.002}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should still be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should still be running"); var status2 = criterium.DetermineStatus(16, solution, source, residual); Assert.AreEqual(IterationStatus.Converged, status2, "Should be done"); @@ -253,10 +253,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite var residual = new DenseVector(new[] {1.000, 1.000, 2.001}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs index 41fd2e70..03a1a66c 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs @@ -100,7 +100,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); // Second step, should run out of iterations. iterator.DetermineStatus( @@ -132,13 +132,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 4)); - Assert.AreEqual(IterationStatus.Running, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); iterator.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, iterator.Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[0].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[1].Status, "Incorrect status"); - Assert.AreEqual(IterationStatus.Indetermined, criteria[2].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, iterator.Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[0].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[1].Status, "Incorrect status"); + Assert.AreEqual(IterationStatus.Continue, criteria[2].Status, "Incorrect status"); } } } diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs index f89cea99..7d81c140 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs @@ -137,7 +137,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite new DenseVector(new[] {1.0f}), new DenseVector(new[] {(i + 1)*(Increase + 0.1f)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -161,7 +161,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite new DenseVector(new[] {1.0f}), new DenseVector(new[] {(i + 1)*(Increase - 0.01f)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } } @@ -185,7 +185,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite new DenseVector(new[] {1.0f}), new DenseVector(new[] {(i + 1)*(Increase - 0.01f)})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Now make it fail by throwing in a NaN @@ -220,7 +220,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite new DenseVector(new[] {1.0f}), new DenseVector(new[] {previous})); - Assert.AreEqual(IterationStatus.Running, status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); } // Add the final residual. Now we should have divergence @@ -259,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count"); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Status check fail."); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Status check fail."); } /// @@ -280,11 +280,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite var clonedCriterium = clone as DivergenceStopCriterium; Assert.IsNotNull(clonedCriterium); - // ReSharper disable PossibleNullReferenceException Assert.AreEqual(criterium.MaximumRelativeIncrease, clonedCriterium.MaximumRelativeIncrease, "Incorrect maximum"); Assert.AreEqual(criterium.MinimumNumberOfIterations, clonedCriterium.MinimumNumberOfIterations, "Incorrect iteration count"); - - // ReSharper restore PossibleNullReferenceException } } } diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/FailureStopCriteriumTest.cs index ba04813a..092a1125 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/FailureStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/FailureStopCriteriumTest.cs @@ -124,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite var residual = new DenseVector(new[] {1.0f, 2.0f, 3.0f}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); } /// @@ -141,10 +141,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite var residual = new DenseVector(new[] {1000.0f, 1000.0f, 2001.0f}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs index 3b92f738..3fd7a712 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs @@ -97,7 +97,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); var status2 = criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); Assert.AreEqual(IterationStatus.StoppedWithoutConvergence, status2, "Should be finished"); @@ -113,10 +113,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite Assert.IsNotNull(criterium, "A criterium should have been created"); var status = criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } /// diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/ResidualStopCriteriumTest.cs index e0099ed9..a817dc0a 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/ResidualStopCriteriumTest.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/StopCriterium/ResidualStopCriteriumTest.cs @@ -233,7 +233,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite var residual = new DenseVector(new[] {0.001f, 0.001f, 0.002f}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should still be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should still be running"); var status2 = criterium.DetermineStatus(16, solution, source, residual); Assert.AreEqual(IterationStatus.Converged, status2, "Should be done"); @@ -253,10 +253,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.StopCrite var residual = new DenseVector(new[] {1.000f, 1.000f, 2.001f}); var status = criterium.DetermineStatus(5, solution, source, residual); - Assert.AreEqual(IterationStatus.Running, status, "Should be running"); + Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); criterium.Reset(); - Assert.AreEqual(IterationStatus.Indetermined, criterium.Status, "Should not have started"); + Assert.AreEqual(IterationStatus.Continue, criterium.Status, "Should not have started"); } ///