Browse Source

LA: fix IsConjugateSymmetric to ensure diagonal is real

provider
Christoph Ruegg 13 years ago
parent
commit
d7124278af
  1. 13
      src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
  2. 8
      src/Numerics/LinearAlgebra/Complex/DiagonalMatrix.cs
  3. 8
      src/Numerics/LinearAlgebra/Complex/Matrix.cs
  4. 9
      src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
  5. 8
      src/Numerics/LinearAlgebra/Complex32/DiagonalMatrix.cs
  6. 8
      src/Numerics/LinearAlgebra/Complex32/Matrix.cs

13
src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs

@ -669,7 +669,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
} }
return; return;
} }
base.DoMultiply(other, result); base.DoMultiply(other, result);
} }
@ -804,7 +804,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
denseResult.Values); denseResult.Values);
return; return;
} }
base.DoTransposeThisAndMultiply(rightSide, result); base.DoTransposeThisAndMultiply(rightSide, result);
} }
@ -1263,6 +1263,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return false; 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++) for (var j = 0; j < ColumnCount; j++)
{ {
var index = j * RowCount; var index = j * RowCount;

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

@ -1018,6 +1018,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
/// </summary> /// </summary>
public override sealed bool IsConjugateSymmetric() public override sealed bool IsConjugateSymmetric()
{ {
for (var k = 0; k < _data.Length; k ++)
{
if (!_data[k].IsReal())
{
return false;
}
}
return true; return true;
} }
} }

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

@ -671,6 +671,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
return false; 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 row = 0; row < RowCount; row++)
{ {
for (var column = row + 1; column < ColumnCount; column++) for (var column = row + 1; column < ColumnCount; column++)

9
src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs

@ -1260,6 +1260,15 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
return false; 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++) for (var j = 0; j < ColumnCount; j++)
{ {
var index = j * RowCount; var index = j * RowCount;

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

@ -1012,6 +1012,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
/// </summary> /// </summary>
public override sealed bool IsConjugateSymmetric() public override sealed bool IsConjugateSymmetric()
{ {
for (var k = 0; k < _data.Length; k++)
{
if (!_data[k].IsReal())
{
return false;
}
}
return true; return true;
} }
} }

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

@ -665,6 +665,14 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
return false; 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 row = 0; row < RowCount; row++)
{ {
for (var column = row + 1; column < ColumnCount; column++) for (var column = row + 1; column < ColumnCount; column++)

Loading…
Cancel
Save