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]);
+ }
}
}