Browse Source

vector: changed IndexedEnumberator from returning KeyValuePair to a Tuple to be consistent with the Matrix version

pull/36/head
Marcus Cuda 16 years ago
parent
commit
ec85c4152f
  1. 2
      src/Examples/LinearAlgebra/VectorDataAccessor.cs
  2. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs
  3. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs
  4. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs
  5. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs
  6. 2
      src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs
  7. 8
      src/Numerics/LinearAlgebra/Complex/SparseVector.cs
  8. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs
  9. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs
  10. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs
  11. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs
  12. 2
      src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs
  13. 8
      src/Numerics/LinearAlgebra/Complex32/SparseVector.cs
  14. 2
      src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs
  15. 2
      src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs
  16. 2
      src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs
  17. 2
      src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs
  18. 2
      src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs
  19. 8
      src/Numerics/LinearAlgebra/Double/SparseVector.cs
  20. 4
      src/Numerics/LinearAlgebra/Generic/Matrix.cs
  21. 15
      src/Numerics/LinearAlgebra/Generic/Vector.cs
  22. 20
      src/Numerics/LinearAlgebra/IO/MatlabWriter.cs
  23. 2
      src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs
  24. 2
      src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs
  25. 2
      src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs
  26. 2
      src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs
  27. 2
      src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs
  28. 8
      src/Numerics/LinearAlgebra/Single/SparseVector.cs
  29. 2
      src/UnitTests/LinearAlgebraTests/Complex/VectorTests.cs
  30. 2
      src/UnitTests/LinearAlgebraTests/Complex32/VectorTests.cs
  31. 2
      src/UnitTests/LinearAlgebraTests/Double/VectorTests.cs
  32. 2
      src/UnitTests/LinearAlgebraTests/Single/VectorTests.cs

2
src/Examples/LinearAlgebra/VectorDataAccessor.cs

@ -149,7 +149,7 @@ namespace Examples.LinearAlgebra
Console.WriteLine(@"11. Enumerator usage");
foreach (var value in vectorA.GetIndexedEnumerator())
{
Console.WriteLine(@"Index = {0}; Value = {1}", value.Key, value.Value.ToString("#0.00\t", formatProvider));
Console.WriteLine(@"Index = {0}; Value = {1}", value.Item1, value.Item2.ToString("#0.00\t", formatProvider));
}
Console.WriteLine();

2
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/BiCgStab.cs

@ -528,7 +528,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/CompositeSolver.cs

@ -624,7 +624,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/GpBiCg.cs

@ -638,7 +638,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/MlkBiCgStab.cs

@ -805,7 +805,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex/Solvers/Iterative/TFQMR.cs

@ -533,7 +533,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

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

