diff --git a/src/Examples/LinearAlgebra/VectorInitialization.cs b/src/Examples/LinearAlgebra/VectorInitialization.cs
index bc7bc400..284c15eb 100644
--- a/src/Examples/LinearAlgebra/VectorInitialization.cs
+++ b/src/Examples/LinearAlgebra/VectorInitialization.cs
@@ -66,13 +66,13 @@ namespace Examples.LinearAlgebraExamples
var vector1 = new DenseVector(5);
// 2. Initialize a new instance of the vector with a given size and each element set to the given value
- var vector2 = new DenseVector(5, 3.0);
+ var vector2 = DenseVector.Create(5, i => 3.0);
// 3. Initialize a new instance of the vector from an array.
var vector3 = new DenseVector(new[] { 1.0, 2.0, 3.0, 4.0, 5.0 });
// 4. Initialize a new instance of the vector by copying the values from another.
- var vector4 = new DenseVector(vector3);
+ var vector4 = DenseVector.OfVector(vector3);
// Format vector output to console
var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone();
diff --git a/src/Numerics/Distributions/Multivariate/MatrixNormal.cs b/src/Numerics/Distributions/Multivariate/MatrixNormal.cs
index 7957ce8d..d963440a 100644
--- a/src/Numerics/Distributions/Multivariate/MatrixNormal.cs
+++ b/src/Numerics/Distributions/Multivariate/MatrixNormal.cs
@@ -283,7 +283,7 @@ namespace MathNet.Numerics.Distributions
var vki = v.KroneckerProduct(k.Inverse());
// Sample a vector valued random variable with VKi as the covariance.
- var vector = SampleVectorNormal(rnd, new DenseVector(n * p, 0.0), vki);
+ var vector = SampleVectorNormal(rnd, new DenseVector(n * p), vki);
// Unstack the vector v and add the mean.
var r = m.Clone();
@@ -323,7 +323,7 @@ namespace MathNet.Numerics.Distributions
var count = mean.Count;
// Sample a standard normal variable.
- var v = new DenseVector(count, 0.0);
+ var v = new DenseVector(count);
for (var d = 0; d < count; d += 2)
{
var sample = Normal.SampleUncheckedBoxMuller(rnd);
diff --git a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs b/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
index c05e6ff4..5e379a5c 100644
--- a/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/DenseVector.cs
@@ -82,18 +82,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
}
///
- /// Create a new dense vector with the given length.
- /// All cells of the vector will be initialized with the provided value.
- /// Zero-length vectors are not supported.
+ /// Create a new dense vector directly binding to a raw array.
+ /// The array is used directly without copying.
+ /// Very efficient, but changes to the array and the vector will affect each other.
///
- /// If length is less than one.
- public DenseVector(int length, Complex value)
- : this(length)
+ public DenseVector(Complex[] storage)
+ : this(new DenseVectorStorage(storage.Length, storage))
{
- for (var index = 0; index < _values.Length; index++)
- {
- _values[index] = value;
- }
}
///
@@ -101,9 +96,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(Vector other)
- : this(DenseVectorStorage.OfVector(other.Storage))
+ public static DenseVector OfVector(Vector vector)
{
+ return new DenseVector(DenseVectorStorage.OfVector(vector.Storage));
}
///
@@ -111,19 +106,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(IEnumerable other)
- : this(DenseVectorStorage.OfEnumerable(other))
- {
- }
-
- ///
- /// Create a new dense vector directly binding to a raw array.
- /// The array is used directly without copying.
- /// Very efficient, but changes to the array and the vector will affect each other.
- ///
- public DenseVector(Complex[] storage)
- : this(new DenseVectorStorage(storage.Length, storage))
+ public static DenseVector OfEnumerable(IEnumerable enumerable)
{
+ return new DenseVector(DenseVectorStorage.OfEnumerable(enumerable));
}
///
@@ -143,6 +128,40 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
i => new Complex(distribution.Sample(), distribution.Sample())));
}
+ ///
+ /// Create a new dense vector with the given length.
+ /// All cells of the vector will be initialized with the provided value.
+ /// Zero-length vectors are not supported.
+ ///
+ /// If length is less than one.
+ [Obsolete("Use DenseVector.Create instead. Scheduled for removal in v3.0.")]
+ public DenseVector(int length, Complex value)
+ : this(DenseVectorStorage.OfInit(length, i => value))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfVector instead. Scheduled for removal in v3.0.")]
+ public DenseVector(Vector other)
+ : this(DenseVectorStorage.OfVector(other.Storage))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
+ public DenseVector(IEnumerable other)
+ : this(DenseVectorStorage.OfEnumerable(other))
+ {
+ }
+
///
/// Gets the vector's data.
///
diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs
index f4325558..d738b4ab 100644
--- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs
@@ -69,35 +69,35 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to null, in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates the number of BiCGStab steps should be taken
/// before switching.
///
- private int _numberOfBiCgStabSteps = 1;
+ int _numberOfBiCgStabSteps = 1;
///
/// Indicates the number of GPBiCG steps should be taken
/// before switching.
///
- private int _numberOfGpbiCgSteps = 4;
+ int _numberOfGpbiCgSteps = 4;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -106,7 +106,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public GpBiCg() : this(null, null)
+ public GpBiCg()
+ : this(null, null)
{
}
@@ -129,7 +130,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public GpBiCg(IIterator iterator) : this(null, iterator)
+ public GpBiCg(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -141,7 +143,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public GpBiCg(IPreConditioner preconditioner) : this(preconditioner, null)
+ public GpBiCg(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -174,10 +177,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
public int NumberOfBiCgStabSteps
{
- get
- {
- return _numberOfBiCgStabSteps;
- }
+ get { return _numberOfBiCgStabSteps; }
set
{
@@ -186,7 +186,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
throw new ArgumentOutOfRangeException("value");
}
- _numberOfBiCgStabSteps = value;
+ _numberOfBiCgStabSteps = value;
}
}
@@ -196,10 +196,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
public int NumberOfGpBiCgSteps
{
- get
- {
- return _numberOfGpbiCgSteps;
- }
+ get { return _numberOfGpbiCgSteps; }
set
{
@@ -235,10 +232,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -323,7 +317,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
{
_preconditioner = new UnitPreconditioner();
}
-
+
_preconditioner.Initialize(matrix);
// x_0 is initial guess
@@ -340,7 +334,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
// Define the temporary vectors
// rDash_0 = r_0
- Vector rdash = new DenseVector(residuals);
+ Vector rdash = DenseVector.OfVector(residuals);
// t_-1 = 0
Vector t = new DenseVector(residuals.Count);
@@ -378,7 +372,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
matrix.Multiply(temp, s);
// alpha_k = (r*_0 * r_k) / (r*_0 * s_k)
- var alpha = rdash.DotProduct(residuals) / rdash.DotProduct(s);
+ var alpha = rdash.DotProduct(residuals)/rdash.DotProduct(s);
// y_k = t_(k-1) - r_k - alpha_k * w_(k-1) + alpha_k s_k
s.Subtract(w, temp);
@@ -401,7 +395,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
// c_k = A d_k
matrix.Multiply(temp, c);
var cdot = c.DotProduct(c);
-
+
// cDot can only be zero if c is a zero vector
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
@@ -421,7 +415,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
if (((_numberOfBiCgStabSteps == 0) && (iterationNumber == 0)) || ShouldRunBiCgStabSteps(iterationNumber))
{
// sigma_k = (c_k * t_k) / (c_k * c_k)
- sigma = ctdot / cdot;
+ sigma = ctdot/cdot;
// eta_k = 0
eta = 0;
@@ -442,13 +436,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var ytdot = y.DotProduct(t);
var cydot = c.DotProduct(y);
- var denom = (cdot * ydot) - (cydot * cydot);
+ var denom = (cdot*ydot) - (cydot*cydot);
// sigma_k = ((y_k * y_k)(c_k * t_k) - (y_k * t_k)(c_k * y_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- sigma = ((ydot * ctdot) - (ytdot * cydot)) / denom;
+ sigma = ((ydot*ctdot) - (ytdot*cydot))/denom;
// eta_k = ((c_k * c_k)(y_k * t_k) - (y_k * c_k)(c_k * t_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- eta = ((cdot * ytdot) - (cydot * ctdot)) / denom;
+ eta = ((cdot*ytdot) - (cydot*ctdot))/denom;
}
// u_k = sigma_k s_k + eta_k (t_(k-1) - r_k + beta_(k-1) u_(k-1))
@@ -494,7 +488,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
- beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha / sigma * rdash.DotProduct(residuals) / rdash.DotProduct(t0) : 0;
+ beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);
@@ -523,7 +517,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -541,7 +535,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -557,17 +551,17 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
// - the calculation needs to be stopped from a numerical point of view (divergence, convergence etc.)
return (!status.TerminatesCalculation) && (!_hasBeenStopped);
}
-
+
///
/// Decide if to do steps with BiCgStab
///
/// Number of iteration
/// true if yes, otherwise false
- private bool ShouldRunBiCgStabSteps(int iterationNumber)
+ bool ShouldRunBiCgStabSteps(int iterationNumber)
{
// Run the first steps as BiCGStab
// The number of steps past a whole iteration set
- var difference = iterationNumber % (_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
+ var difference = iterationNumber%(_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
// Do steps with BiCGStab if:
// - The difference is zero or more (i.e. we have done zero or more complete cycles)
@@ -594,7 +588,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -630,7 +624,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs
index 43c5d407..dee85b70 100644
--- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs
@@ -59,23 +59,23 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to , in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -84,7 +84,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public TFQMR() : this(null, null)
+ public TFQMR()
+ : this(null, null)
{
}
@@ -107,7 +108,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public TFQMR(IIterator iterator) : this(null, iterator)
+ public TFQMR(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -119,7 +121,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public TFQMR(IPreConditioner preconditioner) : this(preconditioner, null)
+ public TFQMR(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -169,10 +172,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -260,17 +260,17 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
_preconditioner.Initialize(matrix);
var d = new DenseVector(input.Count);
- var r = new DenseVector(input);
+ var r = DenseVector.OfVector(input);
var uodd = new DenseVector(input.Count);
var ueven = new DenseVector(input.Count);
var v = new DenseVector(input.Count);
- var pseudoResiduals = new DenseVector(input);
+ var pseudoResiduals = DenseVector.OfVector(input);
var x = new DenseVector(input.Count);
var yodd = new DenseVector(input.Count);
- var yeven = new DenseVector(input);
+ var yeven = DenseVector.OfVector(input);
// Temp vectors
var temp = new DenseVector(input.Count);
@@ -286,12 +286,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
double theta = 0;
var tau = startNorm.Real;
- Complex rho = tau * tau;
+ Complex rho = tau*tau;
// Calculate the initial values for v
// M temp = yEven
_preconditioner.Approximate(yeven, temp);
-
+
// v = A temp
matrix.Multiply(temp, v);
@@ -315,7 +315,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
}
// alpha = rho / sigma
- alpha = rho / sigma;
+ alpha = rho/sigma;
// yOdd = yEven - alpha * v
v.Multiply(-alpha, temp1);
@@ -340,18 +340,18 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
temp2.CopyTo(pseudoResiduals);
// d = yOdd + theta * theta * eta / alpha * d
- d.Multiply(theta * theta * eta / alpha, temp);
+ d.Multiply(theta*theta*eta/alpha, temp);
yinternal.Add(temp, d);
// theta = ||pseudoResiduals||_2 / tau
- theta = pseudoResiduals.Norm(2).Real / tau;
- var c = 1 / Math.Sqrt(1 + (theta * theta));
+ theta = pseudoResiduals.Norm(2).Real/tau;
+ var c = 1/Math.Sqrt(1 + (theta*theta));
// tau = tau * theta * c
- tau *= theta * c;
+ tau *= theta*c;
// eta = c^2 * alpha
- eta = c * c * alpha;
+ eta = c*c*alpha;
// x = x + eta * d
d.Multiply(eta, temp1);
@@ -388,7 +388,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
}
var rhoNew = pseudoResiduals.DotProduct(r.Conjugate());
- var beta = rhoNew / rho;
+ var beta = rhoNew/rho;
// Update rho for the next loop
rho = rhoNew;
@@ -425,7 +425,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -443,7 +443,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -465,9 +465,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
///
/// Number to check
/// true if even, otherwise false
- private static bool IsEven(int number)
+ static bool IsEven(int number)
{
- return number % 2 == 0;
+ return number%2 == 0;
}
///
@@ -489,7 +489,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -525,7 +525,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs b/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
index 7eddd3b3..e281455a 100644
--- a/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/SparseVector.cs
@@ -81,6 +81,34 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
{
}
+ ///
+ /// Create a new sparse vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfVector(Vector vector)
+ {
+ return new SparseVector(SparseVectorStorage.OfVector(vector.Storage));
+ }
+
+ ///
+ /// Create a new sparse vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfEnumerable(IEnumerable enumerable)
+ {
+ return new SparseVector(SparseVectorStorage.OfEnumerable(enumerable));
+ }
+
+ ///
+ /// Create a new sparse vector and initialize each value using the provided init function.
+ ///
+ public static SparseVector Create(int length, Func init)
+ {
+ return new SparseVector(SparseVectorStorage.OfInit(length, init));
+ }
+
///
/// Create a new sparse vector with the given length.
/// All cells of the vector will be initialized with the provided value.
@@ -89,22 +117,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// If length is less than one.
[Obsolete("Use a dense vector instead. Scheduled for removal in v3.0.")]
public SparseVector(int length, Complex value)
- : this(new SparseVectorStorage(length))
+ : this(SparseVectorStorage.OfInit(length, i => value))
{
- if (value == Complex.Zero)
- {
- return;
- }
-
- var valueCount = _storage.ValueCount = length;
- var indices = _storage.Indices = new int[valueCount];
- var values = _storage.Values = new Complex[valueCount];
-
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = value;
- indices[i] = i;
- }
}
///
@@ -112,6 +126,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfVector instead. Scheduled for removal in v3.0.")]
public SparseVector(Vector other)
: this(SparseVectorStorage.OfVector(other.Storage))
{
@@ -122,19 +137,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
public SparseVector(IEnumerable other)
: this(SparseVectorStorage.OfEnumerable(other))
{
}
- ///
- /// Create a new sparse vector and initialize each value using the provided init function.
- ///
- public static SparseVector Create(int length, Func init)
- {
- return new SparseVector(SparseVectorStorage.OfInit(length, init));
- }
-
///
/// Creates a matrix with the given dimensions using the same storage type
/// as this vector.
@@ -965,7 +973,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
{
throw new FormatException();
}
- return new SparseVector(data.ToArray());
+ return OfEnumerable(data);
}
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs b/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
index e2f7c379..e8e20f92 100644
--- a/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/DenseVector.cs
@@ -82,18 +82,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
}
///
- /// Create a new dense vector with the given length.
- /// All cells of the vector will be initialized with the provided value.
- /// Zero-length vectors are not supported.
+ /// Create a new dense vector directly binding to a raw array.
+ /// The array is used directly without copying.
+ /// Very efficient, but changes to the array and the vector will affect each other.
///
- /// If length is less than one.
- public DenseVector(int length, Complex32 value)
- : this(length)
+ public DenseVector(Complex32[] storage)
+ : this(new DenseVectorStorage(storage.Length, storage))
{
- for (var index = 0; index < _values.Length; index++)
- {
- _values[index] = value;
- }
}
///
@@ -101,9 +96,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(Vector other)
- : this(DenseVectorStorage.OfVector(other.Storage))
+ public static DenseVector OfVector(Vector vector)
{
+ return new DenseVector(DenseVectorStorage.OfVector(vector.Storage));
}
///
@@ -111,19 +106,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(IEnumerable other)
- : this(DenseVectorStorage.OfEnumerable(other))
- {
- }
-
- ///
- /// Create a new dense vector directly binding to a raw array.
- /// The array is used directly without copying.
- /// Very efficient, but changes to the array and the vector will affect each other.
- ///
- public DenseVector(Complex32[] storage)
- : this(new DenseVectorStorage(storage.Length, storage))
+ public static DenseVector OfEnumerable(IEnumerable enumerable)
{
+ return new DenseVector(DenseVectorStorage.OfEnumerable(enumerable));
}
///
@@ -140,7 +125,41 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
public static DenseVector CreateRandom(int length, IContinuousDistribution distribution)
{
return new DenseVector(DenseVectorStorage.OfInit(length,
- i => new Complex32((float) distribution.Sample(), (float) distribution.Sample())));
+ i => new Complex32((float)distribution.Sample(), (float)distribution.Sample())));
+ }
+
+ ///
+ /// Create a new dense vector with the given length.
+ /// All cells of the vector will be initialized with the provided value.
+ /// Zero-length vectors are not supported.
+ ///
+ /// If length is less than one.
+ [Obsolete("Use DenseVector.Create instead. Scheduled for removal in v3.0.")]
+ public DenseVector(int length, Complex32 value)
+ : this(DenseVectorStorage.OfInit(length, i => value))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfVector instead. Scheduled for removal in v3.0.")]
+ public DenseVector(Vector other)
+ : this(DenseVectorStorage.OfVector(other.Storage))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
+ public DenseVector(IEnumerable other)
+ : this(DenseVectorStorage.OfEnumerable(other))
+ {
}
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs
index c5807e7d..26e5fa19 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs
@@ -69,35 +69,35 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to null, in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates the number of BiCGStab steps should be taken
/// before switching.
///
- private int _numberOfBiCgStabSteps = 1;
+ int _numberOfBiCgStabSteps = 1;
///
/// Indicates the number of GPBiCG steps should be taken
/// before switching.
///
- private int _numberOfGpbiCgSteps = 4;
+ int _numberOfGpbiCgSteps = 4;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -106,7 +106,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public GpBiCg() : this(null, null)
+ public GpBiCg()
+ : this(null, null)
{
}
@@ -129,7 +130,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public GpBiCg(IIterator iterator) : this(null, iterator)
+ public GpBiCg(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -141,7 +143,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public GpBiCg(IPreConditioner preconditioner) : this(preconditioner, null)
+ public GpBiCg(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -174,10 +177,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
public int NumberOfBiCgStabSteps
{
- get
- {
- return _numberOfBiCgStabSteps;
- }
+ get { return _numberOfBiCgStabSteps; }
set
{
@@ -186,7 +186,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
throw new ArgumentOutOfRangeException("value");
}
- _numberOfBiCgStabSteps = value;
+ _numberOfBiCgStabSteps = value;
}
}
@@ -196,10 +196,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
public int NumberOfGpBiCgSteps
{
- get
- {
- return _numberOfGpbiCgSteps;
- }
+ get { return _numberOfGpbiCgSteps; }
set
{
@@ -235,10 +232,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -328,7 +322,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
{
_preconditioner = new UnitPreconditioner();
}
-
+
_preconditioner.Initialize(matrix);
// x_0 is initial guess
@@ -345,7 +339,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
// Define the temporary vectors
// rDash_0 = r_0
- Vector rdash = new DenseVector(residuals);
+ Vector rdash = DenseVector.OfVector(residuals);
// t_-1 = 0
Vector t = new DenseVector(residuals.Count);
@@ -383,7 +377,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
matrix.Multiply(temp, s);
// alpha_k = (r*_0 * r_k) / (r*_0 * s_k)
- var alpha = rdash.DotProduct(residuals) / rdash.DotProduct(s);
+ var alpha = rdash.DotProduct(residuals)/rdash.DotProduct(s);
// y_k = t_(k-1) - r_k - alpha_k * w_(k-1) + alpha_k s_k
s.Subtract(w, temp);
@@ -406,7 +400,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
// c_k = A d_k
matrix.Multiply(temp, c);
var cdot = c.DotProduct(c);
-
+
// cDot can only be zero if c is a zero vector
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
@@ -426,7 +420,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
if (((_numberOfBiCgStabSteps == 0) && (iterationNumber == 0)) || ShouldRunBiCgStabSteps(iterationNumber))
{
// sigma_k = (c_k * t_k) / (c_k * c_k)
- sigma = ctdot / cdot;
+ sigma = ctdot/cdot;
// eta_k = 0
eta = 0;
@@ -447,13 +441,13 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var ytdot = y.DotProduct(t);
var cydot = c.DotProduct(y);
- var denom = (cdot * ydot) - (cydot * cydot);
+ var denom = (cdot*ydot) - (cydot*cydot);
// sigma_k = ((y_k * y_k)(c_k * t_k) - (y_k * t_k)(c_k * y_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- sigma = ((ydot * ctdot) - (ytdot * cydot)) / denom;
+ sigma = ((ydot*ctdot) - (ytdot*cydot))/denom;
// eta_k = ((c_k * c_k)(y_k * t_k) - (y_k * c_k)(c_k * t_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- eta = ((cdot * ytdot) - (cydot * ctdot)) / denom;
+ eta = ((cdot*ytdot) - (cydot*ctdot))/denom;
}
// u_k = sigma_k s_k + eta_k (t_(k-1) - r_k + beta_(k-1) u_(k-1))
@@ -499,7 +493,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
- beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha / sigma * rdash.DotProduct(residuals) / rdash.DotProduct(t0) : 0;
+ beta = (!sigma.Real.AlmostEqual(0, 1) || !sigma.Imaginary.AlmostEqual(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);
@@ -528,7 +522,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -546,7 +540,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -562,17 +556,17 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
// - the calculation needs to be stopped from a numerical point of view (divergence, convergence etc.)
return (!status.TerminatesCalculation) && (!_hasBeenStopped);
}
-
+
///
/// Decide if to do steps with BiCgStab
///
/// Number of iteration
/// true if yes, otherwise false
- private bool ShouldRunBiCgStabSteps(int iterationNumber)
+ bool ShouldRunBiCgStabSteps(int iterationNumber)
{
// Run the first steps as BiCGStab
// The number of steps past a whole iteration set
- var difference = iterationNumber % (_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
+ var difference = iterationNumber%(_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
// Do steps with BiCGStab if:
// - The difference is zero or more (i.e. we have done zero or more complete cycles)
@@ -599,7 +593,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -635,7 +629,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs
index b642c26b..7090da14 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs
@@ -59,23 +59,23 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to , in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -84,7 +84,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public TFQMR() : this(null, null)
+ public TFQMR()
+ : this(null, null)
{
}
@@ -107,7 +108,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public TFQMR(IIterator iterator) : this(null, iterator)
+ public TFQMR(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -119,7 +121,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public TFQMR(IPreConditioner preconditioner) : this(preconditioner, null)
+ public TFQMR(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -169,10 +172,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -265,17 +265,17 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
_preconditioner.Initialize(matrix);
var d = new DenseVector(input.Count);
- var r = new DenseVector(input);
+ var r = DenseVector.OfVector(input);
var uodd = new DenseVector(input.Count);
var ueven = new DenseVector(input.Count);
var v = new DenseVector(input.Count);
- var pseudoResiduals = new DenseVector(input);
+ var pseudoResiduals = DenseVector.OfVector(input);
var x = new DenseVector(input.Count);
var yodd = new DenseVector(input.Count);
- var yeven = new DenseVector(input);
+ var yeven = DenseVector.OfVector(input);
// Temp vectors
var temp = new DenseVector(input.Count);
@@ -291,12 +291,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
float theta = 0;
var tau = startNorm.Real;
- Complex32 rho = tau * tau;
+ Complex32 rho = tau*tau;
// Calculate the initial values for v
// M temp = yEven
_preconditioner.Approximate(yeven, temp);
-
+
// v = A temp
matrix.Multiply(temp, v);
@@ -320,7 +320,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
}
// alpha = rho / sigma
- alpha = rho / sigma;
+ alpha = rho/sigma;
// yOdd = yEven - alpha * v
v.Multiply(-alpha, temp1);
@@ -345,18 +345,18 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
temp2.CopyTo(pseudoResiduals);
// d = yOdd + theta * theta * eta / alpha * d
- d.Multiply(theta * theta * eta / alpha, temp);
+ d.Multiply(theta*theta*eta/alpha, temp);
yinternal.Add(temp, d);
// theta = ||pseudoResiduals||_2 / tau
- theta = pseudoResiduals.Norm(2).Real / tau;
- var c = 1 / (float)Math.Sqrt(1 + (theta * theta));
+ theta = pseudoResiduals.Norm(2).Real/tau;
+ var c = 1/(float) Math.Sqrt(1 + (theta*theta));
// tau = tau * theta * c
- tau *= theta * c;
+ tau *= theta*c;
// eta = c^2 * alpha
- eta = c * c * alpha;
+ eta = c*c*alpha;
// x = x + eta * d
d.Multiply(eta, temp1);
@@ -393,7 +393,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
}
var rhoNew = pseudoResiduals.DotProduct(r.Conjugate());
- var beta = rhoNew / rho;
+ var beta = rhoNew/rho;
// Update rho for the next loop
rho = rhoNew;
@@ -430,7 +430,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -448,7 +448,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -470,9 +470,9 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
///
/// Number to check
/// true if even, otherwise false
- private static bool IsEven(int number)
+ static bool IsEven(int number)
{
- return number % 2 == 0;
+ return number%2 == 0;
}
///
@@ -494,7 +494,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -530,7 +530,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs b/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
index cedaf48c..2423a792 100644
--- a/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
@@ -81,6 +81,34 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
{
}
+ ///
+ /// Create a new sparse vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfVector(Vector vector)
+ {
+ return new SparseVector(SparseVectorStorage.OfVector(vector.Storage));
+ }
+
+ ///
+ /// Create a new sparse vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfEnumerable(IEnumerable enumerable)
+ {
+ return new SparseVector(SparseVectorStorage.OfEnumerable(enumerable));
+ }
+
+ ///
+ /// Create a new sparse vector and initialize each value using the provided init function.
+ ///
+ public static SparseVector Create(int length, Func init)
+ {
+ return new SparseVector(SparseVectorStorage.OfInit(length, init));
+ }
+
///
/// Create a new sparse vector with the given length.
/// All cells of the vector will be initialized with the provided value.
@@ -89,22 +117,8 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// If length is less than one.
[Obsolete("Use a dense vector instead. Scheduled for removal in v3.0.")]
public SparseVector(int length, Complex32 value)
- : this(new SparseVectorStorage(length))
+ : this(SparseVectorStorage.OfInit(length, i => value))
{
- if (value == Complex32.Zero)
- {
- return;
- }
-
- var valueCount = _storage.ValueCount = length;
- var indices = _storage.Indices = new int[valueCount];
- var values = _storage.Values = new Complex32[valueCount];
-
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = value;
- indices[i] = i;
- }
}
///
@@ -112,6 +126,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfVector instead. Scheduled for removal in v3.0.")]
public SparseVector(Vector other)
: this(SparseVectorStorage.OfVector(other.Storage))
{
@@ -122,19 +137,12 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
public SparseVector(IEnumerable other)
: this(SparseVectorStorage.OfEnumerable(other))
{
}
- ///
- /// Create a new sparse vector and initialize each value using the provided init function.
- ///
- public static SparseVector Create(int length, Func init)
- {
- return new SparseVector(SparseVectorStorage.OfInit(length, init));
- }
-
///
/// Creates a matrix with the given dimensions using the same storage type
/// as this vector.
@@ -965,7 +973,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
{
throw new FormatException();
}
- return new SparseVector(data.ToArray());
+ return OfEnumerable(data);
}
///
diff --git a/src/Numerics/LinearAlgebra/Double/DenseVector.cs b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
index f4110545..bae631fa 100644
--- a/src/Numerics/LinearAlgebra/Double/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
@@ -83,18 +83,13 @@ namespace MathNet.Numerics.LinearAlgebra.Double
}
///
- /// Create a new dense vector with the given length.
- /// All cells of the vector will be initialized with the provided value.
- /// Zero-length vectors are not supported.
+ /// Create a new dense vector directly binding to a raw array.
+ /// The array is used directly without copying.
+ /// Very efficient, but changes to the array and the vector will affect each other.
///
- /// If length is less than one.
- public DenseVector(int length, double value)
- : this(length)
+ public DenseVector(double[] storage)
+ : this(new DenseVectorStorage(storage.Length, storage))
{
- for (var index = 0; index < _values.Length; index++)
- {
- _values[index] = value;
- }
}
///
@@ -102,9 +97,9 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(Vector other)
- : this(DenseVectorStorage.OfVector(other.Storage))
+ public static DenseVector OfVector(Vector vector)
{
+ return new DenseVector(DenseVectorStorage.OfVector(vector.Storage));
}
///
@@ -112,19 +107,9 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(IEnumerable other)
- : this(DenseVectorStorage.OfEnumerable(other))
- {
- }
-
- ///
- /// Create a new dense vector directly binding to a raw array.
- /// The array is used directly without copying.
- /// Very efficient, but changes to the array and the vector will affect each other.
- ///
- public DenseVector(double[] storage)
- : this(new DenseVectorStorage(storage.Length, storage))
+ public static DenseVector OfEnumerable(IEnumerable enumerable)
{
+ return new DenseVector(DenseVectorStorage.OfEnumerable(enumerable));
}
///
@@ -144,6 +129,40 @@ namespace MathNet.Numerics.LinearAlgebra.Double
i => distribution.Sample()));
}
+ ///
+ /// Create a new dense vector with the given length.
+ /// All cells of the vector will be initialized with the provided value.
+ /// Zero-length vectors are not supported.
+ ///
+ /// If length is less than one.
+ [Obsolete("Use DenseVector.Create instead. Scheduled for removal in v3.0.")]
+ public DenseVector(int length, double value)
+ : this(DenseVectorStorage.OfInit(length, i => value))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfVector instead. Scheduled for removal in v3.0.")]
+ public DenseVector(Vector other)
+ : this(DenseVectorStorage.OfVector(other.Storage))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
+ public DenseVector(IEnumerable other)
+ : this(DenseVectorStorage.OfEnumerable(other))
+ {
+ }
+
///
/// Gets the vector's data.
///
diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs
index eeb729db..c6b7077f 100644
--- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs
+++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs
@@ -344,7 +344,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
// Define the temporary vectors
// rDash_0 = r_0
- Vector rdash = new DenseVector(residuals);
+ Vector rdash = DenseVector.OfVector(residuals);
// t_-1 = 0
Vector t = new DenseVector(residuals.Count);
diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs
index 1a70a9be..a89a586b 100644
--- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs
+++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs
@@ -264,17 +264,17 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
_preconditioner.Initialize(matrix);
var d = new DenseVector(input.Count);
- var r = new DenseVector(input);
+ var r = DenseVector.OfVector(input);
var uodd = new DenseVector(input.Count);
var ueven = new DenseVector(input.Count);
var v = new DenseVector(input.Count);
- var pseudoResiduals = new DenseVector(input);
+ var pseudoResiduals = DenseVector.OfVector(input);
var x = new DenseVector(input.Count);
var yodd = new DenseVector(input.Count);
- var yeven = new DenseVector(input);
+ var yeven = DenseVector.OfVector(input);
// Temp vectors
var temp = new DenseVector(input.Count);
diff --git a/src/Numerics/LinearAlgebra/Double/SparseVector.cs b/src/Numerics/LinearAlgebra/Double/SparseVector.cs
index e3a55baf..90f66900 100644
--- a/src/Numerics/LinearAlgebra/Double/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Double/SparseVector.cs
@@ -81,6 +81,34 @@ namespace MathNet.Numerics.LinearAlgebra.Double
{
}
+ ///
+ /// Create a new sparse vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfVector(Vector vector)
+ {
+ return new SparseVector(SparseVectorStorage.OfVector(vector.Storage));
+ }
+
+ ///
+ /// Create a new sparse vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfEnumerable(IEnumerable enumerable)
+ {
+ return new SparseVector(SparseVectorStorage.OfEnumerable(enumerable));
+ }
+
+ ///
+ /// Create a new sparse vector and initialize each value using the provided init function.
+ ///
+ public static SparseVector Create(int length, Func init)
+ {
+ return new SparseVector(SparseVectorStorage.OfInit(length, init));
+ }
+
///
/// Create a new sparse vector with the given length.
/// All cells of the vector will be initialized with the provided value.
@@ -89,22 +117,8 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// If length is less than one.
[Obsolete("Use a dense vector instead. Scheduled for removal in v3.0.")]
public SparseVector(int length, double value)
- : this(new SparseVectorStorage(length))
+ : this(SparseVectorStorage.OfInit(length, i => value))
{
- if (value == 0.0)
- {
- return;
- }
-
- var valueCount = _storage.ValueCount = length;
- var indices = _storage.Indices = new int[valueCount];
- var values = _storage.Values = new double[valueCount];
-
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = value;
- indices[i] = i;
- }
}
///
@@ -112,6 +126,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfVector instead. Scheduled for removal in v3.0.")]
public SparseVector(Vector other)
: this(SparseVectorStorage.OfVector(other.Storage))
{
@@ -122,19 +137,12 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
public SparseVector(IEnumerable other)
: this(SparseVectorStorage.OfEnumerable(other))
{
}
- ///
- /// Create a new sparse vector and initialize each value using the provided init function.
- ///
- public static SparseVector Create(int length, Func init)
- {
- return new SparseVector(SparseVectorStorage.OfInit(length, init));
- }
-
///
/// Creates a matrix with the given dimensions using the same storage type
/// as this vector.
@@ -969,9 +977,9 @@ namespace MathNet.Numerics.LinearAlgebra.Double
// parsing
var tokens = value.Split(new[] { formatProvider.GetTextInfo().ListSeparator, " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
- var data = tokens.Select(t => Double.Parse(t, NumberStyles.Any, formatProvider)).ToArray();
- if (data.Length == 0) throw new FormatException();
- return new SparseVector(data);
+ var data = tokens.Select(t => Double.Parse(t, NumberStyles.Any, formatProvider)).ToList();
+ if (data.Count == 0) throw new FormatException();
+ return OfEnumerable(data);
}
///
diff --git a/src/Numerics/LinearAlgebra/Single/DenseVector.cs b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
index ac4694f8..52585cca 100644
--- a/src/Numerics/LinearAlgebra/Single/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
@@ -82,18 +82,13 @@ namespace MathNet.Numerics.LinearAlgebra.Single
}
///
- /// Create a new dense vector with the given length.
- /// All cells of the vector will be initialized with the provided value.
- /// Zero-length vectors are not supported.
+ /// Create a new dense vector directly binding to a raw array.
+ /// The array is used directly without copying.
+ /// Very efficient, but changes to the array and the vector will affect each other.
///
- /// If length is less than one.
- public DenseVector(int length, float value)
- : this(length)
+ public DenseVector(float[] storage)
+ : this(new DenseVectorStorage(storage.Length, storage))
{
- for (var index = 0; index < _values.Length; index++)
- {
- _values[index] = value;
- }
}
///
@@ -101,9 +96,9 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(Vector other)
- : this(DenseVectorStorage.OfVector(other.Storage))
+ public static DenseVector OfVector(Vector vector)
{
+ return new DenseVector(DenseVectorStorage.OfVector(vector.Storage));
}
///
@@ -111,19 +106,9 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
- public DenseVector(IEnumerable other)
- : this(DenseVectorStorage.OfEnumerable(other))
- {
- }
-
- ///
- /// Create a new dense vector directly binding to a raw array.
- /// The array is used directly without copying.
- /// Very efficient, but changes to the array and the vector will affect each other.
- ///
- public DenseVector(float[] storage)
- : this(new DenseVectorStorage(storage.Length, storage))
+ public static DenseVector OfEnumerable(IEnumerable enumerable)
{
+ return new DenseVector(DenseVectorStorage.OfEnumerable(enumerable));
}
///
@@ -140,7 +125,41 @@ namespace MathNet.Numerics.LinearAlgebra.Single
public static DenseVector CreateRandom(int length, IContinuousDistribution distribution)
{
return new DenseVector(DenseVectorStorage.OfInit(length,
- i => (float) distribution.Sample()));
+ i => (float)distribution.Sample()));
+ }
+
+ ///
+ /// Create a new dense vector with the given length.
+ /// All cells of the vector will be initialized with the provided value.
+ /// Zero-length vectors are not supported.
+ ///
+ /// If length is less than one.
+ [Obsolete("Use DenseVector.Create instead. Scheduled for removal in v3.0.")]
+ public DenseVector(int length, float value)
+ : this(DenseVectorStorage.OfInit(length, i => value))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfVector instead. Scheduled for removal in v3.0.")]
+ public DenseVector(Vector other)
+ : this(DenseVectorStorage.OfVector(other.Storage))
+ {
+ }
+
+ ///
+ /// Create a new dense vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ [Obsolete("Use DenseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
+ public DenseVector(IEnumerable other)
+ : this(DenseVectorStorage.OfEnumerable(other))
+ {
}
///
diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs
index 71e96b39..29cdc8f4 100644
--- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs
+++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs
@@ -68,35 +68,35 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to null, in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates the number of BiCGStab steps should be taken
/// before switching.
///
- private int _numberOfBiCgStabSteps = 1;
+ int _numberOfBiCgStabSteps = 1;
///
/// Indicates the number of GPBiCG steps should be taken
/// before switching.
///
- private int _numberOfGpbiCgSteps = 4;
+ int _numberOfGpbiCgSteps = 4;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -105,7 +105,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public GpBiCg() : this(null, null)
+ public GpBiCg()
+ : this(null, null)
{
}
@@ -128,7 +129,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public GpBiCg(IIterator iterator) : this(null, iterator)
+ public GpBiCg(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -140,7 +142,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public GpBiCg(IPreConditioner preconditioner) : this(preconditioner, null)
+ public GpBiCg(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -173,10 +176,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
public int NumberOfBiCgStabSteps
{
- get
- {
- return _numberOfBiCgStabSteps;
- }
+ get { return _numberOfBiCgStabSteps; }
set
{
@@ -185,7 +185,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
throw new ArgumentOutOfRangeException("value");
}
- _numberOfBiCgStabSteps = value;
+ _numberOfBiCgStabSteps = value;
}
}
@@ -195,10 +195,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
public int NumberOfGpBiCgSteps
{
- get
- {
- return _numberOfGpbiCgSteps;
- }
+ get { return _numberOfGpbiCgSteps; }
set
{
@@ -234,10 +231,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -327,7 +321,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
{
_preconditioner = new UnitPreconditioner();
}
-
+
_preconditioner.Initialize(matrix);
// x_0 is initial guess
@@ -344,7 +338,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
// Define the temporary vectors
// rDash_0 = r_0
- Vector rdash = new DenseVector(residuals);
+ Vector rdash = DenseVector.OfVector(residuals);
// t_-1 = 0
Vector t = new DenseVector(residuals.Count);
@@ -382,7 +376,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
matrix.Multiply(temp, s);
// alpha_k = (r*_0 * r_k) / (r*_0 * s_k)
- var alpha = rdash.DotProduct(residuals) / rdash.DotProduct(s);
+ var alpha = rdash.DotProduct(residuals)/rdash.DotProduct(s);
// y_k = t_(k-1) - r_k - alpha_k * w_(k-1) + alpha_k s_k
s.Subtract(w, temp);
@@ -405,7 +399,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
// c_k = A d_k
matrix.Multiply(temp, c);
var cdot = c.DotProduct(c);
-
+
// cDot can only be zero if c is a zero vector
// We'll set cDot to 1 if it is zero to prevent NaN's
// Note that the calculation should continue fine because
@@ -425,7 +419,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
if (((_numberOfBiCgStabSteps == 0) && (iterationNumber == 0)) || ShouldRunBiCgStabSteps(iterationNumber))
{
// sigma_k = (c_k * t_k) / (c_k * c_k)
- sigma = ctdot / cdot;
+ sigma = ctdot/cdot;
// eta_k = 0
eta = 0;
@@ -446,13 +440,13 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var ytdot = y.DotProduct(t);
var cydot = c.DotProduct(y);
- var denom = (cdot * ydot) - (cydot * cydot);
+ var denom = (cdot*ydot) - (cydot*cydot);
// sigma_k = ((y_k * y_k)(c_k * t_k) - (y_k * t_k)(c_k * y_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- sigma = ((ydot * ctdot) - (ytdot * cydot)) / denom;
+ sigma = ((ydot*ctdot) - (ytdot*cydot))/denom;
// eta_k = ((c_k * c_k)(y_k * t_k) - (y_k * c_k)(c_k * t_k)) / ((c_k * c_k)(y_k * y_k) - (y_k * c_k)(c_k * y_k))
- eta = ((cdot * ytdot) - (cydot * ctdot)) / denom;
+ eta = ((cdot*ytdot) - (cydot*ctdot))/denom;
}
// u_k = sigma_k s_k + eta_k (t_(k-1) - r_k + beta_(k-1) u_(k-1))
@@ -498,7 +492,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
// beta_k = alpha_k / sigma_k * (r*_0 * r_(k+1)) / (r*_0 * r_k)
// But first we check if there is a possible NaN. If so just reset beta to zero.
- beta = (!sigma.AlmostEqual(0, 1)) ? alpha / sigma * rdash.DotProduct(residuals) / rdash.DotProduct(t0) : 0;
+ beta = (!sigma.AlmostEqual(0, 1)) ? alpha/sigma*rdash.DotProduct(residuals)/rdash.DotProduct(t0) : 0;
// w_k = c_k + beta_k s_k
s.Multiply(beta, temp2);
@@ -527,7 +521,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -545,7 +539,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -561,17 +555,17 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
// - the calculation needs to be stopped from a numerical point of view (divergence, convergence etc.)
return (!status.TerminatesCalculation) && (!_hasBeenStopped);
}
-
+
///
/// Decide if to do steps with BiCgStab
///
/// Number of iteration
/// true if yes, otherwise false
- private bool ShouldRunBiCgStabSteps(int iterationNumber)
+ bool ShouldRunBiCgStabSteps(int iterationNumber)
{
// Run the first steps as BiCGStab
// The number of steps past a whole iteration set
- var difference = iterationNumber % (_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
+ var difference = iterationNumber%(_numberOfBiCgStabSteps + _numberOfGpbiCgSteps);
// Do steps with BiCGStab if:
// - The difference is zero or more (i.e. we have done zero or more complete cycles)
@@ -598,7 +592,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -634,7 +628,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs
index 2c922a0d..59c19827 100644
--- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs
+++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs
@@ -58,23 +58,23 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// The status used if there is no status, i.e. the solver hasn't run yet and there is no
/// iterator.
///
- private static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
+ static readonly ICalculationStatus DefaultStatus = new CalculationIndetermined();
///
/// The preconditioner that will be used. Can be set to , in which case the default
/// pre-conditioner will be used.
///
- private IPreConditioner _preconditioner;
+ IPreConditioner _preconditioner;
///
/// The iterative process controller.
///
- private IIterator _iterator;
+ IIterator _iterator;
///
/// Indicates if the user has stopped the solver.
///
- private bool _hasBeenStopped;
+ bool _hasBeenStopped;
///
/// Initializes a new instance of the class.
@@ -83,7 +83,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// When using this constructor the solver will use the with
/// the standard settings and a default preconditioner.
///
- public TFQMR() : this(null, null)
+ public TFQMR()
+ : this(null, null)
{
}
@@ -106,7 +107,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
///
/// The that will be used to monitor the iterative process.
- public TFQMR(IIterator iterator) : this(null, iterator)
+ public TFQMR(IIterator iterator)
+ : this(null, iterator)
{
}
@@ -118,7 +120,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// the standard settings.
///
/// The that will be used to precondition the matrix equation.
- public TFQMR(IPreConditioner preconditioner) : this(preconditioner, null)
+ public TFQMR(IPreConditioner preconditioner)
+ : this(preconditioner, null)
{
}
@@ -168,10 +171,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
public ICalculationStatus IterationResult
{
- get
- {
- return (_iterator != null) ? _iterator.Status : DefaultStatus;
- }
+ get { return (_iterator != null) ? _iterator.Status : DefaultStatus; }
}
///
@@ -264,17 +264,17 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
_preconditioner.Initialize(matrix);
var d = new DenseVector(input.Count);
- var r = new DenseVector(input);
+ var r = DenseVector.OfVector(input);
var uodd = new DenseVector(input.Count);
var ueven = new DenseVector(input.Count);
var v = new DenseVector(input.Count);
- var pseudoResiduals = new DenseVector(input);
+ var pseudoResiduals = DenseVector.OfVector(input);
var x = new DenseVector(input.Count);
var yodd = new DenseVector(input.Count);
- var yeven = new DenseVector(input);
+ var yeven = DenseVector.OfVector(input);
// Temp vectors
var temp = new DenseVector(input.Count);
@@ -290,12 +290,12 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
float theta = 0;
var tau = startNorm;
- var rho = tau * tau;
+ var rho = tau*tau;
// Calculate the initial values for v
// M temp = yEven
_preconditioner.Approximate(yeven, temp);
-
+
// v = A temp
matrix.Multiply(temp, v);
@@ -319,7 +319,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
}
// alpha = rho / sigma
- alpha = rho / sigma;
+ alpha = rho/sigma;
// yOdd = yEven - alpha * v
v.Multiply(-alpha, temp1);
@@ -344,18 +344,18 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
temp2.CopyTo(pseudoResiduals);
// d = yOdd + theta * theta * eta / alpha * d
- d.Multiply(theta * theta * eta / alpha, temp);
+ d.Multiply(theta*theta*eta/alpha, temp);
yinternal.Add(temp, d);
// theta = ||pseudoResiduals||_2 / tau
- theta = pseudoResiduals.Norm(2) / tau;
- var c = 1 / (float)Math.Sqrt(1 + (theta * theta));
+ theta = pseudoResiduals.Norm(2)/tau;
+ var c = 1/(float) Math.Sqrt(1 + (theta*theta));
// tau = tau * theta * c
- tau *= theta * c;
+ tau *= theta*c;
// eta = c^2 * alpha
- eta = c * c * alpha;
+ eta = c*c*alpha;
// x = x + eta * d
d.Multiply(eta, temp1);
@@ -392,7 +392,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
}
var rhoNew = pseudoResiduals.DotProduct(r);
- var beta = rhoNew / rho;
+ var beta = rhoNew/rho;
// Update rho for the next loop
rho = rhoNew;
@@ -429,7 +429,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// Residual values in .
/// Instance of the x.
/// Instance of the b.
- private static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
+ static void CalculateTrueResidual(Matrix matrix, Vector residual, Vector x, Vector b)
{
// -Ax = residual
matrix.Multiply(x, residual);
@@ -447,7 +447,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
/// Source .
/// Residual .
/// true if continue, otherwise false
- private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
+ bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals)
{
if (_hasBeenStopped)
{
@@ -469,9 +469,9 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
///
/// Number to check
/// true if even, otherwise false
- private static bool IsEven(int number)
+ static bool IsEven(int number)
{
- return number % 2 == 0;
+ return number%2 == 0;
}
///
@@ -493,7 +493,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
throw new ArgumentNullException("input");
}
- var result = (Matrix)matrix.CreateMatrix(input.RowCount, input.ColumnCount);
+ var result = (Matrix) matrix.CreateMatrix(input.RowCount, input.ColumnCount);
Solve(matrix, input, result);
return result;
}
@@ -529,7 +529,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
for (var column = 0; column < input.ColumnCount; column++)
{
- var solution = Solve(matrix, (Vector)input.Column(column));
+ var solution = Solve(matrix, (Vector) input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Item1, column, element.Item2);
diff --git a/src/Numerics/LinearAlgebra/Single/SparseVector.cs b/src/Numerics/LinearAlgebra/Single/SparseVector.cs
index 1817a3d2..987f14b0 100644
--- a/src/Numerics/LinearAlgebra/Single/SparseVector.cs
+++ b/src/Numerics/LinearAlgebra/Single/SparseVector.cs
@@ -81,6 +81,34 @@ namespace MathNet.Numerics.LinearAlgebra.Single
{
}
+ ///
+ /// Create a new sparse vector as a copy of the given other vector.
+ /// This new vector will be independent from the other vector.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfVector(Vector vector)
+ {
+ return new SparseVector(SparseVectorStorage.OfVector(vector.Storage));
+ }
+
+ ///
+ /// Create a new sparse vector as a copy of the given enumerable.
+ /// This new vector will be independent from the enumerable.
+ /// A new memory block will be allocated for storing the vector.
+ ///
+ public static SparseVector OfEnumerable(IEnumerable enumerable)
+ {
+ return new SparseVector(SparseVectorStorage.OfEnumerable(enumerable));
+ }
+
+ ///
+ /// Create a new sparse vector and initialize each value using the provided init function.
+ ///
+ public static SparseVector Create(int length, Func init)
+ {
+ return new SparseVector(SparseVectorStorage.OfInit(length, init));
+ }
+
///
/// Create a new sparse vector with the given length.
/// All cells of the vector will be initialized with the provided value.
@@ -89,22 +117,8 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// If length is less than one.
[Obsolete("Use a dense vector instead. Scheduled for removal in v3.0.")]
public SparseVector(int length, float value)
- : this(new SparseVectorStorage(length))
+ : this(SparseVectorStorage.OfInit(length, i => value))
{
- if (value == 0.0)
- {
- return;
- }
-
- var valueCount = _storage.ValueCount = length;
- var indices = _storage.Indices = new int[valueCount];
- var values = _storage.Values = new float[valueCount];
-
- for (int i = 0; i < values.Length; i++)
- {
- values[i] = value;
- indices[i] = i;
- }
}
///
@@ -112,6 +126,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// This new vector will be independent from the other vector.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfVector instead. Scheduled for removal in v3.0.")]
public SparseVector(Vector other)
: this(SparseVectorStorage.OfVector(other.Storage))
{
@@ -122,19 +137,12 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// This new vector will be independent from the enumerable.
/// A new memory block will be allocated for storing the vector.
///
+ [Obsolete("Use SparseVector.OfEnumerable instead. Scheduled for removal in v3.0.")]
public SparseVector(IEnumerable other)
: this(SparseVectorStorage.OfEnumerable(other))
{
}
- ///
- /// Create a new sparse vector and initialize each value using the provided init function.
- ///
- public static SparseVector Create(int length, Func init)
- {
- return new SparseVector(SparseVectorStorage.OfInit(length, init));
- }
-
///
/// Creates a matrix with the given dimensions using the same storage type
/// as this vector.
@@ -973,9 +981,9 @@ namespace MathNet.Numerics.LinearAlgebra.Single
// parsing
var tokens = value.Split(new[] { formatProvider.GetTextInfo().ListSeparator, " ", "\t" }, StringSplitOptions.RemoveEmptyEntries);
- var data = tokens.Select(t => Single.Parse(t, NumberStyles.Any, formatProvider)).ToArray();
- if (data.Length == 0) throw new FormatException();
- return new SparseVector(data);
+ var data = tokens.Select(t => Single.Parse(t, NumberStyles.Any, formatProvider)).ToList();
+ if (data.Count == 0) throw new FormatException();
+ return OfEnumerable(data);
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs
index 42037cf5..1c104339 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -90,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateDenseVectorFromAnotherDenseVector()
{
var vector = new DenseVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -105,8 +109,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanCreateDenseVectorFromAnotherVector()
{
- var vector = (Vector)new DenseVector(Data);
- var other = new DenseVector(vector);
+ var vector = (Vector) new DenseVector(Data);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -122,7 +126,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateDenseVectorFromUserDefinedVector()
{
var vector = new UserDefinedVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
for (var i = 0; i < Data.Length; i++)
{
@@ -136,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanCreateDenseVectorWithConstantValues()
{
- var vector = new DenseVector(5, 5);
+ var vector = DenseVector.Create(5, i => 5);
foreach (var t in vector)
{
Assert.AreEqual(t, new Complex(5.0, 0));
@@ -162,8 +166,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanConvertDenseVectorToArray()
{
var vector = new DenseVector(Data);
- var array = (Complex[])vector;
- Assert.IsInstanceOf(typeof(Complex[]), array);
+ var array = (Complex[]) vector;
+ Assert.IsInstanceOf(typeof (Complex[]), array);
CollectionAssert.AreEqual(vector, array);
}
@@ -173,9 +177,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanConvertArrayToDenseVector()
{
- var array = new[] { new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1) };
- var vector = (DenseVector)array;
- Assert.IsInstanceOf(typeof(DenseVector), vector);
+ var array = new[] {new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1)};
+ var vector = (DenseVector) array;
+ Assert.IsInstanceOf(typeof (DenseVector), vector);
CollectionAssert.AreEqual(array, array);
}
@@ -207,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * 2.0, result[i]);
+ Assert.AreEqual(Data[i]*2.0, result[i]);
}
}
@@ -250,31 +254,31 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanMultiplyDenseVectorByScalarUsingOperators()
{
var vector = new DenseVector(Data);
- vector = vector * new Complex(2.0, 1);
+ vector = vector*new Complex(2.0, 1);
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
- vector = vector * 1.0;
+ vector = vector*1.0;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
vector = new DenseVector(Data);
- vector = new Complex(2.0, 1) * vector;
+ vector = new Complex(2.0, 1)*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
- vector = 1.0 * vector;
+ vector = 1.0*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
}
@@ -285,17 +289,17 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanDivideDenseVectorByComplexUsingOperators()
{
var vector = new DenseVector(Data);
- vector = vector / new Complex(2.0, 1);
+ vector = vector/new Complex(2.0, 1);
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex(2.0, 1), vector[i], 14);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
- vector = vector / 1.0;
+ vector = vector/1.0;
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex(2.0, 1), vector[i], 14);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
}
@@ -312,7 +316,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < vector2.Count; j++)
{
- Assert.AreEqual(m[i, j], vector1[i] * vector2[j]);
+ Assert.AreEqual(m[i, j], vector1[i]*vector2[j]);
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
index c70b2c44..0af144bf 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
@@ -103,7 +103,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
/// The new vector.
protected override Vector CreateVector(Complex[] data)
{
- return new SparseVector(data);
+ return SparseVector.OfEnumerable(data);
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs
index 94efd775..27555aca 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -44,12 +48,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -87,16 +91,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -132,16 +136,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
matrix.Multiply(new Complex(Math.PI, Math.PI), matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -210,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -255,16 +259,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new BiCgStab(monitor);
var resultx = solver.Solve(matrixA, vectorb);
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
@@ -287,10 +291,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new BiCgStab(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -300,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs
index 502478f9..9dd1f7a5 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
// Solve equation Ax = y
@@ -131,16 +135,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
matrix.Multiply(Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
@@ -210,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
@@ -256,16 +260,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new GpBiCg(monitor);
var resultx = solver.Solve(matrixA, vectorb);
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
@@ -288,10 +292,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new GpBiCg(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -301,7 +305,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs
index db0ebf20..db59e9bb 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative
{
using System;
@@ -42,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -85,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
@@ -131,16 +136,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
matrix.Multiply(Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
// Solve equation Ax = y
@@ -209,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
// Solve equation Ax = y
@@ -254,16 +259,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new MlkBiCgStab(monitor);
var resultx = solver.Solve(matrixA, vectorb);
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
@@ -286,10 +291,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new MlkBiCgStab(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -299,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs
index dffdf776..329c0461 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterative
{
using System;
@@ -42,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -85,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
@@ -131,16 +136,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
matrix.Multiply(Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
// Solve equation Ax = y
@@ -209,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
// Solve equation Ax = y
@@ -254,16 +259,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new TFQMR(monitor);
var resultx = solver.Solve(matrixA, vectorb);
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
@@ -286,10 +291,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new TFQMR(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -299,7 +304,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
index 76136223..f0412326 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -57,7 +61,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
[Test]
public void CreateWithEmptyCollection()
{
- var iterator = new Iterator(new IIterationStopCriterium[] { });
+ var iterator = new Iterator(new IIterationStopCriterium[] {});
Assert.IsNotNull(iterator, "Should have an iterator");
Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria");
}
@@ -68,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
[Test]
public void CreateWithCollectionWithNulls()
{
- var iterator = new Iterator(new IIterationStopCriterium[] { null, null });
+ var iterator = new Iterator(new IIterationStopCriterium[] {null, null});
Assert.IsNotNull(iterator, "Should have an iterator");
Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria");
}
@@ -80,10 +84,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void CreateWithDuplicatesThrowsArgumentException()
{
Assert.Throws(() => new Iterator(new IIterationStopCriterium[]
- {
- new FailureStopCriterium(),
- new FailureStopCriterium()
- }));
+ {
+ new FailureStopCriterium(),
+ new FailureStopCriterium()
+ }));
}
///
@@ -93,12 +97,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void CreateWithCollection()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.IsNotNull(iterator, "Should have an iterator");
@@ -140,12 +144,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void Add()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator();
Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -170,12 +174,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void RemoveWithNullStopCriteriumThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -189,11 +193,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void RemoveWithNonExistingStopCriterium()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -208,12 +212,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void Remove()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -233,9 +237,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
var iterator = new Iterator();
Assert.Throws(() => iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -245,19 +249,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -267,19 +271,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
null,
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -289,19 +293,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 5),
null,
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 6)));
}
///
@@ -311,18 +315,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -333,29 +337,29 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void DetermineStatus()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(1)
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(1)
+ };
var iterator = new Iterator(criteria);
// First step, nothing should happen.
iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationRunning), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationRunning), iterator.Status, "Incorrect status");
// Second step, should run out of iterations.
iterator.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationStoppedWithoutConvergence), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationStoppedWithoutConvergence), iterator.Status, "Incorrect status");
}
///
@@ -365,27 +369,27 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void ResetToPrecalculationState()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(1)
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(1)
+ };
var iterator = new Iterator(criteria);
// First step, nothing should happen.
iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationRunning), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationRunning), iterator.Status, "Incorrect status");
iterator.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), iterator.Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[0].Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[1].Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[2].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), iterator.Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[0].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[1].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[2].Status, "Incorrect status");
}
///
@@ -395,17 +399,17 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
public void Clone()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
var clonedIterator = iterator.Clone();
- Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type");
+ Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type");
var clone = clonedIterator as Iterator;
Assert.IsNotNull(clone);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
index 366c7f5a..082b2b69 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -109,9 +113,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new DivergenceStopCriterium(0.5, 15);
Assert.Throws(() => criterium.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -123,8 +127,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new DivergenceStopCriterium(0.5, 15);
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -144,11 +148,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
{
criterium.DetermineStatus(
i,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex((i + 1) * (Increase + 0.1), 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex((i + 1)*(Increase + 0.1), 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
}
@@ -164,15 +168,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new DivergenceStopCriterium(Increase, Iterations);
// Add residuals. We should not diverge because we won't have enough increase
- for (var i = 0; i < Iterations * 2; i++)
+ for (var i = 0; i < Iterations*2; i++)
{
criterium.DetermineStatus(
i,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex((i + 1) * (Increase - 0.01), 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex((i + 1)*(Increase - 0.01), 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
}
@@ -192,21 +196,21 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
{
criterium.DetermineStatus(
i,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex((i + 1) * (Increase - 0.01), 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex((i + 1)*(Increase - 0.01), 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
// Now make it fail by throwing in a NaN
criterium.DetermineStatus(
Iterations,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(double.NaN, 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(double.NaN, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
}
///
@@ -227,22 +231,22 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
previous *= 1 + Increase + 0.01;
criterium.DetermineStatus(
i,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(previous, 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(previous, 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
// Add the final residual. Now we should have divergence
previous *= 1 + Increase + 0.01;
criterium.DetermineStatus(
Iterations - 1,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(previous, 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(previous, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
}
///
@@ -259,18 +263,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
// Add residuals. Blow it up instantly
criterium.DetermineStatus(
1,
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(1.0, 0) }),
- new DenseVector(new[] { new Complex(double.NaN, 0) }));
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(1.0, 0)}),
+ new DenseVector(new[] {new Complex(double.NaN, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
// Reset the state
criterium.ResetToPrecalculationState();
Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum");
Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Status check fail.");
}
///
@@ -286,7 +290,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(DivergenceStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (DivergenceStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as DivergenceStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs
index a59f5ca1..6e20d54c 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/FailureStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -58,7 +62,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(-1, new DenseVector(3, 4), new DenseVector(3, 5), new DenseVector(3, 6)));
+ Assert.Throws(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 5), DenseVector.Create(3, i => 6)));
}
///
@@ -70,7 +74,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, null, new DenseVector(3, 6), new DenseVector(4, 4)));
+ Assert.Throws(() => criterium.DetermineStatus(1, null, DenseVector.Create(3, i => 6), DenseVector.Create(4, i => 4)));
}
///
@@ -82,7 +86,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, new DenseVector(3, 4), new DenseVector(3, 6), null));
+ Assert.Throws(() => criterium.DetermineStatus(1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 6), null));
}
///
@@ -94,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, new DenseVector(3, 4), new DenseVector(3, 6), new DenseVector(4, 4)));
+ Assert.Throws(() => criterium.DetermineStatus(1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 6), DenseVector.Create(4, i => 4)));
}
///
@@ -106,12 +110,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(1.0, 0), new Complex(1.0, 0), new Complex(2.0, 0) });
- var source = new DenseVector(new[] { new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0) });
- var residual = new DenseVector(new[] { new Complex(1000, 0), new Complex(double.NaN, 0), new Complex(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex(1.0, 0), new Complex(1.0, 0), new Complex(2.0, 0)});
+ var source = new DenseVector(new[] {new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0)});
+ var residual = new DenseVector(new[] {new Complex(1000, 0), new Complex(double.NaN, 0), new Complex(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationFailure), criterium.Status, "Should be failed");
+ Assert.IsInstanceOf(typeof (CalculationFailure), criterium.Status, "Should be failed");
}
///
@@ -123,12 +127,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(1.0, 0), new Complex(1.0, 0), new Complex(double.NaN, 0) });
- var source = new DenseVector(new[] { new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0) });
- var residual = new DenseVector(new[] { new Complex(1000, 0), new Complex(1000, 0), new Complex(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex(1.0, 0), new Complex(1.0, 0), new Complex(double.NaN, 0)});
+ var source = new DenseVector(new[] {new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0)});
+ var residual = new DenseVector(new[] {new Complex(1000, 0), new Complex(1000, 0), new Complex(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationFailure), criterium.Status, "Should be failed");
+ Assert.IsInstanceOf(typeof (CalculationFailure), criterium.Status, "Should be failed");
}
///
@@ -140,12 +144,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(3.0, 0), new Complex(2.0, 0), new Complex(1, 0) });
- var source = new DenseVector(new[] { new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0) });
- var residual = new DenseVector(new[] { new Complex(1.0, 0), new Complex(2.0, 0), new Complex(3, 0) });
+ var solution = new DenseVector(new[] {new Complex(3.0, 0), new Complex(2.0, 0), new Complex(1, 0)});
+ var source = new DenseVector(new[] {new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0)});
+ var residual = new DenseVector(new[] {new Complex(1.0, 0), new Complex(2.0, 0), new Complex(3, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
}
///
@@ -157,15 +161,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(1.0, 0), new Complex(1.0, 0), new Complex(2, 0) });
- var source = new DenseVector(new[] { new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0) });
- var residual = new DenseVector(new[] { new Complex(1000, 0), new Complex(1000, 0), new Complex(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex(1.0, 0), new Complex(1.0, 0), new Complex(2, 0)});
+ var source = new DenseVector(new[] {new Complex(1001.0, 0), Complex.Zero, new Complex(2003.0, 0)});
+ var residual = new DenseVector(new[] {new Complex(1000, 0), new Complex(1000, 0), new Complex(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -177,7 +181,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(FailureStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (FailureStopCriterium), clone, "Wrong criterium type");
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
index af2c2f39..a6d24151 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -81,7 +85,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- Assert.Throws(() => criterium.DetermineStatus(-1, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3)));
+ Assert.Throws(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
}
///
@@ -93,11 +97,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- criterium.DetermineStatus(5, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
- criterium.DetermineStatus(10, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationStoppedWithoutConvergence), criterium.Status, "Should be finished");
+ criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationStoppedWithoutConvergence), criterium.Status, "Should be finished");
}
///
@@ -109,11 +113,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- criterium.DetermineStatus(5, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -127,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(IterationCountStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
index 29547626..ebf36862 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -107,9 +111,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -124,8 +128,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
null,
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -139,9 +143,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
+ DenseVector.Create(3, i => 4),
null,
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 6)));
}
///
@@ -155,8 +159,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -171,9 +175,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(4, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4)));
+ DenseVector.Create(4, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4)));
}
///
@@ -187,9 +191,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(4, 4),
- new DenseVector(3, 4)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(4, i => 4),
+ DenseVector.Create(3, i => 4)));
}
///
@@ -203,9 +207,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(4, 4)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(4, i => 4)));
}
///
@@ -217,12 +221,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new ResidualStopCriterium(1e-3, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1) });
- var source = new DenseVector(new[] { new Complex(1.0, 1), new Complex(1.0, 1), new Complex(double.NaN, 1) });
- var residual = new DenseVector(new[] { new Complex(1000.0, 1), new Complex(1000.0, 1), new Complex(2001.0, 1) });
+ var solution = new DenseVector(new[] {new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1)});
+ var source = new DenseVector(new[] {new Complex(1.0, 1), new Complex(1.0, 1), new Complex(double.NaN, 1)});
+ var residual = new DenseVector(new[] {new Complex(1000.0, 1), new Complex(1000.0, 1), new Complex(2001.0, 1)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Should be diverged");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Should be diverged");
}
///
@@ -234,12 +238,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new ResidualStopCriterium(1e-3, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1) });
- var source = new DenseVector(new[] { new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1) });
- var residual = new DenseVector(new[] { new Complex(1000.0, 1), new Complex(double.NaN, 1), new Complex(2001.0, 1) });
+ var solution = new DenseVector(new[] {new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1)});
+ var source = new DenseVector(new[] {new Complex(1.0, 1), new Complex(1.0, 1), new Complex(2.0, 1)});
+ var residual = new DenseVector(new[] {new Complex(1000.0, 1), new Complex(double.NaN, 1), new Complex(2001.0, 1)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Should be diverged");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Should be diverged");
}
///
@@ -255,12 +259,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new ResidualStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { Complex.One, Complex.One, Complex.One });
- var source = new DenseVector(new[] { Complex.One, Complex.One, Complex.One });
- var residual = new DenseVector(new[] { Complex.Zero, Complex.Zero, Complex.Zero });
+ var solution = new DenseVector(new[] {Complex.One, Complex.One, Complex.One});
+ var source = new DenseVector(new[] {Complex.One, Complex.One, Complex.One});
+ var residual = new DenseVector(new[] {Complex.Zero, Complex.Zero, Complex.Zero});
criterium.DetermineStatus(0, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationConverged), criterium.Status, "Should be done");
+ Assert.IsInstanceOf(typeof (CalculationConverged), criterium.Status, "Should be done");
}
///
@@ -273,19 +277,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.IsNotNull(criterium, "There should be a criterium");
// the solution vector isn't actually being used so ...
- var solution = new DenseVector(new[] { new Complex(double.NaN, double.NaN), new Complex(double.NaN, double.NaN), new Complex(double.NaN, double.NaN) });
+ var solution = new DenseVector(new[] {new Complex(double.NaN, double.NaN), new Complex(double.NaN, double.NaN), new Complex(double.NaN, double.NaN)});
// Set the source values
- var source = new DenseVector(new[] { new Complex(1.000, 1), new Complex(1.000, 1), new Complex(2.001, 1) });
+ var source = new DenseVector(new[] {new Complex(1.000, 1), new Complex(1.000, 1), new Complex(2.001, 1)});
// Set the residual values
- var residual = new DenseVector(new[] { new Complex(0.001, 0), new Complex(0.001, 0), new Complex(0.002, 0) });
+ var residual = new DenseVector(new[] {new Complex(0.001, 0), new Complex(0.001, 0), new Complex(0.002, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should still be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should still be running");
criterium.DetermineStatus(16, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationConverged), criterium.Status, "Should be done");
+ Assert.IsInstanceOf(typeof (CalculationConverged), criterium.Status, "Should be done");
}
///
@@ -297,15 +301,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
var criterium = new ResidualStopCriterium(1e-3, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex(0.001, 1), new Complex(0.001, 1), new Complex(0.002, 1) });
- var source = new DenseVector(new[] { new Complex(0.001, 1), new Complex(0.001, 1), new Complex(0.002, 1) });
- var residual = new DenseVector(new[] { new Complex(1.000, 0), new Complex(1.000, 0), new Complex(2.001, 0) });
+ var solution = new DenseVector(new[] {new Complex(0.001, 1), new Complex(0.001, 1), new Complex(0.002, 1)});
+ var source = new DenseVector(new[] {new Complex(0.001, 1), new Complex(0.001, 1), new Complex(0.002, 1)});
+ var residual = new DenseVector(new[] {new Complex(1.000, 0), new Complex(1.000, 0), new Complex(2.001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -318,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.StopCrit
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(ResidualStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (ResidualStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as ResidualStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/SparseMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/SparseMatrixTests.cs
index 4a2b8020..c5d08fca 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/SparseMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/SparseMatrixTests.cs
@@ -80,7 +80,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
/// The new vector.
protected override Vector CreateVector(Complex[] data)
{
- return new SparseVector(data);
+ return SparseVector.OfEnumerable(data);
}
///
@@ -211,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanAddSparseMatricesBothWays()
{
var m1 = new SparseMatrix(1, 3);
- var m2 = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ var m2 = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
var sum1 = m1 + m2;
var sum2 = m2 + m1;
Assert.IsTrue(sum1.Equals(m2));
@@ -221,15 +221,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
sparseResult.Add(m2, sparseResult);
Assert.IsTrue(sparseResult.Equals(sum1));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
sparseResult.Add(m1, sparseResult);
Assert.IsTrue(sparseResult.Equals(sum1));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
m1.Add(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(sum1));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
sparseResult.Add(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(2*sum1));
@@ -255,7 +255,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanSubtractSparseMatricesBothWays()
{
var m1 = new SparseMatrix(1, 3);
- var m2 = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ var m2 = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
var diff1 = m1 - m2;
var diff2 = m2 - m1;
Assert.IsTrue(diff1.Equals(m2.Negate()));
@@ -265,15 +265,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
sparseResult.Subtract(m2, sparseResult);
Assert.IsTrue(sparseResult.Equals(diff1));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
sparseResult.Subtract(m1, sparseResult);
Assert.IsTrue(sparseResult.Equals(diff2));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
m1.Subtract(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(diff1));
- sparseResult = SparseMatrix.OfArray(new Complex[,] { { 0, 1, 1 } });
+ sparseResult = SparseMatrix.OfArray(new Complex[,] {{0, 1, 1}});
sparseResult.Subtract(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(0*diff1));
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorArithmeticTheory.cs b/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorArithmeticTheory.cs
index d0d98e9c..0cbc81c8 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorArithmeticTheory.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorArithmeticTheory.cs
@@ -4,7 +4,7 @@
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
//
-// Copyright (c) 2009-2011 Math.NET
+// Copyright (c) 2009-2013 Math.NET
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
@@ -41,13 +41,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Datapoints]
Vector[] denseVectors = new Vector[]
{
- new SparseVector(new[] { new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1), new Complex(5, 1) }),
- new SparseVector(new[] { new Complex(2, -1), new Complex(0, 0), new Complex(0, 2), new Complex(-5, 1), new Complex(0, 0) }),
+ SparseVector.OfEnumerable(new[] {new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1), new Complex(5, 1)}),
+ SparseVector.OfEnumerable(new[] {new Complex(2, -1), new Complex(0, 0), new Complex(0, 2), new Complex(-5, 1), new Complex(0, 0)}),
new SparseVector(5),
new SparseVector(int.MaxValue)
};
[Datapoints]
- private Complex[] scalars = new[] { new Complex(2d, -1d) };
+ Complex[] scalars = new[] {new Complex(2d, -1d)};
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs
index 1d178cd7..5a4c3e63 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs
@@ -4,7 +4,7 @@
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
//
-// Copyright (c) 2009-2011 Math.NET
+// Copyright (c) 2009-2013 Math.NET
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
@@ -77,7 +77,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
var data = new Complex[Data.Length];
Array.Copy(Data, data, Data.Length);
- var vector = new SparseVector(data);
+ var vector = SparseVector.OfEnumerable(data);
for (var i = 0; i < data.Length; i++)
{
@@ -91,8 +91,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanCreateSparseVectorFromAnotherSparseVector()
{
- var vector = new SparseVector(Data);
- var other = new SparseVector(vector);
+ var vector = SparseVector.OfEnumerable(Data);
+ var other = SparseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -107,8 +107,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanCreateSparseVectorFromAnotherVector()
{
- var vector = (Vector)new SparseVector(Data);
- var other = new SparseVector(vector);
+ var vector = (Vector)SparseVector.OfEnumerable(Data);
+ var other = SparseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -124,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateSparseVectorFromUserDefinedVector()
{
var vector = new UserDefinedVector(Data);
- var other = new SparseVector(vector);
+ var other = SparseVector.OfVector(vector);
for (var i = 0; i < Data.Length; i++)
{
@@ -150,9 +150,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanConvertSparseVectorToArray()
{
- var vector = new SparseVector(Data);
+ var vector = SparseVector.OfEnumerable(Data);
var array = vector.ToArray();
- Assert.IsInstanceOf(typeof(Complex[]), array);
+ Assert.IsInstanceOf(typeof (Complex[]), array);
CollectionAssert.AreEqual(vector, array);
}
@@ -162,9 +162,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanConvertArrayToSparseVector()
{
- var array = new[] { new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1) };
- var vector = new SparseVector(array);
- Assert.IsInstanceOf(typeof(SparseVector), vector);
+ var array = new[] {new Complex(1, 1), new Complex(2, 1), new Complex(3, 1), new Complex(4, 1)};
+ var vector = SparseVector.OfEnumerable(array);
+ Assert.IsInstanceOf(typeof (SparseVector), vector);
CollectionAssert.AreEqual(array, array);
}
@@ -174,32 +174,32 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanMultiplySparseVectorByScalarUsingOperators()
{
- var vector = new SparseVector(Data);
- vector = vector * new Complex(2.0, 1);
+ var vector = SparseVector.OfEnumerable(Data);
+ vector = vector*new Complex(2.0, 1);
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
- vector = vector * 1.0;
+ vector = vector*1.0;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
- vector = new SparseVector(Data);
- vector = new Complex(2.0, 1) * vector;
+ vector = SparseVector.OfEnumerable(Data);
+ vector = new Complex(2.0, 1)*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
- vector = 1.0 * vector;
+ vector = 1.0*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex(2.0, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex(2.0, 1), vector[i]);
}
}
@@ -209,18 +209,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanDivideSparseVectorByScalarUsingOperators()
{
- var vector = new SparseVector(Data);
- vector = vector / new Complex(2.0, 1);
+ var vector = SparseVector.OfEnumerable(Data);
+ vector = vector/new Complex(2.0, 1);
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex(2.0, 1), vector[i], 14);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
- vector = vector / 1.0;
+ vector = vector/1.0;
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex(2.0, 1), vector[i], 14);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex(2.0, 1), vector[i], 14);
}
}
@@ -237,7 +237,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
{
for (var j = 0; j < vector2.Count; j++)
{
- Assert.AreEqual(m[i, j], vector1[i] * vector2[j]);
+ Assert.AreEqual(m[i, j], vector1[i]*vector2[j]);
}
}
}
@@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CheckSparseMechanismBySettingValues()
{
var vector = new SparseVector(10000);
- var storage = (SparseVectorStorage)vector.Storage;
+ var storage = (SparseVectorStorage) vector.Storage;
// Add non-zero elements
vector[200] = new Complex(1.5, 1);
@@ -315,7 +315,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
// Multiply by 0
vector *= 0;
- var storage = (SparseVectorStorage)vector.Storage;
+ var storage = (SparseVectorStorage) vector.Storage;
Assert.AreEqual(Complex.Zero, vector[200]);
Assert.AreEqual(Complex.Zero, vector[500]);
Assert.AreEqual(Complex.Zero, vector[800]);
@@ -350,19 +350,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
[Test]
public void CanPointwiseMultiplySparseVector()
{
- var zeroArray = new[] { Complex.Zero, new Complex(1.0, 1), Complex.Zero, new Complex(1.0, 1), Complex.Zero };
- var vector1 = new SparseVector(Data);
- var vector2 = new SparseVector(zeroArray);
+ var zeroArray = new[] {Complex.Zero, new Complex(1.0, 1), Complex.Zero, new Complex(1.0, 1), Complex.Zero};
+ var vector1 = SparseVector.OfEnumerable(Data);
+ var vector2 = SparseVector.OfEnumerable(zeroArray);
var result = new SparseVector(vector1.Count);
vector1.PointwiseMultiply(vector2, result);
for (var i = 0; i < vector1.Count; i++)
{
- Assert.AreEqual(Data[i] * zeroArray[i], result[i]);
+ Assert.AreEqual(Data[i]*zeroArray[i], result[i]);
}
- var resultStorage = (SparseVectorStorage)result.Storage;
+ var resultStorage = (SparseVectorStorage) result.Storage;
Assert.AreEqual(2, resultStorage.ValueCount);
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs
index b603509e..7f16d42a 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -90,7 +94,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateDenseVectorFromAnotherDenseVector()
{
var vector = new DenseVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -105,8 +109,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanCreateDenseVectorFromAnotherVector()
{
- var vector = (Vector)new DenseVector(Data);
- var other = new DenseVector(vector);
+ var vector = (Vector) new DenseVector(Data);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -122,7 +126,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateDenseVectorFromUserDefinedVector()
{
var vector = new UserDefinedVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
for (var i = 0; i < Data.Length; i++)
{
@@ -136,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanCreateDenseVectorWithConstantValues()
{
- var vector = new DenseVector(5, 5);
+ var vector = DenseVector.Create(5, i => 5);
foreach (var t in vector)
{
Assert.AreEqual(t, new Complex32(5.0f, 0));
@@ -162,8 +166,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanConvertDenseVectorToArray()
{
var vector = new DenseVector(Data);
- var array = (Complex32[])vector;
- Assert.IsInstanceOf(typeof(Complex32[]), array);
+ var array = (Complex32[]) vector;
+ Assert.IsInstanceOf(typeof (Complex32[]), array);
CollectionAssert.AreEqual(vector, array);
}
@@ -173,9 +177,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanConvertArrayToDenseVector()
{
- var array = new[] { new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1) };
- var vector = (DenseVector)array;
- Assert.IsInstanceOf(typeof(DenseVector), vector);
+ var array = new[] {new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1)};
+ var vector = (DenseVector) array;
+ Assert.IsInstanceOf(typeof (DenseVector), vector);
CollectionAssert.AreEqual(array, array);
}
@@ -207,7 +211,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * 2.0f, result[i]);
+ Assert.AreEqual(Data[i]*2.0f, result[i]);
}
}
@@ -250,31 +254,31 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanMultiplyDenseVectorByComplexUsingOperators()
{
var vector = new DenseVector(Data);
- vector = vector * new Complex32(2.0f, 1);
+ vector = vector*new Complex32(2.0f, 1);
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
- vector = vector * 1.0f;
+ vector = vector*1.0f;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
vector = new DenseVector(Data);
- vector = new Complex32(2.0f, 1) * vector;
+ vector = new Complex32(2.0f, 1)*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
- vector = 1.0f * vector;
+ vector = 1.0f*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
}
@@ -285,17 +289,17 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanDivideDenseVectorByComplexUsingOperators()
{
var vector = new DenseVector(Data);
- vector = vector / new Complex32(2.0f, 1);
+ vector = vector/new Complex32(2.0f, 1);
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex32(2.0f, 1), vector[i], 7);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
}
- vector = vector / 1.0f;
+ vector = vector/1.0f;
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex32(2.0f, 1), vector[i], 7);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
}
}
@@ -312,7 +316,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < vector2.Count; j++)
{
- Assert.AreEqual(m[i, j], vector1[i] * vector2[j]);
+ Assert.AreEqual(m[i, j], vector1[i]*vector2[j]);
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
index abd13252..ca81bea4 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
@@ -103,7 +103,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
/// The new vector.
protected override Vector CreateVector(Complex32[] data)
{
- return new SparseVector(data);
+ return SparseVector.OfEnumerable(data);
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs
index a5a64f8f..b7f21ee7 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterative
{
using System;
@@ -43,12 +48,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
///
/// Convergence boundary.
///
- private const float ConvergenceBoundary = 1e-5f;
+ const float ConvergenceBoundary = 1e-5f;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +91,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex32.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -128,19 +133,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Scale it with a funny number
- matrix.Multiply(new Complex32((float)Math.PI, (float)Math.PI), matrix);
+ matrix.Multiply(new Complex32((float) Math.PI, (float) Math.PI), matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex32.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -209,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, Complex32.One);
+ Vector y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -237,7 +242,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// Now compare the vectors
for (var i = 0; i < y.Count; i++)
{
-#if !PORTABLE
+#if !PORTABLE
Assert.IsTrue((y[i] - z[i]).Magnitude.IsSmaller(ConvergenceBoundary, 1), "#05-" + i);
#else
Assert.IsTrue((y[i] - z[i]).Magnitude.IsSmaller(ConvergenceBoundary * 10.0f, 1), "#05-" + i);
@@ -258,10 +263,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration)),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
+ });
var solver = new BiCgStab(monitor);
var resultx = solver.Solve(matrixA, vectorb);
@@ -273,13 +278,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
- Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
return;
@@ -301,10 +306,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration))
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
+ });
var solver = new BiCgStab(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -320,15 +325,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
- Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs
index 2b32e55b..49daf606 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
///
/// Convergence boundary.
///
- private const float ConvergenceBoundary = 1e-5f;
+ const float ConvergenceBoundary = 1e-5f;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
// Solve equation Ax = y
@@ -128,19 +132,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Scale it with a funny number
- matrix.Multiply((float)Math.PI, matrix);
+ matrix.Multiply((float) Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
@@ -210,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new GpBiCg(monitor);
@@ -256,10 +260,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration)),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
+ });
var solver = new GpBiCg(monitor);
var resultx = solver.Solve(matrixA, vectorb);
@@ -271,13 +275,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
- Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
return;
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs
index c82dd1d6..fa8c00bf 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
///
/// Convergence boundary.
///
- private const float ConvergenceBoundary = 1e-5f;
+ const float ConvergenceBoundary = 1e-5f;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
@@ -129,19 +133,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Scale it with a funny number
- matrix.Multiply((float)Math.PI, matrix);
+ matrix.Multiply((float) Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
// Solve equation Ax = y
@@ -210,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new MlkBiCgStab(monitor);
// Solve equation Ax = y
@@ -255,10 +259,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration)),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
+ });
var solver = new MlkBiCgStab(monitor);
var resultx = solver.Solve(matrixA, vectorb);
@@ -270,13 +274,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
- Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
return;
@@ -298,10 +302,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration))
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
+ });
var solver = new MlkBiCgStab(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -317,15 +321,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
- Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs
index 8fd1850e..7f300604 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
///
/// Convergence boundary.
///
- private const float ConvergenceBoundary = 1e-5f;
+ const float ConvergenceBoundary = 1e-5f;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
@@ -129,19 +133,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
Matrix matrix = SparseMatrix.Identity(100);
// Scale it with a funny number
- matrix.Multiply((float)Math.PI, matrix);
+ matrix.Multiply((float) Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
// Solve equation Ax = y
@@ -210,16 +214,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new TFQMR(monitor);
// Solve equation Ax = y
@@ -255,10 +259,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration)),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
+ });
var solver = new TFQMR(monitor);
var resultx = solver.Solve(matrixA, vectorb);
@@ -270,13 +274,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
}
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
{
- Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Real, matrixBReconstruct[i].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(vectorb[i].Imaginary, matrixBReconstruct[i].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
return;
@@ -298,10 +302,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium((float)Math.Pow(1.0 / 10.0, iteration))
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
+ });
var solver = new TFQMR(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -317,15 +321,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
{
for (var j = 0; j < matrixB.ColumnCount; j++)
{
- Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float)Math.Pow(1.0 / 10.0, iteration - 3));
- Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float)Math.Pow(1.0 / 10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Real, matrixBReconstruct[i, j].Real, (float) Math.Pow(1.0/10.0, iteration - 3));
+ Assert.AreEqual(matrixB[i, j].Imaginary, matrixBReconstruct[i, j].Imaginary, (float) Math.Pow(1.0/10.0, iteration - 3));
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
index 160c7f66..1db7adfb 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
{
using System;
@@ -56,7 +61,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
[Test]
public void CreateWithEmptyCollection()
{
- var iterator = new Iterator(new IIterationStopCriterium[] { });
+ var iterator = new Iterator(new IIterationStopCriterium[] {});
Assert.IsNotNull(iterator, "Should have an iterator");
Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria");
}
@@ -67,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
[Test]
public void CreateWithCollectionWithNulls()
{
- var iterator = new Iterator(new IIterationStopCriterium[] { null, null });
+ var iterator = new Iterator(new IIterationStopCriterium[] {null, null});
Assert.IsNotNull(iterator, "Should have an iterator");
Assert.AreEqual(0, iterator.NumberOfCriteria, "There shouldn't be any criteria");
}
@@ -79,10 +84,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void CreateWithDuplicatesThrowsArgumentException()
{
Assert.Throws(() => new Iterator(new IIterationStopCriterium[]
- {
- new FailureStopCriterium(),
- new FailureStopCriterium()
- }));
+ {
+ new FailureStopCriterium(),
+ new FailureStopCriterium()
+ }));
}
///
@@ -92,12 +97,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void CreateWithCollection()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.IsNotNull(iterator, "Should have an iterator");
@@ -139,12 +144,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void Add()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator();
Assert.AreEqual(0, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -169,12 +174,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void RemoveWithNullStopCriteriumThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -188,11 +193,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void RemoveWithNonExistingStopCriterium()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -207,12 +212,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void Remove()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
@@ -232,9 +237,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
var iterator = new Iterator();
Assert.Throws(() => iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -244,19 +249,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void DetermineStatusWithNegativeIterationNumberThrowsArgumentOutOfRangeException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -266,19 +271,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void DetermineStatusWithNullSolutionVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
null,
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -288,19 +293,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void DetermineStatusWithNullSourceVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 5),
null,
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 6)));
}
///
@@ -310,18 +315,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void DetermineStatusWithNullResidualVectorThrowsArgumentNullException()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
Assert.Throws(() => iterator.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -332,29 +337,29 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void DetermineStatus()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(1)
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(1)
+ };
var iterator = new Iterator(criteria);
// First step, nothing should happen.
iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationRunning), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationRunning), iterator.Status, "Incorrect status");
// Second step, should run out of iterations.
iterator.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationStoppedWithoutConvergence), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationStoppedWithoutConvergence), iterator.Status, "Incorrect status");
}
///
@@ -364,27 +369,27 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void ResetToPrecalculationState()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(1)
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(1)
+ };
var iterator = new Iterator(criteria);
// First step, nothing should happen.
iterator.DetermineStatus(
0,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4));
- Assert.IsInstanceOf(typeof(CalculationRunning), iterator.Status, "Incorrect status");
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4));
+ Assert.IsInstanceOf(typeof (CalculationRunning), iterator.Status, "Incorrect status");
iterator.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), iterator.Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[0].Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[1].Status, "Incorrect status");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criteria[2].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), iterator.Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[0].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[1].Status, "Incorrect status");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criteria[2].Status, "Incorrect status");
}
///
@@ -394,17 +399,17 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
public void Clone()
{
var criteria = new List
- {
- new FailureStopCriterium(),
- new DivergenceStopCriterium(),
- new IterationCountStopCriterium(),
- new ResidualStopCriterium()
- };
+ {
+ new FailureStopCriterium(),
+ new DivergenceStopCriterium(),
+ new IterationCountStopCriterium(),
+ new ResidualStopCriterium()
+ };
var iterator = new Iterator(criteria);
var clonedIterator = iterator.Clone();
- Assert.IsInstanceOf(typeof(Iterator), clonedIterator, "Incorrect type");
+ Assert.IsInstanceOf(typeof (Iterator), clonedIterator, "Incorrect type");
var clone = clonedIterator as Iterator;
Assert.IsNotNull(clone);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
index 4c899a4e..49dbffb3 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/DivergenceStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCriterium
{
using System;
@@ -108,9 +113,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new DivergenceStopCriterium(0.5, 15);
Assert.Throws(() => criterium.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -122,8 +127,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new DivergenceStopCriterium(0.5, 15);
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -143,10 +148,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
{
criterium.DetermineStatus(
i,
- 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.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ 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.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
}
@@ -162,15 +167,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new DivergenceStopCriterium(Increase, Iterations);
// Add residuals. We should not diverge because we won't have enough increase
- for (var i = 0; i < Iterations * 2; i++)
+ for (var i = 0; i < Iterations*2; i++)
{
criterium.DetermineStatus(
i,
- 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.01f), 0) }));
+ 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.01f), 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
}
@@ -190,21 +195,21 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
{
criterium.DetermineStatus(
i,
- 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.01f), 0) }));
+ 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.01f), 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
// Now make it fail by throwing in a NaN
criterium.DetermineStatus(
Iterations,
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(float.NaN, 0) }));
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(float.NaN, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
}
///
@@ -225,22 +230,22 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
previous *= 1 + Increase + 0.01f;
criterium.DetermineStatus(
i,
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(previous, 0) }));
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(previous, 0)}));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Status check fail.");
}
// Add the final residual. Now we should have divergence
previous *= 1 + Increase + 0.01f;
criterium.DetermineStatus(
Iterations - 1,
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(previous, 0) }));
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(previous, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
}
///
@@ -257,18 +262,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
// Add residuals. Blow it up instantly
criterium.DetermineStatus(
1,
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(1.0f, 0) }),
- new DenseVector(new[] { new Complex32(float.NaN, 0) }));
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(1.0f, 0)}),
+ new DenseVector(new[] {new Complex32(float.NaN, 0)}));
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Status check fail.");
// Reset the state
criterium.ResetToPrecalculationState();
Assert.AreEqual(Increase, criterium.MaximumRelativeIncrease, "Incorrect maximum");
Assert.AreEqual(Iterations, criterium.MinimumNumberOfIterations, "Incorrect iteration count");
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Status check fail.");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Status check fail.");
}
///
@@ -284,7 +289,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(DivergenceStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (DivergenceStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as DivergenceStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs
index 85d0f574..3990904d 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/FailureStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCriterium
{
using System;
@@ -57,7 +62,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(-1, new DenseVector(3, 4), new DenseVector(3, 5), new DenseVector(3, 6)));
+ Assert.Throws(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 5), DenseVector.Create(3, i => 6)));
}
///
@@ -69,7 +74,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, null, new DenseVector(3, 6), new DenseVector(4, 4)));
+ Assert.Throws(() => criterium.DetermineStatus(1, null, DenseVector.Create(3, i => 6), DenseVector.Create(4, i => 4)));
}
///
@@ -81,7 +86,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, new DenseVector(3, 4), new DenseVector(3, 6), null));
+ Assert.Throws(() => criterium.DetermineStatus(1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 6), null));
}
///
@@ -93,7 +98,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- Assert.Throws(() => criterium.DetermineStatus(1, new DenseVector(3, 4), new DenseVector(3, 6), new DenseVector(4, 4)));
+ Assert.Throws(() => criterium.DetermineStatus(1, DenseVector.Create(3, i => 4), DenseVector.Create(3, i => 6), DenseVector.Create(4, i => 4)));
}
///
@@ -105,12 +110,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(2.0f, 0) });
- var source = new DenseVector(new[] { new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0) });
- var residual = new DenseVector(new[] { new Complex32(1000, 0), new Complex32(float.NaN, 0), new Complex32(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(2.0f, 0)});
+ var source = new DenseVector(new[] {new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0)});
+ var residual = new DenseVector(new[] {new Complex32(1000, 0), new Complex32(float.NaN, 0), new Complex32(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationFailure), criterium.Status, "Should be failed");
+ Assert.IsInstanceOf(typeof (CalculationFailure), criterium.Status, "Should be failed");
}
///
@@ -122,12 +127,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(float.NaN, 0) });
- var source = new DenseVector(new[] { new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0) });
- var residual = new DenseVector(new[] { new Complex32(1000, 0), new Complex32(1000, 0), new Complex32(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(float.NaN, 0)});
+ var source = new DenseVector(new[] {new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0)});
+ var residual = new DenseVector(new[] {new Complex32(1000, 0), new Complex32(1000, 0), new Complex32(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationFailure), criterium.Status, "Should be failed");
+ Assert.IsInstanceOf(typeof (CalculationFailure), criterium.Status, "Should be failed");
}
///
@@ -139,12 +144,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(3.0f, 0), new Complex32(2.0f, 0), new Complex32(1, 0) });
- var source = new DenseVector(new[] { new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0) });
- var residual = new DenseVector(new[] { new Complex32(1.0f, 0), new Complex32(2.0f, 0), new Complex32(3, 0) });
+ var solution = new DenseVector(new[] {new Complex32(3.0f, 0), new Complex32(2.0f, 0), new Complex32(1, 0)});
+ var source = new DenseVector(new[] {new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0)});
+ var residual = new DenseVector(new[] {new Complex32(1.0f, 0), new Complex32(2.0f, 0), new Complex32(3, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
}
///
@@ -156,15 +161,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new FailureStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(2, 0) });
- var source = new DenseVector(new[] { new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0) });
- var residual = new DenseVector(new[] { new Complex32(1000, 0), new Complex32(1000, 0), new Complex32(2001, 0) });
+ var solution = new DenseVector(new[] {new Complex32(1.0f, 0), new Complex32(1.0f, 0), new Complex32(2, 0)});
+ var source = new DenseVector(new[] {new Complex32(1001.0f, 0), Complex32.Zero, new Complex32(2003.0f, 0)});
+ var residual = new DenseVector(new[] {new Complex32(1000, 0), new Complex32(1000, 0), new Complex32(2001, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -177,7 +182,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(FailureStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (FailureStopCriterium), clone, "Wrong criterium type");
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
index 5babd146..8a965f9d 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/IterationCountStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -23,6 +27,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
+
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCriterium
{
using System;
@@ -80,7 +85,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- Assert.Throws(() => criterium.DetermineStatus(-1, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3)));
+ Assert.Throws(() => criterium.DetermineStatus(-1, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3)));
}
///
@@ -92,11 +97,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- criterium.DetermineStatus(5, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
- criterium.DetermineStatus(10, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationStoppedWithoutConvergence), criterium.Status, "Should be finished");
+ criterium.DetermineStatus(10, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationStoppedWithoutConvergence), criterium.Status, "Should be finished");
}
///
@@ -108,11 +113,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new IterationCountStopCriterium(10);
Assert.IsNotNull(criterium, "A criterium should have been created");
- criterium.DetermineStatus(5, new DenseVector(3, 1), new DenseVector(3, 2), new DenseVector(3, 3));
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ criterium.DetermineStatus(5, DenseVector.Create(3, i => 1), DenseVector.Create(3, i => 2), DenseVector.Create(3, i => 3));
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -126,7 +131,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.AreEqual(10, criterium.MaximumNumberOfIterations, "Incorrect maximum");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(IterationCountStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (IterationCountStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as IterationCountStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
index eba403b7..f2fe7f6d 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/StopCriterium/ResidualStopCriteriumTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -107,9 +111,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
-1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -124,8 +128,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
null,
- new DenseVector(3, 5),
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 5),
+ DenseVector.Create(3, i => 6)));
}
///
@@ -139,9 +143,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
+ DenseVector.Create(3, i => 4),
null,
- new DenseVector(3, 6)));
+ DenseVector.Create(3, i => 6)));
}
///
@@ -155,8 +159,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 5),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 5),
null));
}
@@ -171,9 +175,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(4, 4),
- new DenseVector(3, 4),
- new DenseVector(3, 4)));
+ DenseVector.Create(4, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4)));
}
///
@@ -187,9 +191,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(4, 4),
- new DenseVector(3, 4)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(4, i => 4),
+ DenseVector.Create(3, i => 4)));
}
///
@@ -203,9 +207,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.Throws(() => criterium.DetermineStatus(
1,
- new DenseVector(3, 4),
- new DenseVector(3, 4),
- new DenseVector(4, 4)));
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(3, i => 4),
+ DenseVector.Create(4, i => 4)));
}
///
@@ -217,12 +221,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new ResidualStopCriterium(1e-3f, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1) });
- var source = new DenseVector(new[] { new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(float.NaN, 1) });
- var residual = new DenseVector(new[] { new Complex32(1000.0f, 1), new Complex32(1000.0f, 1), new Complex32(2001.0f, 1) });
+ var solution = new DenseVector(new[] {new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1)});
+ var source = new DenseVector(new[] {new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(float.NaN, 1)});
+ var residual = new DenseVector(new[] {new Complex32(1000.0f, 1), new Complex32(1000.0f, 1), new Complex32(2001.0f, 1)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Should be diverged");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Should be diverged");
}
///
@@ -234,12 +238,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new ResidualStopCriterium(1e-3f, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1) });
- var source = new DenseVector(new[] { new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1) });
- var residual = new DenseVector(new[] { new Complex32(1000.0f, 1), new Complex32(float.NaN, 1), new Complex32(2001.0f, 1) });
+ var solution = new DenseVector(new[] {new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1)});
+ var source = new DenseVector(new[] {new Complex32(1.0f, 1), new Complex32(1.0f, 1), new Complex32(2.0f, 1)});
+ var residual = new DenseVector(new[] {new Complex32(1000.0f, 1), new Complex32(float.NaN, 1), new Complex32(2001.0f, 1)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationDiverged), criterium.Status, "Should be diverged");
+ Assert.IsInstanceOf(typeof (CalculationDiverged), criterium.Status, "Should be diverged");
}
///
@@ -255,12 +259,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new ResidualStopCriterium();
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { Complex32.One, Complex32.One, Complex32.One });
- var source = new DenseVector(new[] { Complex32.One, Complex32.One, Complex32.One });
- var residual = new DenseVector(new[] { Complex32.Zero, Complex32.Zero, Complex32.Zero });
+ var solution = new DenseVector(new[] {Complex32.One, Complex32.One, Complex32.One});
+ var source = new DenseVector(new[] {Complex32.One, Complex32.One, Complex32.One});
+ var residual = new DenseVector(new[] {Complex32.Zero, Complex32.Zero, Complex32.Zero});
criterium.DetermineStatus(0, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationConverged), criterium.Status, "Should be done");
+ Assert.IsInstanceOf(typeof (CalculationConverged), criterium.Status, "Should be done");
}
///
@@ -273,19 +277,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.IsNotNull(criterium, "There should be a criterium");
// the solution vector isn't actually being used so ...
- var solution = new DenseVector(new[] { new Complex32(float.NaN, float.NaN), new Complex32(float.NaN, float.NaN), new Complex32(float.NaN, float.NaN) });
+ var solution = new DenseVector(new[] {new Complex32(float.NaN, float.NaN), new Complex32(float.NaN, float.NaN), new Complex32(float.NaN, float.NaN)});
// Set the source values
- var source = new DenseVector(new[] { new Complex32(1.000f, 1), new Complex32(1.000f, 1), new Complex32(2.001f, 1) });
+ var source = new DenseVector(new[] {new Complex32(1.000f, 1), new Complex32(1.000f, 1), new Complex32(2.001f, 1)});
// Set the residual values
- var residual = new DenseVector(new[] { new Complex32(0.001f, 0), new Complex32(0.001f, 0), new Complex32(0.002f, 0) });
+ var residual = new DenseVector(new[] {new Complex32(0.001f, 0), new Complex32(0.001f, 0), new Complex32(0.002f, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should still be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should still be running");
criterium.DetermineStatus(16, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationConverged), criterium.Status, "Should be done");
+ Assert.IsInstanceOf(typeof (CalculationConverged), criterium.Status, "Should be done");
}
///
@@ -297,15 +301,15 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
var criterium = new ResidualStopCriterium(1e-3f, 10);
Assert.IsNotNull(criterium, "There should be a criterium");
- var solution = new DenseVector(new[] { new Complex32(0.001f, 1), new Complex32(0.001f, 1), new Complex32(0.002f, 1) });
- var source = new DenseVector(new[] { new Complex32(0.001f, 1), new Complex32(0.001f, 1), new Complex32(0.002f, 1) });
- var residual = new DenseVector(new[] { new Complex32(1.000f, 0), new Complex32(1.000f, 0), new Complex32(2.001f, 0) });
+ var solution = new DenseVector(new[] {new Complex32(0.001f, 1), new Complex32(0.001f, 1), new Complex32(0.002f, 1)});
+ var source = new DenseVector(new[] {new Complex32(0.001f, 1), new Complex32(0.001f, 1), new Complex32(0.002f, 1)});
+ var residual = new DenseVector(new[] {new Complex32(1.000f, 0), new Complex32(1.000f, 0), new Complex32(2.001f, 0)});
criterium.DetermineStatus(5, solution, source, residual);
- Assert.IsInstanceOf(typeof(CalculationRunning), criterium.Status, "Should be running");
+ Assert.IsInstanceOf(typeof (CalculationRunning), criterium.Status, "Should be running");
criterium.ResetToPrecalculationState();
- Assert.IsInstanceOf(typeof(CalculationIndetermined), criterium.Status, "Should not have started");
+ Assert.IsInstanceOf(typeof (CalculationIndetermined), criterium.Status, "Should not have started");
}
///
@@ -318,7 +322,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.StopCr
Assert.IsNotNull(criterium, "There should be a criterium");
var clone = criterium.Clone();
- Assert.IsInstanceOf(typeof(ResidualStopCriterium), clone, "Wrong criterium type");
+ Assert.IsInstanceOf(typeof (ResidualStopCriterium), clone, "Wrong criterium type");
var clonedCriterium = clone as ResidualStopCriterium;
Assert.IsNotNull(clonedCriterium);
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs
index d74aa861..c359b9c7 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs
@@ -80,7 +80,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
/// The new vector.
protected override Vector CreateVector(Complex32[] data)
{
- return new SparseVector(data);
+ return SparseVector.OfEnumerable(data);
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorArithmeticTheory.cs b/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorArithmeticTheory.cs
index a76ef34e..ee5e9a1c 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorArithmeticTheory.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorArithmeticTheory.cs
@@ -4,7 +4,7 @@
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
//
-// Copyright (c) 2009-2011 Math.NET
+// Copyright (c) 2009-2013 Math.NET
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
@@ -41,13 +41,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Datapoints]
Vector[] denseVectors = new Vector[]
{
- new SparseVector(new[] { new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1), new Complex32(5, 1) }),
- new SparseVector(new[] { new Complex32(2, -1), new Complex32(0, 0), new Complex32(0, 2), new Complex32(-5, 1), new Complex32(0, 0) }),
+ SparseVector.OfEnumerable(new[] {new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1), new Complex32(5, 1)}),
+ SparseVector.OfEnumerable(new[] {new Complex32(2, -1), new Complex32(0, 0), new Complex32(0, 2), new Complex32(-5, 1), new Complex32(0, 0)}),
new SparseVector(5),
new SparseVector(int.MaxValue)
};
[Datapoints]
- private Complex32[] scalars = new[] { new Complex32(2f, -1f) };
+ Complex32[] scalars = new[] {new Complex32(2f, -1f)};
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs
index 43a64113..b1cc4a3b 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs
@@ -4,7 +4,7 @@
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
//
-// Copyright (c) 2009-2011 Math.NET
+// Copyright (c) 2009-2013 Math.NET
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
@@ -77,7 +77,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
var data = new Complex32[Data.Length];
Array.Copy(Data, data, Data.Length);
- var vector = new SparseVector(data);
+ var vector = SparseVector.OfEnumerable(data);
for (var i = 0; i < data.Length; i++)
{
@@ -91,8 +91,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanCreateSparseVectorFromAnotherSparseVector()
{
- var vector = new SparseVector(Data);
- var other = new SparseVector(vector);
+ var vector = SparseVector.OfEnumerable(Data);
+ var other = SparseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -107,8 +107,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanCreateSparseVectorFromAnotherVector()
{
- var vector = (Vector)new SparseVector(Data);
- var other = new SparseVector(vector);
+ var vector = (Vector) SparseVector.OfEnumerable(Data);
+ var other = SparseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -124,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateSparseVectorFromUserDefinedVector()
{
var vector = new UserDefinedVector(Data);
- var other = new SparseVector(vector);
+ var other = SparseVector.OfVector(vector);
for (var i = 0; i < Data.Length; i++)
{
@@ -150,9 +150,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanConvertSparseVectorToArray()
{
- var vector = new SparseVector(Data);
+ var vector = SparseVector.OfEnumerable(Data);
var array = vector.ToArray();
- Assert.IsInstanceOf(typeof(Complex32[]), array);
+ Assert.IsInstanceOf(typeof (Complex32[]), array);
CollectionAssert.AreEqual(vector, array);
}
@@ -162,9 +162,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanConvertArrayToSparseVector()
{
- var array = new[] { new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1) };
- var vector = new SparseVector(array);
- Assert.IsInstanceOf(typeof(SparseVector), vector);
+ var array = new[] {new Complex32(1, 1), new Complex32(2, 1), new Complex32(3, 1), new Complex32(4, 1)};
+ var vector = SparseVector.OfEnumerable(array);
+ Assert.IsInstanceOf(typeof (SparseVector), vector);
CollectionAssert.AreEqual(array, array);
}
@@ -174,32 +174,32 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanMultiplySparseVectorByComplexUsingOperators()
{
- var vector = new SparseVector(Data);
- vector = vector * new Complex32(2.0f, 1);
+ var vector = SparseVector.OfEnumerable(Data);
+ vector = vector*new Complex32(2.0f, 1);
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
- vector = vector * 1.0f;
+ vector = vector*1.0f;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
- vector = new SparseVector(Data);
- vector = new Complex32(2.0f, 1) * vector;
+ vector = SparseVector.OfEnumerable(Data);
+ vector = new Complex32(2.0f, 1)*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
- vector = 1.0f * vector;
+ vector = 1.0f*vector;
for (var i = 0; i < Data.Length; i++)
{
- Assert.AreEqual(Data[i] * new Complex32(2.0f, 1), vector[i]);
+ Assert.AreEqual(Data[i]*new Complex32(2.0f, 1), vector[i]);
}
}
@@ -209,18 +209,18 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanDivideSparseVectorByComplexUsingOperators()
{
- var vector = new SparseVector(Data);
- vector = vector / new Complex32(2.0f, 1);
+ var vector = SparseVector.OfEnumerable(Data);
+ vector = vector/new Complex32(2.0f, 1);
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex32(2.0f, 1), vector[i], 7);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
}
- vector = vector / 1.0f;
+ vector = vector/1.0f;
for (var i = 0; i < Data.Length; i++)
{
- AssertHelpers.AlmostEqual(Data[i] / new Complex32(2.0f, 1), vector[i], 7);
+ AssertHelpers.AlmostEqual(Data[i]/new Complex32(2.0f, 1), vector[i], 7);
}
}
@@ -237,7 +237,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
{
for (var j = 0; j < vector2.Count; j++)
{
- Assert.AreEqual(m[i, j], vector1[i] * vector2[j]);
+ Assert.AreEqual(m[i, j], vector1[i]*vector2[j]);
}
}
}
@@ -261,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CheckSparseMechanismBySettingValues()
{
var vector = new SparseVector(10000);
- var storage = (SparseVectorStorage)vector.Storage;
+ var storage = (SparseVectorStorage) vector.Storage;
// Add non-zero elements
vector[200] = new Complex32(1.5f, 1);
@@ -315,7 +315,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
// Multiply by 0
vector *= 0;
- var storage = (SparseVectorStorage)vector.Storage;
+ var storage = (SparseVectorStorage) vector.Storage;
Assert.AreEqual(Complex32.Zero, vector[200]);
Assert.AreEqual(Complex32.Zero, vector[500]);
Assert.AreEqual(Complex32.Zero, vector[800]);
@@ -350,19 +350,19 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
[Test]
public void CanPointwiseMultiplySparseVector()
{
- var zeroArray = new[] { Complex32.Zero, new Complex32(1.0f, 1), Complex32.Zero, new Complex32(1.0f, 1), Complex32.Zero };
- var vector1 = new SparseVector(Data);
- var vector2 = new SparseVector(zeroArray);
+ var zeroArray = new[] {Complex32.Zero, new Complex32(1.0f, 1), Complex32.Zero, new Complex32(1.0f, 1), Complex32.Zero};
+ var vector1 = SparseVector.OfEnumerable(Data);
+ var vector2 = SparseVector.OfEnumerable(zeroArray);
var result = new SparseVector(vector1.Count);
vector1.PointwiseMultiply(vector2, result);
for (var i = 0; i < vector1.Count; i++)
{
- Assert.AreEqual(Data[i] * zeroArray[i], result[i]);
+ Assert.AreEqual(Data[i]*zeroArray[i], result[i]);
}
- var resultStorage = (SparseVectorStorage)result.Storage;
+ var resultStorage = (SparseVectorStorage) result.Storage;
Assert.AreEqual(2, resultStorage.ValueCount);
}
diff --git a/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs b/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs
index 6fd95661..fe817b8a 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -89,7 +93,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateDenseVectorFromAnotherDenseVector()
{
var vector = new DenseVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -105,7 +109,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateDenseVectorFromAnotherVector()
{
var vector = (Vector)new DenseVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
Assert.AreNotSame(vector, other);
for (var i = 0; i < Data.Length; i++)
@@ -121,7 +125,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateDenseVectorFromUserDefinedVector()
{
var vector = new UserDefinedVector(Data);
- var other = new DenseVector(vector);
+ var other = DenseVector.OfVector(vector);
for (var i = 0; i < Data.Length; i++)
{
@@ -135,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test]
public void CanCreateDenseVectorWithConstantValues()
{
- var vector = new DenseVector(5, 5);
+ var vector = DenseVector.Create(5, i => 5);
foreach (var t in vector)
{
Assert.AreEqual(t, 5);
diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs
index f3ec988c..4bfdee5a 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws ArgumentException.
@@ -86,16 +90,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
Matrix matrix = SparseMatrix.Identity(100);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -131,16 +135,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
matrix.Multiply(Math.PI, matrix);
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -209,16 +213,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
}
// Create the y vector
- Vector y = new DenseVector(matrix.RowCount, 1);
+ Vector y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(MaximumIterations),
- new ResidualStopCriterium(ConvergenceBoundary),
- new DivergenceStopCriterium(),
- new FailureStopCriterium()
- });
+ {
+ new IterationCountStopCriterium(MaximumIterations),
+ new ResidualStopCriterium(ConvergenceBoundary),
+ new DivergenceStopCriterium(),
+ new FailureStopCriterium()
+ });
var solver = new BiCgStab(monitor);
// Solve equation Ax = y
@@ -258,16 +262,16 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10),
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10),
+ });
var solver = new BiCgStab(monitor);
var resultx = solver.Solve(matrixA, vectorb);
Assert.AreEqual(matrixA.ColumnCount, resultx.Count);
- var matrixBReconstruct = matrixA * resultx;
+ var matrixBReconstruct = matrixA*resultx;
// Check the reconstruction.
for (var i = 0; i < order; i++)
@@ -289,10 +293,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator(new IIterationStopCriterium[]
- {
- new IterationCountStopCriterium(1000),
- new ResidualStopCriterium(1e-10)
- });
+ {
+ new IterationCountStopCriterium(1000),
+ new ResidualStopCriterium(1e-10)
+ });
var solver = new BiCgStab(monitor);
var matrixX = solver.Solve(matrixA, matrixB);
@@ -302,7 +306,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
// The solution X has the same number of columns as B
Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount);
- var matrixBReconstruct = matrixA * matrixX;
+ var matrixBReconstruct = matrixA*matrixX;
// Check the reconstruction.
for (var i = 0; i < matrixB.RowCount; i++)
diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs
index 5ba36ab3..68409e98 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs
@@ -3,7 +3,9 @@
// http://numerics.mathdotnet.com
// http://github.com/mathnet/mathnet-numerics
// http://mathnetnumerics.codeplex.com
-// Copyright (c) 2009-2010 Math.NET
+//
+// Copyright (c) 2009-2013 Math.NET
+//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
@@ -12,8 +14,10 @@
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
+//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
+//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -43,12 +47,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
///
/// Convergence boundary.
///
- private const double ConvergenceBoundary = 1e-10;
+ const double ConvergenceBoundary = 1e-10;
///
/// Maximum iterations.
///
- private const int MaximumIterations = 1000;
+ const int MaximumIterations = 1000;
///
/// Solve wide matrix throws