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="ArgumentException">If <paramref name="matrix"/> row count is less then column count</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)
{

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="ArgumentException">If <paramref name="matrix"/> row count is less then column count</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)
{

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

@ -44,14 +44,14 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
internal sealed class DenseGramSchmidt : GramSchmidt
{
/// <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.
/// </summary>
/// <param name="matrix">The matrix to factor.</param>
/// <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"/> is rank deficient</exception>
public static DenseGramSchmidt Create(DenseMatrix matrix)
public static DenseGramSchmidt Create(Matrix<double> matrix)
{
if (matrix.RowCount < matrix.ColumnCount)
{
@ -109,7 +109,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Factorization
{
dot += q[(k1 * rowsQ) + index] * q[(j1 * rowsQ) + index];
}
r[(j * columnsQ) + k] = dot;
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="ArgumentException">If <paramref name="matrix"/> row count is less then column count</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)
{

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

@ -249,12 +249,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
[TestCase(5.0, 0.00043049126899076171)]
public void ValidateDensity(double nu, double density)
{
const int Order = 1;
var matrix = new DenseMatrix(Order);
matrix[0, 0] = 1;
var x = new DenseMatrix(Order);
x[0, 0] = 5;
var matrix = Matrix<double>.Build.Dense(1, 1, 1.0);
var x = Matrix<double>.Build.Dense(1, 1, 5.0);
var d = new InverseWishart(nu, matrix);
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 Cols = 2;
var m = new DenseMatrix(Rows, Cols);
var m = Matrix<double>.Build.Dense(Rows, Cols);
m[0, 0] = 0.156065579983862;
m[0, 1] = -0.568039841576594;
m[1, 0] = -0.806288628097313;
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, 1] = 0.878930403442185;
v[1, 0] = 0.878930403442185;
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, 1] = 0.878930403442185;
k[1, 0] = 0.878930403442185;
k[1, 1] = 1.76277498368061;
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, 1] = 2;

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

@ -241,12 +241,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Multivariate
[TestCase(5.0, 0.12204152134938706)]
public void ValidateDensity(double nu, double density)
{
const int Order = 1;
var matrix = new DenseMatrix(Order);
matrix[0, 0] = 1;
var x = new DenseMatrix(Order);
x[0, 0] = 5;
var matrix = Matrix<double>.Build.Dense(1, 1, 1.0);
var x = Matrix<double>.Build.Dense(1, 1, 5.0);
var d = new Wishart(nu, matrix);
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]
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 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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var a = mq*mr;
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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr;
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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr;
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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var a = mq*mr;
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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr;
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];
Control.LinearAlgebraProvider.QRFactor(r, matrix.RowCount, matrix.ColumnCount, q, tau, work);
var mr = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = new DenseMatrix(matrix.RowCount, matrix.RowCount, q);
var mr = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, r).UpperTriangle();
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, q);
var a = mq*mr;
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);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r);
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr;
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);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r);
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr;
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];
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r);
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr;
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];
Control.LinearAlgebraProvider.ThinQRFactor(q, matrix.RowCount, matrix.ColumnCount, r, tau, work);
var mq = new DenseMatrix(matrix.RowCount, matrix.ColumnCount, q);
var mr = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, r);
var mq = Matrix<double>.Build.Dense(matrix.RowCount, matrix.ColumnCount, q);
var mr = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, r);
var a = mq*mr;
for (var row = 0; row < matrix.RowCount; row++)
{
@ -887,7 +887,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -914,7 +914,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -941,7 +941,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -970,7 +970,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
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];
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;
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];
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;
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];
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;
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];
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;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1113,7 +1113,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1140,7 +1140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1167,7 +1167,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqualRelative(mb[0, 0], b[0], 13);
@ -1196,7 +1196,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
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];
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;
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];
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;
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];
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;
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];
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;
AssertHelpers.AlmostEqualRelative(test[0, 0], x[0], 13);
@ -1345,8 +1345,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1382,8 +1382,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1416,8 +1416,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1452,8 +1452,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1491,8 +1491,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1527,8 +1527,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
w[index, index] = s[index];
}
var mU = new DenseMatrix(matrix.RowCount, matrix.RowCount, u);
var mV = new DenseMatrix(matrix.ColumnCount, matrix.ColumnCount, vt);
var mU = Matrix<double>.Build.Dense(matrix.RowCount, matrix.RowCount, u);
var mV = Matrix<double>.Build.Dense(matrix.ColumnCount, matrix.ColumnCount, vt);
var result = mU*w*mV;
AssertHelpers.AlmostEqualRelative(matrix[0, 0], result[0, 0], 14);
@ -1555,7 +1555,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
AssertHelpers.AlmostEqual(mb[0, 0], b[0], 13);
@ -1582,7 +1582,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraProviderTests.Double
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;
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];
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;
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];
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;
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>>
{
{"Singular3x3", new DenseMatrix(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})},
{"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})},
{"Tall3x2", new DenseMatrix(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})}
{"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", 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", 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", Matrix<double>.Build.Dense(3, 2, new[] {-1.1, 0.0, -4.4, -2.2, 1.1, 5.5})},
{"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)
@ -90,7 +90,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void MatrixFrom1DArrayIsReference()
{
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;
Assert.AreEqual(10.0, data[0]);
}

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

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

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

@ -77,7 +77,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
[Test]
public void CholeskyFailsWithNonSquareMatrix()
{
var matrix = new DenseMatrix(3, 2);
var matrix = Matrix<double>.Build.Dense(3, 2);
Assert.That(() => matrix.Cholesky(), Throws.ArgumentException);
}
@ -281,7 +281,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var chol = matrixA.Cholesky();
var matrixB = Matrix<double>.Build.Random(row, col, 1);
var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(row, col);
var matrixX = Matrix<double>.Build.Dense(row, col);
chol.Solve(matrixB, matrixX);
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]
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[order - 1, order - 1] = 1;
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 BCopy = B.Clone();
var X = new DenseMatrix(order, order);
var X = Matrix<double>.Build.Dense(order, order);
evd.Solve(B, X);
// 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]
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>
@ -293,7 +293,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order);
var matrixX = Matrix<double>.Build.Dense(order, order);
factorGramSchmidt.Solve(matrixB, matrixX);
// 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]
public void LUFailsWithNonSquareMatrix()
{
var matrix = new DenseMatrix(3, 2);
var matrix = Matrix<double>.Build.Dense(3, 2);
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 matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order);
var matrixX = Matrix<double>.Build.Dense(order, order);
factorLU.Solve(matrixB, matrixX);
// 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]
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>
@ -394,7 +394,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization
var matrixB = Matrix<double>.Build.Random(order, order, 1);
var matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order);
var matrixX = Matrix<double>.Build.Dense(order, order);
factorQR.Solve(matrixB, matrixX);
// 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 matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(order, order);
var matrixX = Matrix<double>.Build.Dense(order, order);
factorQR.Solve(matrixB, matrixX);
// 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)]
public void CanCheckRankOfSquareSingular(int order)
{
var matrixA = new DenseMatrix(order, order);
var matrixA = Matrix<double>.Build.Dense(order, order);
matrixA[0, 0] = 1;
matrixA[order - 1, order - 1] = 1;
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 matrixBCopy = matrixB.Clone();
var matrixX = new DenseMatrix(column, column);
var matrixX = Matrix<double>.Build.Dense(column, column);
factorSvd.Solve(matrixB, matrixX);
// 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()
{
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;
Assert.AreEqual(matrix.RowCount, y.Count);
@ -86,8 +86,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanMultiplyWithVectorIntoResult()
{
var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 });
var y = new DenseVector(3);
var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = Vector<double>.Build.Dense(3);
matrix.Multiply(x, y);
for (var i = 0; i < matrix.RowCount; i++)
@ -105,13 +105,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanMultiplyWithVectorIntoResultWhenUpdatingInputArgument()
{
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;
matrix.Multiply(x, 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++)
{
var ar = matrix.Row(i);
@ -127,8 +127,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void MultiplyWithVectorIntoLargerResultThrowsArgumentException()
{
var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = new DenseVector(4);
var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = Vector<double>.Build.Dense(4);
Assert.That(() => matrix.Multiply(x, y), Throws.ArgumentException);
}
@ -569,7 +569,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVector()
{
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);
Assert.AreEqual(matrix.ColumnCount, y.Count);
@ -589,8 +589,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVectorIntoResult()
{
var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 });
var y = new DenseVector(3);
var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var y = Vector<double>.Build.Dense(3);
matrix.TransposeThisAndMultiply(x, y);
for (var j = 0; j < matrix.ColumnCount; j++)
@ -608,13 +608,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanTransposeThisAndMultiplyWithVectorIntoResultWhenUpdatingInputArgument()
{
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;
matrix.TransposeThisAndMultiply(x, 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++)
{
var ar = matrix.Column(j);
@ -630,8 +630,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void TransposeThisAndMultiplyWithVectorIntoLargerResultThrowsArgumentException()
{
var matrix = TestMatrices["Singular3x3"];
var x = new DenseVector(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = new DenseVector(4);
var x = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
Vector<double> y = Vector<double>.Build.Dense(4);
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(
i,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase + 0.1) }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { (i + 1)*(Increase + 0.1) }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
}
@ -127,9 +127,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
{
var status = criterion.DetermineStatus(
i,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase - 0.01) }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { (i + 1)*(Increase - 0.01) }));
Assert.AreEqual(IterationStatus.Continue, status, "Status check fail.");
}
@ -151,9 +151,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.StopCrite
{
var status = criterion.DetermineStatus(
i,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { (i + 1)*(Increase - 0.01) }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { (i + 1)*(Increase - 0.01) }));
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
var status2 = criterion.DetermineStatus(
Iterations,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { double.NaN }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { double.NaN }));
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;
var status = criterion.DetermineStatus(
i,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { previous }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { previous }));
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;
var status2 = criterion.DetermineStatus(
Iterations - 1,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { previous }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { previous }));
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
var status = criterion.DetermineStatus(
1,
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { 1.0 }),
new DenseVector(new[] { double.NaN }));
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { 1.0 }),
Vector<double>.Build.Dense(new[] { double.NaN }));
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>();
Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, 2.0 });
var source = new DenseVector(new[] { 1001.0, 0, 2003.0 });
var residual = new DenseVector(new[] { 1000, double.NaN, 2001 });
var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, 2.0 });
var source = Vector<double>.Build.Dense(new[] { 1001.0, 0, 2003.0 });
var residual = Vector<double>.Build.Dense(new[] { 1000, double.NaN, 2001 });
var status = criterion.DetermineStatus(5, solution, source, residual);
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>();
Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, double.NaN });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1000.0, 1000.0, 2001.0 });
var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, double.NaN });
var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = Vector<double>.Build.Dense(new[] { 1000.0, 1000.0, 2001.0 });
var status = criterion.DetermineStatus(5, solution, source, residual);
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>();
Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 3.0, 2.0, 1.0 });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1.0, 2.0, 3.0 });
var solution = Vector<double>.Build.Dense(new[] { 3.0, 2.0, 1.0 });
var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = Vector<double>.Build.Dense(new[] { 1.0, 2.0, 3.0 });
var status = criterion.DetermineStatus(5, solution, source, residual);
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>();
Assert.IsNotNull(criterion, "There should be a criterion");
var solution = new DenseVector(new[] { 1.0, 1.0, 2.0 });
var source = new DenseVector(new[] { 1001.0, 0.0, 2003.0 });
var residual = new DenseVector(new[] { 1000.0, 1000.0, 2001.0 });
var solution = Vector<double>.Build.Dense(new[] { 1.0, 1.0, 2.0 });
var source = Vector<double>.Build.Dense(new[] { 1001.0, 0.0, 2003.0 });
var residual = Vector<double>.Build.Dense(new[] { 1000.0, 1000.0, 2001.0 });
var status = criterion.DetermineStatus(5, solution, source, residual);
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);
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);
Assert.IsTrue(denseResult.Equals(sum1));
@ -257,7 +257,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
sparseResult.Subtract(sparseResult, sparseResult);
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);
Assert.IsTrue(denseResult.Equals(diff1));

Loading…
Cancel
Save