Browse Source

LA: cleanup from QR decomposition simplifications

optimization-1
Christoph Ruegg 13 years ago
parent
commit
51dabc9686
  1. 20
      src/Numerics/LinearAlgebra/Single/Factorization/DenseQR.cs

20
src/Numerics/LinearAlgebra/Single/Factorization/DenseQR.cs

@ -65,24 +65,24 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Factorization
throw Matrix.DimensionsDontMatch<ArgumentException>(matrix); throw Matrix.DimensionsDontMatch<ArgumentException>(matrix);
} }
var Tau = new float[Math.Min(matrix.RowCount, matrix.ColumnCount)]; var tau = new float[Math.Min(matrix.RowCount, matrix.ColumnCount)];
Matrix<float> Q; Matrix<float> q;
Matrix<float> MatrixR; Matrix<float> r;
if (method == QRMethod.Full) if (method == QRMethod.Full)
{ {
MatrixR = matrix.Clone(); r = matrix.Clone();
Q = new DenseMatrix(matrix.RowCount); q = new DenseMatrix(matrix.RowCount);
Control.LinearAlgebraProvider.QRFactor(((DenseMatrix) MatrixR).Values, matrix.RowCount, matrix.ColumnCount, ((DenseMatrix) Q).Values, Tau); Control.LinearAlgebraProvider.QRFactor(((DenseMatrix) r).Values, matrix.RowCount, matrix.ColumnCount, ((DenseMatrix) q).Values, tau);
} }
else else
{ {
Q = matrix.Clone(); q = matrix.Clone();
MatrixR = new DenseMatrix(matrix.ColumnCount); r = new DenseMatrix(matrix.ColumnCount);
Control.LinearAlgebraProvider.ThinQRFactor(((DenseMatrix) Q).Values, matrix.RowCount, matrix.ColumnCount, ((DenseMatrix) MatrixR).Values, Tau); Control.LinearAlgebraProvider.ThinQRFactor(((DenseMatrix) q).Values, matrix.RowCount, matrix.ColumnCount, ((DenseMatrix) r).Values, tau);
} }
return new DenseQR(Q, MatrixR, method, Tau); return new DenseQR(q, r, method, tau);
} }
DenseQR(Matrix<float> q, Matrix<float> rFull, QRMethod method, float[] tau) DenseQR(Matrix<float> q, Matrix<float> rFull, QRMethod method, float[] tau)

Loading…
Cancel
Save