Browse Source

LA: phase out Vector.CreateMatrix/CreateVector (no longer needed)

pull/184/head
Christoph Ruegg 13 years ago
parent
commit
a0a861e790
  1. 4
      src/FSharp/LinearAlgebra.Vector.fs
  2. 2
      src/Numerics/LinearAlgebra/Complex/SparseVector.cs
  3. 2
      src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
  4. 6
      src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs
  5. 35
      src/Numerics/LinearAlgebra/Vector.Arithmetic.cs
  6. 33
      src/Numerics/LinearAlgebra/Vector.cs
  7. 3
      src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs
  8. 3
      src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs
  9. 4
      src/UnitTests/LinearAlgebraTests/Complex/VectorTests.cs
  10. 3
      src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs
  11. 3
      src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs
  12. 4
      src/UnitTests/LinearAlgebraTests/Complex32/VectorTests.cs
  13. 3
      src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs
  14. 3
      src/UnitTests/LinearAlgebraTests/Double/SparseVectorTest.cs
  15. 4
      src/UnitTests/LinearAlgebraTests/Double/VectorTests.cs
  16. 3
      src/UnitTests/LinearAlgebraTests/Single/DenseVectorTests.cs
  17. 3
      src/UnitTests/LinearAlgebraTests/Single/SparseVectorTest.cs
  18. 4
      src/UnitTests/LinearAlgebraTests/Single/VectorTests.cs
  19. 2
      src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs

4
src/FSharp/LinearAlgebra.Vector.fs

