Browse Source

Tests: prefer matrix builders

provider
Christoph Ruegg 12 years ago
parent
commit
31e937cbef
  1. 2
      src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs
  2. 2
      src/Numerics/LinearAlgebra/Complex32/Factorization/DenseGramSchmidt.cs
  3. 6
      src/Numerics/LinearAlgebra/Double/Factorization/DenseGramSchmidt.cs
  4. 2
      src/Numerics/LinearAlgebra/Single/Factorization/DenseGramSchmidt.cs
  5. 8
      src/UnitTests/DistributionTests/Multivariate/InverseWishartTests.cs
  6. 9
      src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs
  7. 8
      src/UnitTests/DistributionTests/Multivariate/WishartTests.cs
  8. 106
      src/UnitTests/LinearAlgebraProviderTests/Double/LinearAlgebraProviderTests.cs
  9. 12
      src/UnitTests/LinearAlgebraTests/Double/DenseMatrixTests.cs
  10. 20
      src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs
  11. 4
      src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
  12. 4
      src/UnitTests/LinearAlgebraTests/Double/Factorization/CholeskyTests.cs
  13. 4
      src/UnitTests/LinearAlgebraTests/Double/Factorization/EvdTests.cs
  14. 4
      src/UnitTests/LinearAlgebraTests/Double/Factorization/GramSchmidtTests.cs
  15. 4
      src/UnitTests/LinearAlgebraTests/Double/Factorization/LUTests.cs
  16. 6
      src/UnitTests/LinearAlgebraTests/Double/Factorization/QRTests.cs
  17. 4
      src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs
  18. 28
      src/UnitTests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs
  19. 42
      src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterion/DivergenceStopCriteriumTest.cs
  20. 24
      src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterion/FailureStopCriteriumTest.cs
  21. 4
      src/UnitTests/LinearAlgebraTests/Double/SparseMatrixTests.cs

2
src/Numerics/LinearAlgebra/Complex/Factorization/DenseGramSchmidt.cs

