diff --git a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
index f9107c06..997f4db2 100644
--- a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
+++ b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
@@ -2906,5 +2906,56 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
matrixD[i*order + i] = vectorEv[i];
}
}
+
+ ///
+ /// Assumes that and have already been transposed.
+ ///
+ protected static void GetRow(Transpose transpose, int rowindx, int numRows, int numCols, Complex[] matrix, Complex[] row)
+ {
+ if (transpose == Transpose.DontTranspose)
+ {
+ for (int i = 0; i < numCols; i++)
+ {
+ row[i] = matrix[(i * numRows) + rowindx];
+ }
+ }
+ else if (transpose == Transpose.ConjugateTranspose)
+ {
+ int offset = rowindx * numCols;
+ for (int i = 0; i < row.Length; i++)
+ {
+ row[i] = matrix[i + offset].Conjugate();
+ }
+ }
+ else
+ {
+ Array.Copy(matrix, rowindx * numCols, row, 0, numCols);
+ }
+ }
+
+ ///
+ /// Assumes that and have already been transposed.
+ ///
+ protected static void GetColumn(Transpose transpose, int colindx, int numRows, int numCols, Complex[] matrix, Complex[] column)
+ {
+ if (transpose == Transpose.DontTranspose)
+ {
+ Array.Copy(matrix, colindx * numRows, column, 0, numRows);
+ }
+ else if (transpose == Transpose.ConjugateTranspose)
+ {
+ for (int i = 0; i < numRows; i++)
+ {
+ column[i] = matrix[(i * numCols) + colindx].Conjugate();
+ }
+ }
+ else
+ {
+ for (int i = 0; i < numRows; i++)
+ {
+ column[i] = matrix[(i * numCols) + colindx];
+ }
+ }
+ }
}
}
diff --git a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
index aebc2fa8..7cb64870 100644
--- a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
+++ b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
@@ -2903,5 +2903,56 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
}
}
}
+
+ ///
+ /// Assumes that and have already been transposed.
+ ///
+ protected static void GetRow(Transpose transpose, int rowindx, int numRows, int numCols, Complex32[] matrix, Complex32[] row)
+ {
+ if (transpose == Transpose.DontTranspose)
+ {
+ for (int i = 0; i < numCols; i++)
+ {
+ row[i] = matrix[(i*numRows) + rowindx];
+ }
+ }
+ else if (transpose == Transpose.ConjugateTranspose)
+ {
+ int offset = rowindx*numCols;
+ for (int i = 0; i < row.Length; i++)
+ {
+ row[i] = matrix[i + offset].Conjugate();
+ }
+ }
+ else
+ {
+ Array.Copy(matrix, rowindx*numCols, row, 0, numCols);
+ }
+ }
+
+ ///
+ /// Assumes that and have already been transposed.
+ ///
+ protected static void GetColumn(Transpose transpose, int colindx, int numRows, int numCols, Complex32[] matrix, Complex32[] column)
+ {
+ if (transpose == Transpose.DontTranspose)
+ {
+ Array.Copy(matrix, colindx*numRows, column, 0, numRows);
+ }
+ else if (transpose == Transpose.ConjugateTranspose)
+ {
+ for (int i = 0; i < numRows; i++)
+ {
+ column[i] = matrix[(i*numCols) + colindx].Conjugate();
+ }
+ }
+ else
+ {
+ for (int i = 0; i < numRows; i++)
+ {
+ column[i] = matrix[(i*numCols) + colindx];
+ }
+ }
+ }
}
}
diff --git a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.cs b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.cs
index 9ee47a8a..1700755d 100644
--- a/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.cs
+++ b/src/Numerics/Providers/LinearAlgebra/ManagedLinearAlgebraProvider.cs
@@ -75,7 +75,6 @@ namespace MathNet.Numerics.Providers.LinearAlgebra
return "Managed";
}
-
///
/// Assumes that and have already been transposed.
///