Collaboration diagram for DSPF_dp_qrd:
Modules | |
DSPF_dp_qrd_inverse | |
DSPF_dp_qrd_solver | |
int | DSPF_dp_qrd (const int Nrows, const int Ncols, double *restrict A, double *restrict Q, double *restrict R, double *restrict u) |
int DSPF_dp_qrd | ( | const int | Nrows, | |
const int | Ncols, | |||
double *restrict | A, | |||
double *restrict | Q, | |||
double *restrict | R, | |||
double *restrict | u | |||
) |
This function decomposes the rectangular matrix A into an orthogonal Q matrix and an upper right triangular matrix R such that A=Q*R. The Householder algorithm is used to zero columns below the diagonal in the original A matrix to produce the R matrix. The Q matrix is generated during the process. The values stored in the matrices are assumed to be double precision floating point values. This code is suitable for dense matrices. No optimizations are made for sparse matrices.
Nrows | = number of rows of matrix A | |
Ncols | = number of columns of matrix A | |
A | = pointer to matrix A[Nrows*Ncols] | |
Q | = pointer to matrix Q[Nrows*Nrows] | |
R | = pointer to upper triangular matrix R[Nrows*Ncols] | |
u | = pointer to temporary vector u[max(Nrows,Ncols)] |