A high-performance general-purpose compute library

Perform QR decomposition. More...

## Functions

AFAPI void qr (array &out, array &tau, const array &in)
C++ Interface to perform QR decomposition in packed format. More...

AFAPI void qr (array &q, array &r, array &tau, const array &in)
C++ Interface to perform QR decomposition. More...

AFAPI void qrInPlace (array &tau, array &in)
C++ Interface to perform QR decomposition. More...

AFAPI af_err af_qr (af_array *q, af_array *r, af_array *tau, const af_array in)
C Interface to perform QR decomposition. More...

AFAPI af_err af_qr_inplace (af_array *tau, af_array in)
C Interface to perform 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$$ 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);

## ◆ 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