Browse Source

Vector: Added array constructor - keeps a reference, does not make a copy

Signed-off-by: Marcus Cuda <marcus@cuda.net>
pull/36/head
Marcus Cuda 17 years ago
parent
commit
720abbdb74
  1. 11
      src/Numerics/LinearAlgebra/Double/DenseVector.cs
  2. 16
      src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs

11
src/Numerics/LinearAlgebra/Double/DenseVector.cs

@ -103,6 +103,17 @@ namespace MathNet.Numerics.LinearAlgebra.Double
}
}
/// <summary>
/// Initializes a new instance of the <see cref="DenseVector"/> class for an array.
/// </summary>
/// <param name="array">The array to create this vector from.</param>
/// <remarks>The vector does not copy the array, but keeps a reference to it. Any
/// changes to the vector will also change the array.</remarks>
public DenseVector(double[] array) : base(array.Length)
{
Data = array;
}
/// <summary>
/// Gets the vector's data.
/// </summary>

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

@ -1,4 +1,5 @@
using System.Collections.Generic;
using MbUnit.Framework;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
{
@ -21,5 +22,20 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
return vector;
}
[Test]
[MultipleAsserts]
public void CanCreateVectorFromArray()
{
var data = new[] { 1.0, 2.0, 3.0, 4.0 };
var vector = new DenseVector(data);
Assert.AreSame(data, vector.Data);
for( var i = 0; i < data.Length; i++)
{
Assert.AreEqual(data[i], vector[i]);
}
vector[0] = 100.0;
Assert.AreEqual(100.0, data[0]);
}
}
}

Loading…
Cancel
Save