@ -58,7 +58,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Factorization
/// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception>
public static DenseGramSchmidt Create(DenseMatrix matrix) public static DenseGramSchmidt Create(Matrix<Complex> matrix)
{ {
if (matrix.RowCount < matrix.ColumnCount) if (matrix.RowCount < matrix.ColumnCount)
{ {

2
src/Numerics/LinearAlgebra/Complex32/Factorization/DenseGramSchmidt.cs

@ -53,7 +53,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Factorization
/// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception>
public static DenseGramSchmidt Create(DenseMatrix matrix) public static DenseGramSchmidt Create(Matrix<Complex32> matrix)
{ {
if (matrix.RowCount < matrix.ColumnCount) if (matrix.RowCount < matrix.ColumnCount)
{ {

6
src/Numerics/LinearAlgebra/Double/Factorization/DenseGramSchmidt.cs

@ -44,14 +44,14 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
internal sealed class DenseGramSchmidt : GramSchmidt internal sealed class DenseGramSchmidt : GramSchmidt
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="DenseGramSchmidt"/> class. This object creates an orthogonal matrix /// Initializes a new instance of the <see cref="DenseGramSchmidt"/> class. This object creates an orthogonal matrix
/// using the modified Gram-Schmidt method. /// using the modified Gram-Schmidt method.
/// </summary> /// </summary>
/// <param name="matrix">The matrix to factor.</param> /// <param name="matrix">The matrix to factor.</param>
/// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception>
public static DenseGramSchmidt Create(DenseMatrix matrix) public static DenseGramSchmidt Create(Matrix<double> matrix)
{ {
if (matrix.RowCount < matrix.ColumnCount) if (matrix.RowCount < matrix.ColumnCount)
{ {
@ -109,7 +109,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{ {
dot += q[(k1 * rowsQ) + index] * q[(j1 * rowsQ) + index]; dot += q[(k1 * rowsQ) + index] * q[(j1 * rowsQ) + index];
} }
r[(j * columnsQ) + k] = dot; r[(j * columnsQ) + k] = dot;
for (var i = 0; i < rowsQ; i++) for (var i = 0; i < rowsQ; i++)
{ {

2
src/Numerics/LinearAlgebra/Single/Factorization/DenseGramSchmidt.cs

@ -51,7 +51,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization
/// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception> /// <exception cref="ArgumentNullException">If <paramref name="matrix"/> is <c>null</c>.</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> row count is less then column count</exception>
/// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception> /// <exception cref="ArgumentException">If <paramref name="matrix"/> is rank deficient</exception>
public static DenseGramSchmidt Create(DenseMatrix matrix) public static DenseGramSchmidt Create(Matrix<float> matrix)
{ {
if (matrix.RowCount < matrix.ColumnCount) if (matrix.RowCount < matrix.ColumnCount)
{ {

8
src/UnitTests/DistributionTests/Multivariate/InverseWishartTests.cs

@ -249,12 +249,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
[TestCase(5.0, 0.00043049126899076171)] [TestCase(5.0, 0.00043049126899076171)]
public void ValidateDensity(double nu, double density) public void ValidateDensity(double nu, double density)
{ {
const int Order = 1; var matrix = Matrix<double>.Build.Dense(1, 1, 1.0);
var matrix = new DenseMatrix(Order); var x = Matrix<double>.Build.Dense(1, 1, 5.0);
matrix[0, 0] = 1;
var x = new DenseMatrix(Order);
x[0, 0] = 5;
var d = new InverseWishart(nu, matrix); var d = new InverseWishart(nu, matrix);
AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16); AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16);

9
src/UnitTests/DistributionTests/Multivariate/MatrixNormalTests.cs

@ -223,26 +223,27 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
{ {
const int Rows = 2; const int Rows = 2;
const int Cols = 2; const int Cols = 2;
var m = new DenseMatrix(Rows, Cols); var m = Matrix<double>.Build.Dense(Rows, Cols);
m[0, 0] = 0.156065579983862; m[0, 0] = 0.156065579983862;
m[0, 1] = -0.568039841576594; m[0, 1] = -0.568039841576594;
m[1, 0] = -0.806288628097313; m[1, 0] = -0.806288628097313;
m[1, 1] = -1.20004405005077; m[1, 1] = -1.20004405005077;
var v = new DenseMatrix(Rows, Rows); var v = Matrix<double>.Build.Dense(Rows, Rows);
v[0, 0] = 0.674457817054746; v[0, 0] = 0.674457817054746;
v[0, 1] = 0.878930403442185; v[0, 1] = 0.878930403442185;
v[1, 0] = 0.878930403442185; v[1, 0] = 0.878930403442185;
v[1, 1] = 1.76277498368061; v[1, 1] = 1.76277498368061;
var k = new DenseMatrix(Cols, Cols); var k = Matrix<double>.Build.Dense(Cols, Cols);
k[0, 0] = 0.674457817054746; k[0, 0] = 0.674457817054746;
k[0, 1] = 0.878930403442185; k[0, 1] = 0.878930403442185;
k[1, 0] = 0.878930403442185; k[1, 0] = 0.878930403442185;
k[1, 1] = 1.76277498368061; k[1, 1] = 1.76277498368061;
var d = new MatrixNormal(m, v, k); var d = new MatrixNormal(m, v, k);
var x = new DenseMatrix(Rows, Cols); var x = Matrix<double>.Build.Dense(Rows, Cols);
x[0, 0] = 2; x[0, 0] = 2;
x[0, 1] = 2; x[0, 1] = 2;

8
src/UnitTests/DistributionTests/Multivariate/WishartTests.cs

@ -241,12 +241,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
[TestCase(5.0, 0.12204152134938706)] [TestCase(5.0, 0.12204152134938706)]
public void ValidateDensity(double nu, double density) public void ValidateDensity(double nu, double density)
{ {
const int Order = 1; var matrix = Matrix<double>.Build.Dense(1, 1, 1.0);
var matrix = new DenseMatrix(Order); var x = Matrix<double>.Build.Dense(1, 1, 5.0);
matrix[0, 0] = 1;
var x = new DenseMatrix(Order);
x[0, 0] = 5;
var d = new Wishart(nu, matrix); var d = new Wishart(nu, matrix);
AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16); AssertHelpers.AlmostEqualRelative(density, d.Density(x), 16);

106
src/UnitTests/LinearAlgebraProviderTests/Double/LinearAlgebraProviderTests.cs

@ -560,7 +560,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
[Test] [Test]
public void CanSolveUsingCholesky() public void CanSolveUsingCholesky()
{ {
var matrix = new DenseMatrix(3, 3, new double[] {1, 1, 1, 1, 2, 3, 1, 3, 6}); var matrix = Matrix<double>.Build.Dense(3, 3, new double[] { 1, 1, 1, 1, 2, 3, 1, 3, 6 });
var a = new double[] {1, 1, 1, 1, 2, 3, 1, 3, 6}; var a = new double[] {1, 1, 1, 1, 2, 3, 1, 3, 6};
var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}; var b = new[] {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
@ -611,8 +611,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var q = new double[matrix.RowCount*matrix.RowCount]; var q = new double[matrix.RowCount*matrix.RowCount];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -638,8 +638,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var q = new double[matrix.RowCount*matrix.RowCount]; var q = new double[matrix.RowCount*matrix.RowCount];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -665,8 +665,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var q = new double[matrix.RowCount*matrix.RowCount]; var q = new double[matrix.RowCount*matrix.RowCount];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -693,8 +693,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.ColumnCount*Control.BlockSize]; var work = new double[matrix.ColumnCount*Control.BlockSize];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -721,8 +721,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.ColumnCount*Control.BlockSize]; var work = new double[matrix.ColumnCount*Control.BlockSize];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -749,8 +749,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.ColumnCount*Control.BlockSize]; var work = new double[matrix.ColumnCount*Control.BlockSize];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work); Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle(); var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -776,8 +776,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau); Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r); var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -803,8 +803,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau); Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r); var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -831,8 +831,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.ColumnCount*Control.BlockSize]; var work = new double[matrix.ColumnCount*Control.BlockSize];
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work); Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r); var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
@ -859,8 +859,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var work = new double[matrix.ColumnCount*Control.BlockSize]; var work = new double[matrix.ColumnCount*Control.BlockSize];
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work); Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q); var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r); var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr; var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++) for (var row = 0; row < matrix.RowCount; row++)
{ {
@ -887,7 +887,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 3, a, matrix); NotModified(3, 3, a, matrix);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -914,7 +914,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 2, a, matrix); NotModified(3, 2, a, matrix);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -941,7 +941,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 3, a, matrix); NotModified(3, 3, a, matrix);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -970,7 +970,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 2, a, matrix); NotModified(3, 2, a, matrix);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -998,7 +998,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x); Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1028,7 +1028,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x); Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1057,7 +1057,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work); Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1088,7 +1088,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work); Control.LinearAlgebraProvider.QRSolveFactored(q, a, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1113,7 +1113,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 3, a, matrix); NotModified(3, 3, a, matrix);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1140,7 +1140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 2, a, matrix); NotModified(3, 2, a, matrix);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1167,7 +1167,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 3, a, matrix); NotModified(3, 3, a, matrix);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1196,7 +1196,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 2, a, matrix); NotModified(3, 2, a, matrix);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1224,7 +1224,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, QRMethod.Thin); Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, QRMethod.Thin);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1254,7 +1254,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, QRMethod.Thin); Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, QRMethod.Thin);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1283,7 +1283,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work, QRMethod.Thin); Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work, QRMethod.Thin);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1314,7 +1314,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work, QRMethod.Thin); Control.LinearAlgebraProvider.QRSolveFactored(a, r, matrix.RowCount, matrix.ColumnCount, tau, b, 2, x, work, QRMethod.Thin);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13); AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1345,8 +1345,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1382,8 +1382,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1416,8 +1416,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1452,8 +1452,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1491,8 +1491,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1527,8 +1527,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index]; w[index, index] = s[index];
} }
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u); var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt); var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV; var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14); AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1555,7 +1555,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 3, a, matrix); NotModified(3, 3, a, matrix);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqual(mb[0, 0], b[0], 13);
@ -1582,7 +1582,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
NotModified(3, 2, a, matrix); NotModified(3, 2, a, matrix);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14); AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);
@ -1612,7 +1612,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.SvdSolveFactored(matrix.RowCount, matrix.ColumnCount, s, u, vt, b, 2, x); Control.LinearAlgebraProvider.SvdSolveFactored(matrix.RowCount, matrix.ColumnCount, s, u, vt, b, 2, x);
var mx = new DenseMatrix(matrix.ColumnCount, 2, x); var mx = Matrix<double>.Build.Dense(matrix.ColumnCount, 2, x);
var mb = matrix*mx; var mb = matrix*mx;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 13); AssertHelpers.AlmostEqual(mb[0, 0], b[0], 13);
@ -1644,7 +1644,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
var x = new double[matrix.ColumnCount*2]; var x = new double[matrix.ColumnCount*2];
Control.LinearAlgebraProvider.SvdSolveFactored(matrix.RowCount, matrix.ColumnCount, s, u, vt, b, 2, x); Control.LinearAlgebraProvider.SvdSolveFactored(matrix.RowCount, matrix.ColumnCount, s, u, vt, b, 2, x);
var mb = new DenseMatrix(matrix.RowCount, 2, b); var mb = Matrix<double>.Build.Dense(matrix.RowCount, 2, b);
var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb; var test = (matrix.Transpose()*matrix).Inverse()*matrix.Transpose()*mb;
AssertHelpers.AlmostEqual(test[0, 0], x[0], 14); AssertHelpers.AlmostEqual(test[0, 0], x[0], 14);

