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