A high-performance general-purpose compute library

- Main Page
- Tutorials
- Release Notes
- Examples

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

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

## 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\) and \(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.

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

The additional parameter `tau` can be used to speed up solving over- and under-determined systems of equations.

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

array re = matmul(q, r);

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

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

## Function Documentation

## ◆ af_qr()

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

C Interface to perform QR decomposition.

This function is not supported in GFOR.

Parameters

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

Returns
  AF_SUCCESS, if function returns successfully, else an af_err code is given

## ◆ af_qr_inplace()

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

C Interface to perform QR decomposition.

This function is not supported in GFOR.

Parameters

  [out] | tau | additional information needed for unpacking the data
  [in,out] | in | input array on entry; packed QR decomposition on exit

Returns
  AF_SUCCESS, if function returns successfully, else an af_err code is given

## ◆ qr() [1/2]

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

C++ Interface to perform QR decomposition in packed format.

This function is not supported in GFOR.

Parameters

  [out] | out | packed QR decomposition
  [out] | tau | additional information needed for unpacking the data
  [in] | in | input array

## ◆ qr() [2/2]

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

C++ Interface to perform QR decomposition.

This function is not supported in GFOR.

Parameters

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

## ◆ qrInPlace()

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

C++ Interface to perform QR decomposition.

This function is not supported in GFOR.

Parameters

  [out] | tau | additional information needed for unpacking the data
  [in,out] | in | input array on entry; packed QR decomposition on exit