12
src/UnitTests/LinearAlgebraTests/Double/DenseMatrixTests.cs

@ -70,11 +70,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{ {
var testData = new Dictionary<string, Matrix<double>> var testData = new Dictionary<string, Matrix<double>>
{ {
{"Singular3x3", new DenseMatrix(3, 3, new[] {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0})}, {"Singular3x3", Matrix<double>.Build.Dense(3, 3, new[] {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0})},
{"Square3x3", new DenseMatrix(3, 3, new[] {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5, -3.3, 2.2, 6.6})}, {"Square3x3", Matrix<double>.Build.Dense(3, 3, new[] {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5, -3.3, 2.2, 6.6})},
{"Square4x4", new DenseMatrix(4, 4, new[] {-1.1, 0.0, 1.0, -4.4, -2.2, 1.1, 2.1, 5.5, -3.3, 2.2, 6.2, 6.6, -4.4, 3.3, 4.3, -7.7})}, {"Square4x4", Matrix<double>.Build.Dense(4, 4, new[] {-1.1, 0.0, 1.0, -4.4, -2.2, 1.1, 2.1, 5.5, -3.3, 2.2, 6.2, 6.6, -4.4, 3.3, 4.3, -7.7})},
{"Tall3x2", new DenseMatrix(3, 2, new[] {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5})}, {"Tall3x2", Matrix<double>.Build.Dense(3, 2, new[] {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5})},
{"Wide2x3", new DenseMatrix(2, 3, new[] {-1.1, 0.0, -2.2, 1.1, -3.3, 2.2})} {"Wide2x3", Matrix<double>.Build.Dense(2, 3, new[] {-1.1, 0.0, -2.2, 1.1, -3.3, 2.2})}
}; };
foreach (var name in testData.Keys) foreach (var name in testData.Keys)
@ -90,7 +90,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void MatrixFrom1DArrayIsReference() public void MatrixFrom1DArrayIsReference()
{ {
var data = new double[] {1, 1, 1, 1, 1, 1, 2, 2, 2}; var data = new double[] {1, 1, 1, 1, 1, 1, 2, 2, 2};
var matrix = new DenseMatrix(3, 3, data); var matrix = Matrix<double>.Build.Dense(3, 3, data);
matrix[0, 0] = 10.0; matrix[0, 0] = 10.0;
Assert.AreEqual(10.0, data[0]); Assert.AreEqual(10.0, data[0]);
} }

20
src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs

@ -152,7 +152,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanCreateDenseMatrix() public void CanCreateDenseMatrix()
{ {
var vector = new DenseVector(3); var vector = Vector<double>.Build.Dense(3);
var matrix = Matrix<double>.Build.SameAs(vector, 2, 3); var matrix = Matrix<double>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<DenseMatrix>(matrix); Assert.IsInstanceOf<DenseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount); Assert.AreEqual(2, matrix.RowCount);
@ -189,7 +189,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanCallUnaryPlusOperatorOnDenseVector() public void CanCallUnaryPlusOperatorOnDenseVector()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
var other = +vector; var other = +vector;
for (var i = 0; i < Data.Length; i++) for (var i = 0; i < Data.Length; i++)
{ {
@ -203,8 +203,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanAddTwoDenseVectorsUsingOperator() public void CanAddTwoDenseVectorsUsingOperator()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
var other = new DenseVector(Data); var other = Vector<double>.Build.Dense(Data);
var result = vector + other; var result = vector + other;
CollectionAssert.AreEqual(Data, vector, "Making sure the original vector wasn't modified."); CollectionAssert.AreEqual(Data, vector, "Making sure the original vector wasn't modified.");
CollectionAssert.AreEqual(Data, other, "Making sure the original vector wasn't modified."); CollectionAssert.AreEqual(Data, other, "Making sure the original vector wasn't modified.");
@ -221,7 +221,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanCallUnaryNegationOperatorOnDenseVector() public void CanCallUnaryNegationOperatorOnDenseVector()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
var other = -vector; var other = -vector;
for (var i = 0; i < Data.Length; i++) for (var i = 0; i < Data.Length; i++)
{ {
@ -235,8 +235,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanSubtractTwoDenseVectorsUsingOperator() public void CanSubtractTwoDenseVectorsUsingOperator()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
var other = new DenseVector(Data); var other = Vector<double>.Build.Dense(Data);
var result = vector - other; var result = vector - other;
CollectionAssert.AreEqual(Data, vector, "Making sure the original vector wasn't modified."); CollectionAssert.AreEqual(Data, vector, "Making sure the original vector wasn't modified.");
CollectionAssert.AreEqual(Data, other, "Making sure the original vector wasn't modified."); CollectionAssert.AreEqual(Data, other, "Making sure the original vector wasn't modified.");
@ -253,7 +253,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanMultiplyDenseVectorByScalarUsingOperators() public void CanMultiplyDenseVectorByScalarUsingOperators()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
vector = vector * 2.0; vector = vector * 2.0;
for (var i = 0; i < Data.Length; i++) for (var i = 0; i < Data.Length; i++)
@ -267,7 +267,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
Assert.AreEqual(Data[i] * 2.0, vector[i]); Assert.AreEqual(Data[i] * 2.0, vector[i]);
} }
vector = new DenseVector(Data); vector = Vector<double>.Build.Dense(Data);
vector = 2.0 * vector; vector = 2.0 * vector;
for (var i = 0; i < Data.Length; i++) for (var i = 0; i < Data.Length; i++)
@ -288,7 +288,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
[Test] [Test]
public void CanDivideDenseVectorByScalarUsingOperators() public void CanDivideDenseVectorByScalarUsingOperators()
{ {
var vector = new DenseVector(Data); var vector = Vector<double>.Build.Dense(Data);
vector = vector / 2.0; vector = vector / 2.0;
for (var i = 0; i < Data.Length; i++) for (var i = 0; i < Data.Length; i++)

4
src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs

@ -375,13 +375,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
// [ 0 0 ] // [ 0 0 ]
// [ 2 0 ] // [ 2 0 ]
var subM2 = diagMatrix.SubMatrix(0, 2, 1, 2); var subM2 = diagMatrix.SubMatrix(0, 2, 1, 2);
Assert.IsTrue(subM2.Equals(new DenseMatrix(2, 2, new[] {0d, 2d, 0d, 0d}))); Assert.IsTrue(subM2.Equals(Matrix<double>.Build.Dense(2, 2, new[] { 0d, 2d, 0d, 0d })));
// [ 0 0 ] // [ 0 0 ]
// [ 2 0 ] // [ 2 0 ]
// [ 0 3 ] // [ 0 3 ]
var subM3 = diagMatrix.SubMatrix(0, 3, 1, 2); var subM3 = diagMatrix.SubMatrix(0, 3, 1, 2);
Assert.IsTrue(subM3.Equals(new DenseMatrix(3, 2, new[] {0d, 2d, 0d, 0d, 0d, 3d}))); Assert.IsTrue(subM3.Equals(Matrix<double>.Build.Dense(3, 2, new[] { 0d, 2d, 0d, 0d, 0d, 3d })));
} }
[Test] [Test]

4
src/UnitTests/LinearAlgebraTests/Double/Factorization/CholeskyTests.cs

@ -77,7 +77,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test] [Test]
public void CholeskyFailsWithNonSquareMatrix() public void CholeskyFailsWithNonSquareMatrix()
{ {
var matrix = new DenseMatrix(3, 2); var matrix = Matrix<double>.Build.Dense(3, 2);
Assert.That(() => matrix.Cholesky(), Throws.ArgumentException); Assert.That(() => matrix.Cholesky(), Throws.ArgumentException);
} }
@ -281,7 +281,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var chol = matrixA.Cholesky(); var chol = matrixA.Cholesky();
var matrixB = Matrix<double>.Build.Random(row, col, 1); var matrixB = Matrix<double>.Build.Random(row, col, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(row, col); var matrixX = Matrix<double>.Build.Dense(row, col);
chol.Solve(matrixB, matrixX); chol.Solve(matrixB, matrixX);
Assert.AreEqual(matrixB.RowCount, matrixX.RowCount); Assert.AreEqual(matrixB.RowCount, matrixX.RowCount);

4
src/UnitTests/LinearAlgebraTests/Double/Factorization/EvdTests.cs

@ -116,7 +116,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test] [Test]
public void CanCheckRankOfSquareSingular([Values(10, 50, 100)] int order) public void CanCheckRankOfSquareSingular([Values(10, 50, 100)] int order)
{ {
var A = new DenseMatrix(order, order); var A = Matrix<double>.Build.Dense(order, order);
A[0, 0] = 1; A[0, 0] = 1;
A[order - 1, order - 1] = 1; A[order - 1, order - 1] = 1;
for (var i = 1; i < order - 1; i++) for (var i = 1; i < order - 1; i++)
@ -245,7 +245,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var B = Matrix<double>.Build.Random(order, order, 2); var B = Matrix<double>.Build.Random(order, order, 2);
var BCopy = B.Clone(); var BCopy = B.Clone();
var X = new DenseMatrix(order, order); var X = Matrix<double>.Build.Dense(order, order);
evd.Solve(B, X); evd.Solve(B, X);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A

4
src/UnitTests/LinearAlgebraTests/Double/Factorization/GramSchmidtTests.cs

@ -43,7 +43,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test] [Test]
public void ConstructorWideMatrixThrowsInvalidMatrixOperationException() public void ConstructorWideMatrixThrowsInvalidMatrixOperationException()
{ {
Assert.That(() => DenseGramSchmidt.Create(new DenseMatrix(3, 4)), Throws.ArgumentException); Assert.That(() => DenseGramSchmidt.Create(Matrix<double>.Build.Dense(3, 4)), Throws.ArgumentException);
} }
/// <summary> /// <summary>
@ -293,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1); var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order); var matrixX = Matrix<double>.Build.Dense(order, order);
factorGramSchmidt.Solve(matrixB, matrixX); factorGramSchmidt.Solve(matrixB, matrixX);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A

4
src/UnitTests/LinearAlgebraTests/Double/Factorization/LUTests.cs

@ -79,7 +79,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test] [Test]
public void LUFailsWithNonSquareMatrix() public void LUFailsWithNonSquareMatrix()
{ {
var matrix = new DenseMatrix(3, 2); var matrix = Matrix<double>.Build.Dense(3, 2);
Assert.That(() => matrix.LU(), Throws.ArgumentException); Assert.That(() => matrix.LU(), Throws.ArgumentException);
} }
@ -302,7 +302,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1); var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order); var matrixX = Matrix<double>.Build.Dense(order, order);
factorLU.Solve(matrixB, matrixX); factorLU.Solve(matrixB, matrixX);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A

