diff --git a/src/Numerics/LinearAlgebra/Complex/Vector.cs b/src/Numerics/LinearAlgebra/Complex/Vector.cs
index 1da687e1..b32957c9 100644
--- a/src/Numerics/LinearAlgebra/Complex/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Vector.cs
@@ -200,7 +200,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// A vector to store the results in.
protected override void DoModulus(Complex divisor, Vector result)
{
- throw new NotImplementedException();
+ throw new NotSupportedException();
}
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/Vector.cs b/src/Numerics/LinearAlgebra/Complex32/Vector.cs
index fc1a2b7c..60a3ffc3 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Vector.cs
@@ -200,7 +200,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// A vector to store the results in.
protected override void DoModulus(Complex32 divisor, Vector result)
{
- throw new NotImplementedException();
+ throw new NotSupportedException();
}
///
diff --git a/src/Numerics/LinearAlgebra/Double/DenseVector.cs b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
index 6c663881..81e60bd0 100644
--- a/src/Numerics/LinearAlgebra/Double/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Double/DenseVector.cs
@@ -494,20 +494,20 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// A vector to store the results in.
protected override void DoModulus(double divisor, Vector result)
{
- var denseResult = result as DenseVector;
- if (denseResult == null)
+ var dense = result as DenseVector;
+ if (dense == null)
{
- for (var index = 0; index < _length; index++)
- {
- result.At(index, _values[index] % divisor);
- }
+ base.DoModulus(divisor, result);
}
else
{
- for (var index = 0; index < _length; index++)
- {
- denseResult._values[index] = _values[index] % divisor;
- }
+ CommonParallel.For(0, _length, 4096, (a, b) =>
+ {
+ for (int i = a; i < b; i++)
+ {
+ dense._values[i] = _values[i]%divisor;
+ }
+ });
}
}
diff --git a/src/Numerics/LinearAlgebra/Double/Vector.cs b/src/Numerics/LinearAlgebra/Double/Vector.cs
index a52a2d8b..26510d32 100644
--- a/src/Numerics/LinearAlgebra/Double/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Double/Vector.cs
@@ -199,9 +199,9 @@ namespace MathNet.Numerics.LinearAlgebra.Double
/// A vector to store the results in.
protected override void DoModulus(double divisor, Vector result)
{
- for (var index = 0; index < Count; index++)
+ for (int i = 0; i < Count; i++)
{
- result[index] = At(index) % divisor;
+ result.At(i, At(i)%divisor);
}
}
diff --git a/src/Numerics/LinearAlgebra/Single/DenseVector.cs b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
index cf6c3df9..4323a6c0 100644
--- a/src/Numerics/LinearAlgebra/Single/DenseVector.cs
+++ b/src/Numerics/LinearAlgebra/Single/DenseVector.cs
@@ -483,20 +483,20 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// A vector to store the results in.
protected override void DoModulus(float divisor, Vector result)
{
- var denseResult = result as DenseVector;
- if (denseResult == null)
+ var dense = result as DenseVector;
+ if (dense == null)
{
- for (var index = 0; index < _length; index++)
- {
- result.At(index, _values[index] % divisor);
- }
+ base.DoModulus(divisor, result);
}
else
{
- for (var index = 0; index < _length; index++)
- {
- denseResult._values[index] = _values[index] % divisor;
- }
+ CommonParallel.For(0, _length, 4096, (a, b) =>
+ {
+ for (int i = a; i < b; i++)
+ {
+ dense._values[i] = _values[i]%divisor;
+ }
+ });
}
}
diff --git a/src/Numerics/LinearAlgebra/Single/Vector.cs b/src/Numerics/LinearAlgebra/Single/Vector.cs
index 53154b2b..ed86d2f2 100644
--- a/src/Numerics/LinearAlgebra/Single/Vector.cs
+++ b/src/Numerics/LinearAlgebra/Single/Vector.cs
@@ -199,9 +199,9 @@ namespace MathNet.Numerics.LinearAlgebra.Single
/// A vector to store the results in.
protected override void DoModulus(float divisor, Vector result)
{
- for (var index = 0; index < Count; index++)
+ for (int i = 0; i < Count; i++)
{
- result.At(index, At(index) % divisor);
+ result.At(i, At(i)%divisor);
}
}