From 720abbdb7479244c6a110f1ea9dedc1a680132bd Mon Sep 17 00:00:00 2001 From: Marcus Cuda Date: Tue, 18 Aug 2009 14:56:43 +0800 Subject: [PATCH] Vector: Added array constructor - keeps a reference, does not make a copy Signed-off-by: Marcus Cuda --- src/Numerics/LinearAlgebra/Double/DenseVector.cs | 11 +++++++++++ .../Double/DenseVectorTests.cs | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/Numerics/LinearAlgebra/Double/DenseVector.cs b/src/Numerics/LinearAlgebra/Double/DenseVector.cs index ee6891c7..7985ecfa 100644 --- a/src/Numerics/LinearAlgebra/Double/DenseVector.cs +++ b/src/Numerics/LinearAlgebra/Double/DenseVector.cs @@ -103,6 +103,17 @@ namespace MathNet.Numerics.LinearAlgebra.Double } } + /// + /// Initializes a new instance of the class for an array. + /// + /// The array to create this vector from. + /// The vector does not copy the array, but keeps a reference to it. Any + /// changes to the vector will also change the array. + public DenseVector(double[] array) : base(array.Length) + { + Data = array; + } + /// /// Gets the vector's data. /// diff --git a/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs b/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs index f2e7bac6..875dc33b 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/DenseVectorTests.cs +++ b/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]); + } } }