6
src/UnitTests/LinearAlgebraTests/Double/Factorization/QRTests.cs

@ -45,7 +45,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test] [Test]
public void ConstructorWideMatrixThrowsInvalidMatrixOperationException() public void ConstructorWideMatrixThrowsInvalidMatrixOperationException()
{ {
Assert.That(() => UserQR.Create(new DenseMatrix(3, 4)), Throws.ArgumentException); Assert.That(() => UserQR.Create(Matrix<double>.Build.Dense(3, 4)), Throws.ArgumentException);
} }
/// <summary> /// <summary>
@ -394,7 +394,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1); var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order); var matrixX = Matrix<double>.Build.Dense(order, order);
factorQR.Solve(matrixB, matrixX); factorQR.Solve(matrixB, matrixX);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A
@ -583,7 +583,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1); var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order); var matrixX = Matrix<double>.Build.Dense(order, order);
factorQR.Solve(matrixB, matrixX); factorQR.Solve(matrixB, matrixX);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A

4
src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs

@ -163,7 +163,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[TestCase(100)] [TestCase(100)]
public void CanCheckRankOfSquareSingular(int order) public void CanCheckRankOfSquareSingular(int order)
{ {
var matrixA = new DenseMatrix(order, order); var matrixA = Matrix<double>.Build.Dense(order, order);
matrixA[0, 0] = 1; matrixA[0, 0] = 1;
matrixA[order - 1, order - 1] = 1; matrixA[order - 1, order - 1] = 1;
for (var i = 1; i < order - 1; i++) for (var i = 1; i < order - 1; i++)
@ -358,7 +358,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(row, column, 1); var matrixB = Matrix<double>.Build.Random(row, column, 1);
var matrixBCopy = matrixB.Clone(); var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(column, column); var matrixX = Matrix<double>.Build.Dense(column, column);
factorSvd.Solve(matrixB, matrixX); factorSvd.Solve(matrixB, matrixX);
// The solution X row dimension is equal to the column dimension of A // The solution X row dimension is equal to the column dimension of A

28
src/UnitTests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs

@ -66,7 +66,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanMultiplyWithVector() public void CanMultiplyWithVector()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = matrix*x; var y = matrix*x;
Assert.AreEqual(matrix.RowCount, y.Count); Assert.AreEqual(matrix.RowCount, y.Count);
@ -86,8 +86,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanMultiplyWithVectorIntoResult() public void CanMultiplyWithVectorIntoResult()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = new DenseVector(3); var y = Vector<double>.Build.Dense(3);
matrix.Multiply(x, y); matrix.Multiply(x, y);
for (var i = 0; i < matrix.RowCount; i++) for (var i = 0; i < matrix.RowCount; i++)
@ -105,13 +105,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanMultiplyWithVectorIntoResultWhenUpdatingInputArgument() public void CanMultiplyWithVectorIntoResultWhenUpdatingInputArgument()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = x; var y = x;
matrix.Multiply(x, x); matrix.Multiply(x, x);
Assert.AreSame(y, x); Assert.AreSame(y, x);
y = new DenseVector(new[] { 1.0, 2.0, 3.0 }); y = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
for (var i = 0; i < matrix.RowCount; i++) for (var i = 0; i < matrix.RowCount; i++)
{ {
var ar = matrix.Row(i); var ar = matrix.Row(i);
@ -127,8 +127,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void MultiplyWithVectorIntoLargerResultThrowsArgumentException() public void MultiplyWithVectorIntoLargerResultThrowsArgumentException()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = new DenseVector(4); Vector<double> y = Vector<double>.Build.Dense(4);
Assert.That(() => matrix.Multiply(x, y), Throws.ArgumentException); Assert.That(() => matrix.Multiply(x, y), Throws.ArgumentException);
} }
@ -569,7 +569,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVector() public void CanTransposeThisAndMultiplyWithVector()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = matrix.TransposeThisAndMultiply(x); var y = matrix.TransposeThisAndMultiply(x);
Assert.AreEqual(matrix.ColumnCount, y.Count); Assert.AreEqual(matrix.ColumnCount, y.Count);
@ -589,8 +589,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVectorIntoResult() public void CanTransposeThisAndMultiplyWithVectorIntoResult()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = new DenseVector(3); var y = Vector<double>.Build.Dense(3);
matrix.TransposeThisAndMultiply(x, y); matrix.TransposeThisAndMultiply(x, y);
for (var j = 0; j < matrix.ColumnCount; j++) for (var j = 0; j < matrix.ColumnCount; j++)
@ -608,13 +608,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVectorIntoResultWhenUpdatingInputArgument() public void CanTransposeThisAndMultiplyWithVectorIntoResultWhenUpdatingInputArgument()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = x; var y = x;
matrix.TransposeThisAndMultiply(x, x); matrix.TransposeThisAndMultiply(x, x);
Assert.AreSame(y, x); Assert.AreSame(y, x);
y = new DenseVector(new[] { 1.0, 2.0, 3.0 }); y = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
for (var j = 0; j < matrix.ColumnCount; j++) for (var j = 0; j < matrix.ColumnCount; j++)
{ {
var ar = matrix.Column(j); var ar = matrix.Column(j);
@ -630,8 +630,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void TransposeThisAndMultiplyWithVectorIntoLargerResultThrowsArgumentException() public void TransposeThisAndMultiplyWithVectorIntoLargerResultThrowsArgumentException()
{ {
var matrix = TestMatrices["Singular3x3"]; var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = new DenseVector(4); Vector<double> y = Vector<double>.Build.Dense(4);
Assert.That(() => matrix.TransposeThisAndMultiply(x, y), Throws.ArgumentException); Assert.That(() => matrix.TransposeThisAndMultiply(x, y), Throws.ArgumentException);
} }

42
src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterion/DivergenceStopCriteriumTest.cs

@ -103,9 +103,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
{ {
var status = criterion.DetermineStatus( var status = criterion.DetermineStatus(
i, i,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase + 0.1) })); Vector<double>.Build.Dense(new[] { (i + 1)*(Increase + 0.1) }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
} }
@ -127,9 +127,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
{ {
var status = criterion.DetermineStatus( var status = criterion.DetermineStatus(
i, i,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase - 0.01) })); Vector<double>.Build.Dense(new[] { (i + 1)*(Increase - 0.01) }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
} }
@ -151,9 +151,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
{ {
var status = criterion.DetermineStatus( var status = criterion.DetermineStatus(
i, i,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase - 0.01) })); Vector<double>.Build.Dense(new[] { (i + 1)*(Increase - 0.01) }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
} }
@ -161,9 +161,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
// Now make it fail by throwing in a NaN // Now make it fail by throwing in a NaN
var status2 = criterion.DetermineStatus( var status2 = criterion.DetermineStatus(
Iterations, Iterations,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { double.NaN })); Vector<double>.Build.Dense(new[] { double.NaN }));
Assert.AreEqual(IterationStatus.Diverged, status2, "Status check fail."); Assert.AreEqual(IterationStatus.Diverged, status2, "Status check fail.");
} }
@ -186,9 +186,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
previous *= 1 + Increase + 0.01; previous *= 1 + Increase + 0.01;
var status = criterion.DetermineStatus( var status = criterion.DetermineStatus(
i, i,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { previous })); Vector<double>.Build.Dense(new[] { previous }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail."); Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
} }
@ -197,9 +197,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
previous *= 1 + Increase + 0.01; previous *= 1 + Increase + 0.01;
var status2 = criterion.DetermineStatus( var status2 = criterion.DetermineStatus(
Iterations - 1, Iterations - 1,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { previous })); Vector<double>.Build.Dense(new[] { previous }));
Assert.AreEqual(IterationStatus.Diverged, status2, "Status check fail."); Assert.AreEqual(IterationStatus.Diverged, status2, "Status check fail.");
} }
@ -218,9 +218,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
// Add residuals. Blow it up instantly // Add residuals. Blow it up instantly
var status = criterion.DetermineStatus( var status = criterion.DetermineStatus(
1, 1,
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }), Vector<double>.Build.Dense(new[] { 1.0 }),
new DenseVector(new[] { double.NaN })); Vector<double>.Build.Dense(new[] { double.NaN }));
Assert.AreEqual(IterationStatus.Diverged, status, "Status check fail."); Assert.AreEqual(IterationStatus.Diverged, status, "Status check fail.");

