diff --git a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs index b8e7afc5..f1cd2171 100644 --- a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs @@ -669,7 +669,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex } return; } - + base.DoMultiply(other, result); } @@ -804,7 +804,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex denseResult.Values); return; } - + base.DoTransposeThisAndMultiply(rightSide, result); } @@ -1263,6 +1263,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex return false; } + int stride = RowCount + 1; + for (var k = 0; k < _values.Length; k += stride) + { + if (!_values[k].IsReal()) + { + return false; + } + } + for (var j = 0; j < ColumnCount; j++) { var index = j * RowCount; diff --git a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs index 8e1a6e0a..04fb7f65 100644 --- a/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs @@ -1018,6 +1018,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex /// public override sealed bool IsConjugateSymmetric() { + for (var k = 0; k < _data.Length; k ++) + { + if (!_data[k].IsReal()) + { + return false; + } + } + return true; } } diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs index 83695eb4..2c508211 100644 --- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/Matrix.cs @@ -671,6 +671,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex return false; } + for (var k = 0; k < RowCount; k++) + { + if (!At(k, k).IsReal()) + { + return false; + } + } + for (var row = 0; row < RowCount; row++) { for (var column = row + 1; column < ColumnCount; column++) diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs index a756020e..fd6a295f 100644 --- a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs @@ -1260,6 +1260,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 return false; } + int stride = RowCount + 1; + for (var k = 0; k < _values.Length; k += stride) + { + if (!_values[k].IsReal()) + { + return false; + } + } + for (var j = 0; j < ColumnCount; j++) { var index = j * RowCount; diff --git a/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs index 55f422cd..7a25a5d6 100644 --- a/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs @@ -1012,6 +1012,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 /// public override sealed bool IsConjugateSymmetric() { + for (var k = 0; k < _data.Length; k++) + { + if (!_data[k].IsReal()) + { + return false; + } + } + return true; } } diff --git a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs index e8dded99..79451d43 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs @@ -665,6 +665,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 return false; } + for (var k = 0; k < RowCount; k++) + { + if (!At(k, k).IsReal()) + { + return false; + } + } + for (var row = 0; row < RowCount; row++) { for (var column = row + 1; column < ColumnCount; column++)