@ -1326,16 +1326,16 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// </returns>
/// <remarks>
/// The enumerator returns a
/// <seealso cref="KeyValuePair{T,K}"/>
/// with the key being the element index and the value
/// <seealso cref="Tuple{T,K}"/>
/// with the first value being the element index and the second value
/// being the value of the element at that index. For sparse vectors, the enumerator will exclude all elements
/// with a zero value.
/// </remarks>
public override IEnumerable<KeyValuePair<int, Complex>> GetIndexedEnumerator()
public override IEnumerable<Tuple<int, Complex>> GetIndexedEnumerator()
{
for (var i = 0; i < NonZerosCount; i++)
{
yield return new KeyValuePair<int, Complex>(_nonZeroIndices[i], _nonZeroValues[i]);
yield return new Tuple<int, Complex>(_nonZeroIndices[i], _nonZeroValues[i]);
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/BiCgStab.cs

@ -527,7 +527,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/CompositeSolver.cs

@ -621,7 +621,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/GpBiCg.cs

@ -638,7 +638,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/MlkBiCgStab.cs

@ -804,7 +804,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Complex32/Solvers/Iterative/TFQMR.cs

@ -533,7 +533,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

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

@ -1356,16 +1356,16 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// </returns>
/// <remarks>
/// The enumerator returns a
/// <seealso cref="KeyValuePair{T,K}"/>
/// with the key being the element index and the value
/// <seealso cref="Tuple{T,K}"/>
/// with the first value being the element index and the second value
/// being the value of the element at that index. For sparse vectors, the enumerator will exclude all elements
/// with a zero value.
/// </remarks>
public override IEnumerable<KeyValuePair<int, Complex32>> GetIndexedEnumerator()
public override IEnumerable<Tuple<int, Complex32>> GetIndexedEnumerator()
{
for (var i = 0; i < NonZerosCount; i++)
{
yield return new KeyValuePair<int, Complex32>(_nonZeroIndices[i], _nonZeroValues[i]);
yield return new Tuple<int, Complex32>(_nonZeroIndices[i], _nonZeroValues[i]);
}
}

2
src/Numerics/LinearAlgebra/Double/Solvers/Iterative/BiCgStab.cs

@ -526,7 +526,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Double/Solvers/Iterative/CompositeSolver.cs

@ -619,7 +619,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Double/Solvers/Iterative/GpBiCg.cs

@ -637,7 +637,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Double/Solvers/Iterative/MlkBiCgStab.cs

@ -798,7 +798,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Double/Solvers/Iterative/TFQMR.cs

@ -532,7 +532,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

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

@ -1361,16 +1361,16 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// </returns>
/// <remarks>
/// The enumerator returns a
/// <seealso cref="KeyValuePair{T,K}"/>
/// with the key being the element index and the value
/// <seealso cref="Tuple{T,K}"/>
/// with the first value being the element index and the second value
/// being the value of the element at that index. For sparse vectors, the enumerator will exclude all elements
/// with a zero value.
/// </remarks>
public override IEnumerable<KeyValuePair<int, double>> GetIndexedEnumerator()
public override IEnumerable<Tuple<int, double>> GetIndexedEnumerator()
{
for (var i = 0; i < NonZerosCount; i++)
{
yield return new KeyValuePair<int, double>(_nonZeroIndices[i], _nonZeroValues[i]);
yield return new Tuple<int, double>(_nonZeroIndices[i], _nonZeroValues[i]);
}
}

4
src/Numerics/LinearAlgebra/Generic/Matrix.cs

@ -1253,7 +1253,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
var columnIndex = column.Key * RowCount;
foreach (var element in column.Value.GetIndexedEnumerator())
{
ret[columnIndex + element.Key] = element.Value;
ret[columnIndex + element.Item1] = element.Item2;
}
}
@ -1278,7 +1278,7 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
var rowIndex = row.Key * ColumnCount;
foreach (var element in row.Value.GetIndexedEnumerator())
{
ret[rowIndex + element.Key] = element.Value;
ret[rowIndex + element.Item1] = element.Item2;
}
}

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

@ -731,7 +731,12 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// <summary>
/// Pointwise divide this vector with another vector and stores the result into the result vector.
/// </summary>
/// <param name="other">The vector to pointwise divide this one by.</param>
/// <param name="other">
/// The vector to pointwise divide this one by.
/// </param>
/// <param name="result">
/// The result of the division.
/// </param>
protected abstract void DoPointwiseDivide(Vector<T> other, Vector<T> result);
/// <summary>
@ -1389,16 +1394,16 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
/// </returns>
/// <remarks>
/// The enumerator returns a
/// <seealso cref="KeyValuePair{T,K}"/>
/// with the key being the element index and the value
/// <seealso cref="Tuple{T,K}"/>
/// with the first value being the element index and the second value
/// being the value of the element at that index. For sparse vectors, the enumerator will exclude all elements
/// with a zero value.
/// </remarks>
public virtual IEnumerable<KeyValuePair<int, T>> GetIndexedEnumerator()
public virtual IEnumerable<Tuple<int, T>> GetIndexedEnumerator()
{
for (var i = 0; i < Count; i++)
{
yield return new KeyValuePair<int, T>(i, this[i]);
yield return new Tuple<int, T>(i, this[i]);
}
}

