DSPF_sp_qrd_solver
[DSPF_sp_qrdDSPF_sp_qrd_cmplx]

Collaboration diagram for DSPF_sp_qrd_solver:


Detailed Description


Functions

int DSPF_sp_qrd_solver (const int Nrows, const int Ncols, float *restrict Q, float *restrict R, float *restrict b, float *restrict y, float *restrict x)
int DSPF_sp_qrd_solver_cmplx (const int Nrows, const int Ncols, float *restrict Q, float *restrict R, float *restrict b, float *restrict y, float *restrict x)


Function Documentation

int DSPF_sp_qrd_solver ( const int  Nrows,
const int  Ncols,
float *restrict  Q,
float *restrict  R,
float *restrict  b,
float *restrict  y,
float *restrict  x 
)

This function solves the system of linear equations A*x=b for x using the inputs produced by DSPF_sp_qrd where A*x=Q*R*x=b. The following procedure is performed.

1. Use matrix multiplication to generate y: y = transpose(Q)*b
2. Use backward substitution for solve for x: x = inv(R)*y

The values stored in the matrices are assumed to be single precision floating point values. This code is suitable for dense matrices. No optimizations are made for sparse matrices.

Parameters:
Nrows = number of rows in matrix A
Ncols = number of columns in matrix A
Q = pointer to lower triangular matrix Q[Nrows*Nrows]
R = pointer to upper triangular matrix R[Nrows*Ncols]
b = pointer to vector b[Nrows]
y = pointer to temporary vector y[Nrows]
x = pointer to final solver output vector x[Ncols]
Algorithm:
DSPF_sp_qrd_cn.c is the natural C equivalent of the optimized intrinsic C code without restrictions. Note that the intrinsic C code is optimized and restrictions may apply.
Assumptions:
The arrays P, L, U, and inv_A are stored in distinct arrays. In-place processing is not done.
Implementation Notes:
Interruptibility : The code is interruptible.
Endian support : supports both Little and Big endian modes.

int DSPF_sp_qrd_solver_cmplx ( const int  Nrows,
const int  Ncols,
float *restrict  Q,
float *restrict  R,
float *restrict  b,
float *restrict  y,
float *restrict  x 
)

This function solves the system of linear equations A*x=b for x using the inputs produced by DSPF_sp_qrd_cmplx where A*x=Q*R*x=b. The following procedure is performed.

1. Use matrix multiplication to generate y: y = transpose(Q)*b
2. Use backward substitution for solve for x: x = inv(R)*y

The values stored in the matrices are assumed to be float precision floating point values. This code is suitable for dense matrices. No optimizations are made for sparse matrices.

Parameters:
Nrows = number of rows in matrix A
Ncols = number of columns in matrix A
Q = pointer to lower triangular matrix Q[Nrows*2*Nrows]
R = pointer to upper triangular matrix R[Nrows*2*Ncols]
b = pointer to vector b[Nrows]
y = pointer to temporary vector y[Nrows]
x = pointer to final solver output vector x[Ncols]
Algorithm:
DSPF_sp_qrd_complex_cn.c is the natural C equivalent of the optimized intrinsic C code without restrictions. Note that the intrinsic C code is optimized and restrictions may apply.
Assumptions:
1. The arrays P, L, U, and inv_A are stored in distinct arrays. In-place processing is not done.
2. The arrays consist of complex number entries with alternating real and imaginary parts: real0,imag0,real1,imag1,...
Implementation Notes:
Interruptibility : The code is interruptible.
Endian support : supports both Little and Big endian modes.


Copyright 2014, Texas Instruments Incorporated