Browse Source

LA: Vector.ToArray should use storage copy routines #96

pull/82/merge
Christoph Ruegg 14 years ago
parent
commit
4557f67de4
  1. 17
      src/Numerics/LinearAlgebra/Complex/SparseVector.cs
  2. 17
      src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
  3. 17
      src/Numerics/LinearAlgebra/Double/SparseVector.cs
  4. 12
      src/Numerics/LinearAlgebra/Generic/Vector.cs
  5. 17
      src/Numerics/LinearAlgebra/Single/SparseVector.cs

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

@ -1325,22 +1325,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
yield return new Tuple<int, Complex>(_storage.Indices[i], _storage.Values[i]);
}
}
/// <summary>
/// Returns the data contained in the vector as an array.
/// </summary>
/// <returns>
/// The vector's data as an array.
/// </returns>
public override Complex[] ToArray()
{
var ret = new Complex[Count];
for (var i = 0; i < _storage.ValueCount; i++)
{
ret[_storage.Indices[i]] = _storage.Values[i];
}
return ret;
}
}
}

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

@ -1325,22 +1325,5 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
yield return new Tuple<int, Complex32>(_storage.Indices[i], _storage.Values[i]);
}
}
/// <summary>
/// Returns the data contained in the vector as an array.
/// </summary>
/// <returns>
/// The vector's data as an array.
/// </returns>
public override Complex32[] ToArray()
{
var ret = new Complex32[Count];
for (var i = 0; i < _storage.ValueCount; i++)
{
ret[_storage.Indices[i]] = _storage.Values[i];
}
return ret;
}
}
}

17
src/Numerics/LinearAlgebra/Double/SparseVector.cs

@ -1377,22 +1377,5 @@ namespace MathNet.Numerics.LinearAlgebra.Double
yield return new Tuple<int, double>(_storage.Indices[i], _storage.Values[i]);
}
}
/// <summary>
/// Returns the data contained in the vector as an array.
/// </summary>
/// <returns>
/// The vector's data as an array.
/// </returns>
public override double[] ToArray()
{
var ret = new double[Count];
for (var i = 0; i < _storage.ValueCount; i++)
{
ret[_storage.Indices[i]] = _storage.Values[i];
}
return ret;
}
}
}

12
src/Numerics/LinearAlgebra/Generic/Vector.cs

@ -1240,15 +1240,11 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// <returns>
/// The vector's data as an array.
/// </returns>
public virtual T[] ToArray()
public T[] ToArray()
{
var ret = new T[Count];
for (var i = 0; i < ret.Length; i++)
{
ret[i] = At(i);
}
return ret;
var result = new DenseVectorStorage<T>(Count);
Storage.CopyToUnchecked(result, skipClearing: true);
return result.Data;
}
/// <summary>

17
src/Numerics/LinearAlgebra/Single/SparseVector.cs

@ -1375,22 +1375,5 @@ namespace MathNet.Numerics.LinearAlgebra.Single
yield return new Tuple<int, float>(_storage.Indices[i], _storage.Values[i]);
}
}
/// <summary>
/// Returns the data contained in the vector as an array.
/// </summary>
/// <returns>
/// The vector's data as an array.
/// </returns>
public override float[] ToArray()
{
var ret = new float[Count];
for (var i = 0; i < _storage.ValueCount; i++)
{
ret[_storage.Indices[i]] = _storage.Values[i];
}
return ret;
}
}
}

Loading…
Cancel
Save