- Main Page
- Tutorials
- Functions
- Release Notes
- Examples

Functions
qr
Complete List of ArrayFire Functions ArrayFire Functions by Category » Linear Algebra » | Matrix factorizations and decompositions

Perform QR decomposition. More...

## Functions
AFAPI void | qr (array &out, array &tau, const array &in)
| C++ Interface for QR decomposition in packed format. More...
AFAPI void | qr (array &q, array &r, array &tau, const array &in)
| C++ Interface for QR decomposition. More...
AFAPI void | qrInPlace (array &tau, array &in)
| C++ Interface for QR decomposition. More...
AFAPI af_err | af_qr (af_array *q, af_array *r, af_array *tau, const af_array in)
| C Interface for QR decomposition. More...
AFAPI af_err | af_qr_inplace (af_array *tau, af_array in)
| C Interface for QR decomposition. More...

## Detailed Description

Perform QR decomposition.

This function decomposes input matrix A into an orthogonal matrix Q and an upper triangular matrix R such that

\(A = Q * R\)

\(Q * Q^T = I\)

Where I is an identity matrix. The matrix Q is a square matrix of size max(M, N) where M and N are rows and columns of A respectively. The matrix R is the same size as **A*.

This operation can be performed in ArrayFire using the following code snippet.

af::array q, r, tau;
af::qr(q, r, tau, in);

The additional parameter Tau can be used to speed up solving over and under determined system of equations.

The original matrix can be reconstructed using the following code snippet.

af::array re = af::matmul(q, r);

When memory is a concern, users can perform QR decomposition in place as shown below.

af::array out = in.copy();
af::array tau2;
qrInPlace(tau2, out);

## Function Documentation

AFAPI af_err af_qr | ( | af_array * | q,
|  | af_array * | r,
|  | af_array * | tau,
|  | const af_array | in
| ) |  |

C Interface for QR decomposition.

Parameters

  [out] | q | is the orthogonal matrix from QR decomposition
  [out] | r | is the upper triangular matrix from QR decomposition
  [out] | tau | will contain additional information needed for solving a least squares problem using `q` and `r`
  [in] | in | is the input matrix

AFAPI af_err af_qr_inplace | ( | af_array * | tau,
|  | af_array | in
| ) |  |

C Interface for QR decomposition.

Parameters

  [out] | tau | will contain additional information needed for unpacking the data
  [in,out] | in | is the input matrix on entry. It contains packed QR decomposition on exit

AFAPI void af::qr | ( | array & | out,
|  | array & | tau,
|  | const array & | in
| ) |  |

C++ Interface for QR decomposition in packed format.

Parameters

  [out] | out | is the output array containing the packed QR decomposition
  [out] | tau | will contain additional information needed for unpacking the data
  [in] | in | is the input matrix

Note
  This function is not supported in GFOR

Examples:
  qr.cpp.

AFAPI void af::qr | ( | array & | q,
|  | array & | r,
|  | array & | tau,
|  | const array & | in
| ) |  |

C++ Interface for QR decomposition.

Parameters

  [out] | q | is the orthogonal matrix from QR decomposition
  [out] | r | is the upper triangular matrix from QR decomposition
  [out] | tau | will contain additional information needed for solving a least squares problem using `q` and `r`
  [in] | in | is the input matrix

Note
  This function is not supported in GFOR

AFAPI void af::qrInPlace | ( | array & | tau,
|  | array & | in
| ) |  |

C++ Interface for QR decomposition.

Parameters

  [out] | tau | will contain additional information needed for unpacking the data
  [in,out] | in | is the input matrix on entry. It contains packed QR decomposition on exit

Note
  This function is not supported in GFOR

Examples:
  qr.cpp.