24
src/UnitTests/LinearAlgebraTests/Double/Solvers/StopCriterion/FailureStopCriteriumTest.cs

@ -85,9 +85,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
var criterion = new FailureStopCriterion<double>(); var criterion = new FailureStopCriterion<double>();
Assert.IsNotNull(criterion, "There should be a criterion"); Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, 2.0 }); var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, 2.0 });
var source = new DenseVector(new[] { 1001.0, 0, 2003.0 }); var source = Vector<double>.Build.Dense(new[] { 1001.0, 0, 2003.0 });
var residual = new DenseVector(new[] { 1000, double.NaN, 2001 }); var residual = Vector<double>.Build.Dense(new[] { 1000, double.NaN, 2001 });
var status = criterion.DetermineStatus(5, solution, source, residual); var status = criterion.DetermineStatus(5, solution, source, residual);
Assert.AreEqual(IterationStatus.Failure, status, "Should be failed"); Assert.AreEqual(IterationStatus.Failure, status, "Should be failed");
@ -102,9 +102,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
var criterion = new FailureStopCriterion<double>(); var criterion = new FailureStopCriterion<double>();
Assert.IsNotNull(criterion, "There should be a criterion"); Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, double.NaN }); var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, double.NaN });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 }); var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1000.0, 1000.0, 2001.0 }); var residual = Vector<double>.Build.Dense(new[] { 1000.0, 1000.0, 2001.0 });
var status = criterion.DetermineStatus(5, solution, source, residual); var status = criterion.DetermineStatus(5, solution, source, residual);
Assert.AreEqual(IterationStatus.Failure, status, "Should be failed"); Assert.AreEqual(IterationStatus.Failure, status, "Should be failed");
@ -119,9 +119,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
var criterion = new FailureStopCriterion<double>(); var criterion = new FailureStopCriterion<double>();
Assert.IsNotNull(criterion, "There should be a criterion"); Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 3.0, 2.0, 1.0 }); var solution = Vector<double>.Build.Dense(new[] { 3.0, 2.0, 1.0 });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 }); var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1.0, 2.0, 3.0 }); var residual = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var status = criterion.DetermineStatus(5, solution, source, residual); var status = criterion.DetermineStatus(5, solution, source, residual);
Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); Assert.AreEqual(IterationStatus.Continue, status, "Should be running");
@ -136,9 +136,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
var criterion = new FailureStopCriterion<double>(); var criterion = new FailureStopCriterion<double>();
Assert.IsNotNull(criterion, "There should be a criterion"); Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, 2.0 }); var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, 2.0 });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 }); var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1000.0, 1000.0, 2001.0 }); var residual = Vector<double>.Build.Dense(new[] { 1000.0, 1000.0, 2001.0 });
var status = criterion.DetermineStatus(5, solution, source, residual); var status = criterion.DetermineStatus(5, solution, source, residual);
Assert.AreEqual(IterationStatus.Continue, status, "Should be running"); Assert.AreEqual(IterationStatus.Continue, status, "Should be running");