20
src/Numerics/LinearAlgebra/IO/MatlabWriter.cs

@ -483,7 +483,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Key);
dataWriter.Write(row.Item1);
}
}
@ -518,7 +518,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value);
dataWriter.Write(row.Item2);
}
}
@ -551,7 +551,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Key);
dataWriter.Write(row.Item1);
}
}
@ -586,7 +586,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value);
dataWriter.Write(row.Item2);
}
}
@ -622,7 +622,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Key);
dataWriter.Write(row.Item1);
}
}
@ -657,7 +657,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value.Real);
dataWriter.Write(row.Item2.Real);
}
}
@ -668,7 +668,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value.Real);
dataWriter.Write(row.Item2.Real);
}
}
@ -701,7 +701,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Key);
dataWriter.Write(row.Item1);
}
}
@ -736,7 +736,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value.Real);
dataWriter.Write(row.Item2.Real);
}
}
@ -750,7 +750,7 @@ namespace MathNet.Numerics.LinearAlgebra.IO
{
foreach (var row in column.Value.GetIndexedEnumerator())
{
dataWriter.Write(row.Value.Real);
dataWriter.Write(row.Item2.Real);
}
}

2
src/Numerics/LinearAlgebra/Single/Solvers/Iterative/BiCgStab.cs

@ -526,7 +526,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Single/Solvers/Iterative/CompositeSolver.cs

@ -621,7 +621,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Single/Solvers/Iterative/GpBiCg.cs

@ -637,7 +637,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Single/Solvers/Iterative/MlkBiCgStab.cs

@ -800,7 +800,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

2
src/Numerics/LinearAlgebra/Single/Solvers/Iterative/TFQMR.cs

@ -532,7 +532,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers.Iterative
var solution = Solve(matrix, (Vector)input.Column(column));
foreach (var element in solution.GetIndexedEnumerator())
{
result.At(element.Key, column, element.Value);
result.At(element.Item1, column, element.Item2);
}
}
}

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

@ -1368,16 +1368,16 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// </returns>
/// <remarks>
/// The enumerator returns a
/// <seealso cref="KeyValuePair{T,K}"/>
/// with the key being the element index and the value
/// <seealso cref="Tuple{T,K}"/>
/// with the first value being the element index and the second value
/// being the value of the element at that index. For sparse vectors, the enumerator will exclude all elements
/// with a zero value.
/// </remarks>
public override IEnumerable<KeyValuePair<int, float>> GetIndexedEnumerator()
public override IEnumerable<Tuple<int, float>> GetIndexedEnumerator()
{
for (var i = 0; i < NonZerosCount; i++)
{
yield return new KeyValuePair<int, float>(_nonZeroIndices[i], _nonZeroValues[i]);
yield return new Tuple<int, float>(_nonZeroIndices[i], _nonZeroValues[i]);
}
}

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

@ -240,7 +240,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
var vector = CreateVector(Data);
foreach (var pair in vector.GetIndexedEnumerator())
{
Assert.AreEqual(Data[pair.Key], pair.Value);
Assert.AreEqual(Data[pair.Item1], pair.Item2);
}
}

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

@ -240,7 +240,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
var vector = CreateVector(Data);
foreach (var pair in vector.GetIndexedEnumerator())
{
Assert.AreEqual(Data[pair.Key], pair.Value);
Assert.AreEqual(Data[pair.Item1], pair.Item2);
}
}

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

@ -238,7 +238,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
var vector = CreateVector(Data);
foreach (var pair in vector.GetIndexedEnumerator())
{
Assert.AreEqual(Data[pair.Key], pair.Value);
Assert.AreEqual(Data[pair.Item1], pair.Item2);
}
}

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

@ -238,7 +238,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
var vector = CreateVector(Data);
foreach (var pair in vector.GetIndexedEnumerator())
{
Assert.AreEqual(Data[pair.Key], pair.Value);
Assert.AreEqual(Data[pair.Item1], pair.Item2);
}
}

Loading…
Cancel
Save