diff --git a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
index e156a272..f88f614a 100644
--- a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
@@ -379,37 +379,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- var denseLeft = leftSide as DenseVector;
- var denseResult = result as DenseVector;
-
- if (denseLeft == null || denseResult == null)
- {
- base.DoLeftMultiply(leftSide, result);
- }
- else
- {
- Control.LinearAlgebraProvider.MatrixMultiplyWithUpdate(
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- 1.0,
- denseLeft.Data,
- 1,
- denseLeft.Count,
- Data,
- RowCount,
- ColumnCount,
- 0.0,
- denseResult.Data);
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs
index 8a72071b..6e6c76f8 100644
--- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Matrix.cs
@@ -207,25 +207,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- for (var j = 0; j < ColumnCount; j++)
- {
- var s = Complex.Zero;
- for (var i = 0; i != leftSide.Count; i++)
- {
- s += leftSide[i] * At(i, j);
- }
-
- result[j] = s;
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
index 29b66e5f..b2e16a64 100644
--- a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
@@ -379,37 +379,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- var denseLeft = leftSide as DenseVector;
- var denseResult = result as DenseVector;
-
- if (denseLeft == null || denseResult == null)
- {
- base.DoLeftMultiply(leftSide, result);
- }
- else
- {
- Control.LinearAlgebraProvider.MatrixMultiplyWithUpdate(
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- 1.0f,
- denseLeft.Data,
- 1,
- denseLeft.Count,
- Data,
- RowCount,
- ColumnCount,
- 0.0f,
- denseResult.Data);
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
index 650174fa..a3f1944c 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs
@@ -217,25 +217,6 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
DoMultiply(1.0f / scalar, result);
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- for (var j = 0; j < ColumnCount; j++)
- {
- var s = Complex32.Zero;
- for (var i = 0; i != leftSide.Count; i++)
- {
- s += leftSide[i] * At(i, j);
- }
-
- result[j] = s;
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
index 22930321..2f8d6cd0 100644
--- a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
@@ -420,37 +420,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- var denseLeft = leftSide as DenseVector;
- var denseResult = result as DenseVector;
-
- if (denseLeft == null || denseResult == null)
- {
- base.DoLeftMultiply(leftSide, result);
- }
- else
- {
- Control.LinearAlgebraProvider.MatrixMultiplyWithUpdate(
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- 1.0,
- denseLeft.Data,
- 1,
- denseLeft.Count,
- Data,
- RowCount,
- ColumnCount,
- 0.0,
- denseResult.Data);
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Double/Matrix.cs b/src/Numerics/LinearAlgebra/Double/Matrix.cs
index bf46f7f3..811d1ab1 100644
--- a/src/Numerics/LinearAlgebra/Double/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Double/Matrix.cs
@@ -207,25 +207,6 @@ namespace MathNet.Numerics.LinearAlgebra.Double
DoMultiply(1.0 / scalar, result);
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- for (var j = 0; j < ColumnCount; j++)
- {
- var s = 0.0;
- for (var i = 0; i != leftSide.Count; i++)
- {
- s += leftSide[i] * At(i, j);
- }
-
- result[j] = s;
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Generic/Matrix.Arithmetic.cs b/src/Numerics/LinearAlgebra/Generic/Matrix.Arithmetic.cs
index faa68ea2..69899694 100644
--- a/src/Numerics/LinearAlgebra/Generic/Matrix.Arithmetic.cs
+++ b/src/Numerics/LinearAlgebra/Generic/Matrix.Arithmetic.cs
@@ -420,7 +420,10 @@ namespace MathNet.Numerics.LinearAlgebra.Generic
///
/// The vector to multiply with.
/// The result of the multiplication.
- protected abstract void DoLeftMultiply(Vector leftSide, Vector result);
+ protected void DoLeftMultiply(Vector leftSide, Vector result)
+ {
+ DoTransposeThisAndMultiply(leftSide, result);
+ }
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
diff --git a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
index 3fe1d392..663b1033 100644
--- a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
@@ -419,37 +419,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- var denseLeft = leftSide as DenseVector;
- var denseResult = result as DenseVector;
-
- if (denseLeft == null || denseResult == null)
- {
- base.DoLeftMultiply(leftSide, result);
- }
- else
- {
- Control.LinearAlgebraProvider.MatrixMultiplyWithUpdate(
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- Algorithms.LinearAlgebra.Transpose.DontTranspose,
- 1.0f,
- denseLeft.Data,
- 1,
- denseLeft.Count,
- Data,
- RowCount,
- ColumnCount,
- 0.0f,
- denseResult.Data);
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///
diff --git a/src/Numerics/LinearAlgebra/Single/Matrix.cs b/src/Numerics/LinearAlgebra/Single/Matrix.cs
index 685fe010..144b3c73 100644
--- a/src/Numerics/LinearAlgebra/Single/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Single/Matrix.cs
@@ -197,25 +197,6 @@ namespace MathNet.Numerics.LinearAlgebra.Single
}
}
- ///
- /// Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
- ///
- /// The vector to multiply with.
- /// The result of the multiplication.
- protected override void DoLeftMultiply(Vector leftSide, Vector result)
- {
- for (var j = 0; j < ColumnCount; j++)
- {
- var s = 0.0f;
- for (var i = 0; i != leftSide.Count; i++)
- {
- s += leftSide[i] * At(i, j);
- }
-
- result[j] = s;
- }
- }
-
///
/// Multiplies this matrix with another matrix and places the results into the result matrix.
///