4
src/UnitTests/LinearAlgebraTests/Double/SparseMatrixTests.cs

@ -213,7 +213,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
sparseResult.Add(sparseResult, sparseResult); sparseResult.Add(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(2*sum1)); Assert.IsTrue(sparseResult.Equals(2*sum1));
Matrix<double> denseResult = new DenseMatrix(1, 3); Matrix<double> denseResult = Matrix<double>.Build.Dense(1, 3);
denseResult.Add(m2, denseResult); denseResult.Add(m2, denseResult);
Assert.IsTrue(denseResult.Equals(sum1)); Assert.IsTrue(denseResult.Equals(sum1));
@ -257,7 +257,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
sparseResult.Subtract(sparseResult, sparseResult); sparseResult.Subtract(sparseResult, sparseResult);
Assert.IsTrue(sparseResult.Equals(0*diff1)); Assert.IsTrue(sparseResult.Equals(0*diff1));
Matrix<double> denseResult = new DenseMatrix(1, 3); Matrix<double> denseResult = Matrix<double>.Build.Dense(1, 3);
denseResult.Subtract(m2, denseResult); denseResult.Subtract(m2, denseResult);
Assert.IsTrue(denseResult.Equals(diff1)); Assert.IsTrue(denseResult.Equals(diff1));

Loading…
Cancel
Save