@ -200,8 +200,8 @@ module Vector =
}
/// Creates a new vector and inserts the given value at the given index.
let inline insert index value (v: #Vector<_>) =
let newV = v.CreateVector(v.Count + 1)
let inline insert index value (v: #Vector<'T>) =
let newV = Vector<'T>.Build.SameAs(v, v.Count + 1)
v.CopySubVectorTo(newV, 0, 0, index)
v.CopySubVectorTo(newV, index, index+1, v.Count - index)
newV.At(index, value)

2
src/Numerics/LinearAlgebra/Complex/SparseVector.cs

@ -141,7 +141,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
{
if (ReferenceEquals(this, result))
{
var tmp = CreateVector(Count);
var tmp = Build.SameAs(this);
DoConjugate(tmp);
tmp.CopyTo(result);
}

2
src/Numerics/LinearAlgebra/Complex32/SparseVector.cs

@ -136,7 +136,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
{
if (ReferenceEquals(this, result))
{
var tmp = CreateVector(Count);
var tmp = Build.SameAs(this);
DoConjugate(tmp);
tmp.CopyTo(result);
}

6
src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs

@ -557,7 +557,7 @@ namespace MathNet.Numerics.LinearAlgebra
if (ReferenceEquals(rightSide, result))
{
var tmp = result.CreateVector(result.Count);
var tmp = Vector<T>.Build.SameAs(result);
DoMultiply(rightSide, tmp);
tmp.CopyTo(result);
}
@ -606,7 +606,7 @@ namespace MathNet.Numerics.LinearAlgebra
if (ReferenceEquals(leftSide, result))
{
var tmp = result.CreateVector(result.Count);
var tmp = Vector<T>.Build.SameAs(result);
DoLeftMultiply(leftSide, tmp);
tmp.CopyTo(result);
}
@ -753,7 +753,7 @@ namespace MathNet.Numerics.LinearAlgebra
if (ReferenceEquals(rightSide, result))
{
var tmp = result.CreateVector(result.Count);
var tmp = Vector<T>.Build.SameAs(result);
DoTransposeThisAndMultiply(rightSide, tmp);
tmp.CopyTo(result);
}

35
src/Numerics/LinearAlgebra/Vector.Arithmetic.cs

@ -178,7 +178,7 @@ namespace MathNet.Numerics.LinearAlgebra
return Clone();
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoAdd(scalar, result);
return result;
}
@ -218,7 +218,7 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentVectorsSameLength, "other");
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoAdd(other, result);
return result;
}
@ -252,7 +252,7 @@ namespace MathNet.Numerics.LinearAlgebra
return Clone();
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoSubtract(scalar, result);
return result;
}
@ -286,7 +286,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>A new vector containing the subtraction of the scalar and this vector.</returns>
public Vector<T> SubtractFrom(T scalar)
{
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoSubtractFrom(scalar, result);
return result;
}
@ -314,7 +314,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <remarks>Added as an alternative to the unary negation operator.</remarks>
public Vector<T> Negate()
{
var retrunVector = CreateVector(Count);
var retrunVector = Build.SameAs(this);
DoNegate(retrunVector);
return retrunVector;
}
@ -346,7 +346,7 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentVectorsSameLength, "other");
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoSubtract(other, result);
return result;
}
@ -374,7 +374,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>Conjugated vector</returns>
public Vector<T> Conjugate()
{
var retrunVector = CreateVector(Count);
var retrunVector = Build.SameAs(this);
DoConjugate(retrunVector);
return retrunVector;
}
@ -407,10 +407,10 @@ namespace MathNet.Numerics.LinearAlgebra
if (scalar.Equals(Zero))
{
return CreateVector(Count);
return Build.SameAs(this);
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoMultiply(scalar, result);
return result;
}
@ -484,7 +484,7 @@ namespace MathNet.Numerics.LinearAlgebra
return Clone();
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoDivide(scalar, result);
return result;
}
@ -518,7 +518,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>A new vector that is the division of the vector and the scalar.</returns>
public Vector<T> DevideByThis(T scalar)
{
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoDivideByThis(scalar, result);
return result;
}
@ -546,7 +546,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>A vector containing the result.</returns>
public Vector<T> Modulus(T divisor)
{
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoModulus(divisor, result);
return result;
}
@ -573,7 +573,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>A vector containing the result.</returns>
public Vector<T> ModulusByThis(T dividend)
{
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoModulusByThis(dividend, result);
return result;
}
@ -606,7 +606,7 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentVectorsSameLength, "other");
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoPointwiseMultiply(other, result);
return result;
}
@ -646,7 +646,7 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentVectorsSameLength, "divisor");
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoPointwiseDivide(divisor, result);
return result;
}
@ -686,7 +686,7 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentVectorsSameLength, "divisor");
}
var result = CreateVector(Count);
var result = Build.SameAs(this);
DoPointwiseModulus(divisor, result);
return result;
}
@ -721,8 +721,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <returns>Matrix M[i,j] = u[i]*v[j] </returns>
public static Matrix<T> OuterProduct(Vector<T> u, Vector<T> v)
{
var matrix = u.CreateMatrix(u.Count, v.Count);
var matrix = Matrix<T>.Build.SameAs(u, u.Count, v.Count);
for (var i = 0; i < u.Count; i++)
{
matrix.SetRow(i, v.Multiply(u.At(i)));

33
src/Numerics/LinearAlgebra/Vector.cs

@ -132,38 +132,13 @@ namespace MathNet.Numerics.LinearAlgebra
Storage.Clear(index, count);
}
/// <summary>
/// Create a matrix of the same kind with the provided number of rows and columns.
/// </summary>
/// <param name="rows">The number of rows.</param>
/// <param name="columns">The number of columns.</param>
/// <remarks>Creates a matrix of the same matrix type as the current matrix.</remarks>
public Matrix<T> CreateMatrix(int rows, int columns)
{
return Storage.IsDense
? Matrix<T>.Build.Dense(rows, columns)
: Matrix<T>.Build.Sparse(rows, columns);
}
/// <summary>
/// Create a vector of the same kind with the provided dimension.
/// </summary>
/// <param name="size">The size of the vector.</param>
/// <remarks>Creates a vector of the same type as the current matrix.</remarks>
public Vector<T> CreateVector(int size)
{
return Storage.IsDense
? Build.Dense(size)
: Build.Sparse(size);
}
/// <summary>
/// Returns a deep-copy clone of the vector.
/// </summary>
/// <returns>A deep-copy clone of the vector.</returns>
public Vector<T> Clone()
{
var result = CreateVector(Count);
var result = Build.SameAs(this);
Storage.CopyToUnchecked(result.Storage, skipClearing: true);
return result;
}
@ -209,7 +184,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// <exception cref="ArgumentException">If <paramref name="count"/> is not positive.</exception>
public Vector<T> SubVector(int index, int count)
{
var target = CreateVector(count);
var target = Build.SameAs(this, count);
Storage.CopySubVectorTo(target.Storage, index, 0, count, skipClearing: true);
return target;
}
@ -270,7 +245,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// </returns>
public Matrix<T> ToColumnMatrix()
{
var result = CreateMatrix(Count, 1);
var result = Matrix<T>.Build.SameAs(this, Count, 1);
Storage.CopyToColumnUnchecked(result.Storage, 0, skipClearing: true);
return result;
}
@ -283,7 +258,7 @@ namespace MathNet.Numerics.LinearAlgebra
/// </returns>
public Matrix<T> ToRowMatrix()
{
var result = CreateMatrix(1, Count);
var result = Matrix<T>.Build.SameAs(this, 1, Count);
Storage.CopyToRowUnchecked(result.Storage, 0, skipClearing: true);
return result;
}

3
src/UnitTests/LinearAlgebraTests/Complex/DenseVectorTests.cs

@ -159,7 +159,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateDenseMatrix()
{
var vector = new DenseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<Complex>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<DenseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

3
src/UnitTests/LinearAlgebraTests/Complex/SparseVectorTest.cs

@ -144,7 +144,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateSparseMatrix()
{
var vector = new SparseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<Complex>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<SparseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

4
src/UnitTests/LinearAlgebraTests/Complex/VectorTests.cs

@ -150,7 +150,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateMatrix()
{
var vector = CreateVector(Data);
var matrix = vector.CreateMatrix(10, 10);
var matrix = Matrix<Complex>.Build.SameAs(vector, 10, 10);
Assert.AreEqual(matrix.RowCount, 10);
Assert.AreEqual(matrix.ColumnCount, 10);
}
@ -162,7 +162,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public void CanCreateVector()
{
var expected = CreateVector(5);
var actual = expected.CreateVector(5);
var actual = Vector<Complex>.Build.SameAs(expected, 5);
Assert.AreEqual(expected.Storage.IsDense, actual.Storage.IsDense, "vectors are same kind.");
}

3
src/UnitTests/LinearAlgebraTests/Complex32/DenseVectorTests.cs

@ -155,7 +155,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateDenseMatrix()
{
var vector = new DenseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<Complex32>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<DenseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

3
src/UnitTests/LinearAlgebraTests/Complex32/SparseVectorTest.cs

@ -140,7 +140,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateSparseMatrix()
{
var vector = new SparseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<Complex32>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<SparseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

4
src/UnitTests/LinearAlgebraTests/Complex32/VectorTests.cs

@ -146,7 +146,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateMatrix()
{
var vector = CreateVector(Data);
var matrix = vector.CreateMatrix(10, 10);
var matrix = Matrix<Complex32>.Build.SameAs(vector, 10, 10);
Assert.AreEqual(matrix.RowCount, 10);
Assert.AreEqual(matrix.ColumnCount, 10);
}
@ -158,7 +158,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public void CanCreateVector()
{
var expected = CreateVector(5);
var actual = expected.CreateVector(5);
var actual = Vector<Complex32>.Build.SameAs(expected, 5);
Assert.AreEqual(expected.Storage.IsDense, actual.Storage.IsDense, "vectors are same kind.");
}

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

@ -153,7 +153,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateDenseMatrix()
{
var vector = new DenseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<double>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<DenseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

3
src/UnitTests/LinearAlgebraTests/Double/SparseVectorTest.cs

@ -138,7 +138,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateSparseMatrix()
{
var vector = new SparseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<double>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<SparseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

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

@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateMatrix()
{
var vector = CreateVector(Data);
var matrix = vector.CreateMatrix(10, 10);
var matrix = Matrix<double>.Build.SameAs(vector, 10, 10);
Assert.AreEqual(matrix.RowCount, 10);
Assert.AreEqual(matrix.ColumnCount, 10);
}
@ -155,7 +155,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public void CanCreateVector()
{
var expected = CreateVector(5);
var actual = expected.CreateVector(5);
var actual = Vector<double>.Build.SameAs(expected, 5);
Assert.AreEqual(expected.Storage.IsDense, actual.Storage.IsDense, "vectors are same kind.");
}

3
src/UnitTests/LinearAlgebraTests/Single/DenseVectorTests.cs

@ -153,7 +153,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public void CanCreateDenseMatrix()
{
var vector = new DenseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<float>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<DenseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

3
src/UnitTests/LinearAlgebraTests/Single/SparseVectorTest.cs

@ -138,7 +138,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public void CanCreateSparseMatrix()
{
var vector = new SparseVector(3);
var matrix = vector.CreateMatrix(2, 3);
var matrix = Matrix<float>.Build.SameAs(vector, 2, 3);
Assert.IsInstanceOf<SparseMatrix>(matrix);
Assert.AreEqual(2, matrix.RowCount);
Assert.AreEqual(3, matrix.ColumnCount);
}

4
src/UnitTests/LinearAlgebraTests/Single/VectorTests.cs

@ -143,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public void CanCreateMatrix()
{
var vector = CreateVector(Data);
var matrix = vector.CreateMatrix(10, 10);
var matrix = Matrix<float>.Build.SameAs(vector, 10, 10);
Assert.AreEqual(matrix.RowCount, 10);
Assert.AreEqual(matrix.ColumnCount, 10);
}
@ -155,7 +155,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public void CanCreateVector()
{
var expected = CreateVector(5);
var actual = expected.CreateVector(5);
var actual = Vector<float>.Build.SameAs(expected, 5);
Assert.AreEqual(expected.Storage.IsDense, actual.Storage.IsDense, "vectors are same kind.");
}

2
src/UnitTests/LinearAlgebraTests/VectorArithmeticTheory.cs

@ -72,7 +72,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests
var c = vector.Clone();
c.Subtract(vector, c);
Assert.That(c.Equals(vector.CreateVector(vector.Count)));
Assert.That(c.Equals(Vector<T>.Build.SameAs(vector)));
}
[Theory, Timeout(200)]

Loading…
Cancel
Save