Factorization: LU, QR, Cholesky, singular values, eigenvalues, Hessenberg

LU Decomposition done in place. More...

Device pointer interface: lu Decomposition

See also Linear Algebra

Parameters
[out]d_pivArray of the pivot indices. Size: min(m, n)
[out]d_UThe upper triangular matrix. Size: size(min(m,n), n)
[in,out]d_LIf d_U isn't NULL, d_L (Size: (m, n)) contains lower triangular matrix. If d_U is NULL, d_L (First m x min(m,n) elements) contain the packed version of lu decomposition.
[in]mnumber of rows in the input
[in]nnumber of columns in the input
[in]batchNumber of tiles of input being handled.
afError af_lu_S (int *d_piv, float *d_U, float *d_L, unsigned m, unsigned n, unsigned batch)
 lu Decomposition on single precision data. No DLA license required. More...
 
afError af_lu_C (int *d_piv, cfloat *d_U, cfloat *d_L, unsigned m, unsigned n, unsigned batch)
 lu Decomposition on single precision, complex data. DLA license required. More...
 
afError af_lu_D (int *d_piv, double *d_U, double *d_L, unsigned m, unsigned n, unsigned batch)
 lu Decomposition on double precision data. DLA license required. More...
 
afError af_lu_Z (int *d_piv, cdouble *d_U, cdouble *d_L, unsigned m, unsigned n, unsigned batch)
 lu Decomposition on double precision, complex data. DLA license required. More...
 

Device pointer interface: qr decomposition

See also Linear Algebra

Parameters
[out]d_tauVector on device containing scalar factors. Size: min(m, n).
[out]d_RThe upper triangular matrix. Size: (k, n)
[in,out]d_QIf d_R isn't NULL, d_Q contains orthogonal matrix. Size: (m, k) if d_R is NULL, d_Q contains the packed version of qr decomposition. Size: (m, n)
[in]mnumber of rows in the input
[in]nnumber of columns in the input
[in]knumber of columns to be calculated in the orthogonal matrix.
[in]batchNumber of tiles of input being handled.
afError af_qr_S (float *d_tau, float *d_R, float *d_Q, unsigned m, unsigned n, unsigned k, unsigned batch)
 qr decomposition on single precision data. More...
 
afError af_qr_C (cfloat *d_tau, cfloat *d_R, cfloat *d_Q, unsigned m, unsigned n, unsigned k, unsigned batch)
 qr decomposition on single precision, complex data. DLA license required. More...
 
afError af_qr_D (double *d_tau, double *d_R, double *d_Q, unsigned m, unsigned n, unsigned k, unsigned batch)
 qr decomposition on double precision data. DLA license required. More...
 
afError af_qr_Z (cdouble *d_tau, cdouble *d_R, cdouble *d_Q, unsigned m, unsigned n, unsigned k, unsigned batch)
 qr decomposition on double precision, complex data. DLA license required. More...
 

Device pointer interface: Cholesky decomposition

See also Linear Algebra

Parameters
[out]d_RMatrix of Size: (n, n).
[in]nWidth of the input matrix d_A.
[in]d_AInput square matrix of width n.
[in]is_upperFlag to specify the format out the required output. d_R is upper triangular if is_upper is true. d_R is lower triangular if is_upper is false.
[in]batchNumber of tiles of input being handled.
afError af_cholesky_S (float *d_R, unsigned *info, unsigned n, const float *d_A, bool is_upper, unsigned batch)
 Cholesky decomposition, single precision data. No DLA license required. More...
 
afError af_cholesky_C (cfloat *d_R, unsigned *info, unsigned n, const cfloat *d_A, bool is_upper, unsigned batch)
 Cholesky decomposition, single precision complex data. DLA license required. More...
 
afError af_cholesky_D (double *d_R, unsigned *info, unsigned n, const double *d_A, bool is_upper, unsigned batch)
 Cholesky decomposition, double precision data. DLA license required. More...
 
afError af_cholesky_Z (cdouble *d_R, unsigned *info, unsigned n, const cdouble *d_A, bool is_upper, unsigned batch)
 Cholesky decomposition, double precision, complex data. DLA license required. More...
 

Device pointer interface: Hessenberg Matrix

See also Linear Algebra

Parameters
[out]d_HHessenberg matrix of input d_A
[out]d_QUnitary matrix such that d_A = d_Q * d_H * d_Q'
[in]nWidth of the input matrix d_A.
[in]d_AInput square matrix of width n.
[in]batchNumber of tiles of input being handled.
afError af_hessenberg_S (float *d_H, float *d_Q, unsigned n, const float *d_A, unsigned batch)
 Find the hessenberg matrix on single precision data. More...
 
afError af_hessenberg_C (cfloat *d_H, cfloat *d_Q, unsigned n, const cfloat *d_A, unsigned batch)
 Find the hessenberg matrix on single precision complex data. More...
 
afError af_hessenberg_D (double *d_H, double *d_Q, unsigned n, const double *d_A, unsigned batch)
 Find the hessenberg matrix on double precision data. More...
 
afError af_hessenberg_Z (cdouble *d_H, cdouble *d_Q, unsigned n, const cdouble *d_A, unsigned batch)
 Find the hessenberg matrix on double precision complex data. More...
 

Device pointer interface: Eigen vectors and Eigen values

See also Linear Algebra

Parameters
[out]d_ValThe output containing the eigen values of d_A. For real inputs, this is allocated internally based on the resulting complexity of output and is_imag indicates complexity, e.g. real-valued hermitial matrices produce real-valued eigen values while non-hermitian produce complex-valued eigen values.
[out]d_VecThe output containing the eigen vectors of d_A, or NULL if this is to be ignored (faster). For real inputs, this is allocated internally based on complexity of output and is_imag indicates complexity. For complex inputs, caller allocates. Pass NULL to avoid computing eigen vectors (faster).
[out]is_imagThe output format specifier for real inputs. If is_imag is true, the outputs are stored as cfloat or (cdouble). If is_imag is false, the outputs are stored as float (or double).
[in]nWidth of the input matrix d_A.
[in]d_AInput square matrix of width n.
[in]is_diagSpecifier of d_Val data structure. If is_diag is true, d_Val is a diagonal matrix. if is_diag is false, d_Val is a vector. is_diag can not be false if d_Vec is not NULL
[in]batchNumber of tiles of input being handled.
afError af_eigen_S (void **d_Val, void **d_Vec, bool *is_imag, unsigned n, const float *d_A, bool is_diag, unsigned batch)
 Eigen value decomposition of single precision input. More...
 
afError af_eigen_D (void **d_Val, void **d_Vec, bool *is_imag, unsigned n, const double *d_A, bool is_diag, unsigned batch)
 Eigen value decomposition of single precision complex input. More...
 
afError af_eigen_C (void **d_Val, cfloat *d_Vec, bool *is_imag, unsigned n, const cfloat *d_A, bool is_diag, unsigned batch)
 Eigen value decomposition of double precision input. More...
 
afError af_eigen_Z (void **d_Val, cdouble *d_Vec, bool *is_imag, unsigned n, const cdouble *d_A, bool is_diag, unsigned batch)
 Eigen value decomposition of double precision complex input. More...
 

Device pointer interface: Singular value decomposition

See also Linear Algebra

Parameters
[out]d_SThe output containing the singular of the input. if is_diag is false, d_S is a vector. if is_diag is true , d_S is a diagonal matrix. d_A = d_U * d_S * d_V'
[out]d_ULeft unitary Matrix
[out]d_VRight unitary Matrix
[in]jobUCan be one of 'A', 'O', 'S', 'N' similar to lapack
[in]jobVCan be one of 'A', 'O', 'S', 'N' similar to lapack
[in]mNumber of rows in the input.
[in]nNumber of columns in the input
[in]d_AThe input matrix.
[in]m_Number of rows required in the output.
[in]n_Number of columns required in the output.
[in]is_diagData structure specifier of input d_S. is_diag can not be false if d_U or d_V are not NULL
[in]batchNumber of tiles of input being handled.
afError af_svd_S (float *d_S, float *d_U, float *d_V, char jobU, char jobV, unsigned m, unsigned n, const float *d_A, unsigned m_, unsigned n_, bool is_diag, unsigned batch)
 Singular value decomposition on single precision input DLA license not required. More...
 
afError af_svd_C (float *d_S, cfloat *d_U, cfloat *d_V, char jobU, char jobV, unsigned m, unsigned n, const cfloat *d_A, unsigned m_, unsigned n_, bool is_diag, unsigned batch)
 Singular value decomposition on single precision complex input DLA license required. More...
 
afError af_svd_D (double *d_S, double *d_U, double *d_V, char jobU, char jobV, unsigned m, unsigned n, const double *d_A, unsigned m_, unsigned n_, bool is_diag, unsigned batch)
 Singular value decomposition on double precision input DLA license not required. More...
 
afError af_svd_Z (double *d_S, cdouble *d_U, cdouble *d_V, char jobU, char jobV, unsigned m, unsigned n, const cdouble *d_A, unsigned m_, unsigned n_, bool is_diag, unsigned batch)
 Singular value decomposition on double precision complex input DLA license not required. More...
 

Detailed Description

LU Decomposition done in place.

Singular values of a matrix.

Eigen values and eigen vectors of an input matrix.

Hessenberg Matrix.

Cholesky Decomposition.

QR Decomposition done in place.

Double-precision or complex input requires ArrayFire Pro.

Requires ArrayFire Pro.

Function Documentation

afError af_lu_S ( int *  d_piv,
float *  d_U,
float *  d_L,
unsigned  m,
unsigned  n,
unsigned  batch 
)

lu Decomposition on single precision data. No DLA license required.

afError af_lu_C ( int *  d_piv,
cfloat d_U,
cfloat d_L,
unsigned  m,
unsigned  n,
unsigned  batch 
)

lu Decomposition on single precision, complex data. DLA license required.

afError af_lu_D ( int *  d_piv,
double *  d_U,
double *  d_L,
unsigned  m,
unsigned  n,
unsigned  batch 
)

lu Decomposition on double precision data. DLA license required.

afError af_lu_Z ( int *  d_piv,
cdouble d_U,
cdouble d_L,
unsigned  m,
unsigned  n,
unsigned  batch 
)

lu Decomposition on double precision, complex data. DLA license required.

afError af_qr_S ( float *  d_tau,
float *  d_R,
float *  d_Q,
unsigned  m,
unsigned  n,
unsigned  k,
unsigned  batch 
)

qr decomposition on single precision data.

if d_R is NULL, DLA license not required, else required.

afError af_qr_C ( cfloat d_tau,
cfloat d_R,
cfloat d_Q,
unsigned  m,
unsigned  n,
unsigned  k,
unsigned  batch 
)

qr decomposition on single precision, complex data. DLA license required.

afError af_qr_D ( double *  d_tau,
double *  d_R,
double *  d_Q,
unsigned  m,
unsigned  n,
unsigned  k,
unsigned  batch 
)

qr decomposition on double precision data. DLA license required.

afError af_qr_Z ( cdouble d_tau,
cdouble d_R,
cdouble d_Q,
unsigned  m,
unsigned  n,
unsigned  k,
unsigned  batch 
)

qr decomposition on double precision, complex data. DLA license required.

afError af_cholesky_S ( float *  d_R,
unsigned *  info,
unsigned  n,
const float *  d_A,
bool  is_upper,
unsigned  batch 
)

Cholesky decomposition, single precision data. No DLA license required.

afError af_cholesky_C ( cfloat d_R,
unsigned *  info,
unsigned  n,
const cfloat d_A,
bool  is_upper,
unsigned  batch 
)

Cholesky decomposition, single precision complex data. DLA license required.

afError af_cholesky_D ( double *  d_R,
unsigned *  info,
unsigned  n,
const double *  d_A,
bool  is_upper,
unsigned  batch 
)

Cholesky decomposition, double precision data. DLA license required.

afError af_cholesky_Z ( cdouble d_R,
unsigned *  info,
unsigned  n,
const cdouble d_A,
bool  is_upper,
unsigned  batch 
)

Cholesky decomposition, double precision, complex data. DLA license required.

afError af_hessenberg_S ( float *  d_H,
float *  d_Q,
unsigned  n,
const float *  d_A,
unsigned  batch 
)

Find the hessenberg matrix on single precision data.

DLA license required.

afError af_hessenberg_C ( cfloat d_H,
cfloat d_Q,
unsigned  n,
const cfloat d_A,
unsigned  batch 
)

Find the hessenberg matrix on single precision complex data.

DLA license required.

afError af_hessenberg_D ( double *  d_H,
double *  d_Q,
unsigned  n,
const double *  d_A,
unsigned  batch 
)

Find the hessenberg matrix on double precision data.

DLA license required.

afError af_hessenberg_Z ( cdouble d_H,
cdouble d_Q,
unsigned  n,
const cdouble d_A,
unsigned  batch 
)

Find the hessenberg matrix on double precision complex data.

DLA license required.

afError af_eigen_S ( void **  d_Val,
void **  d_Vec,
bool *  is_imag,
unsigned  n,
const float *  d_A,
bool  is_diag,
unsigned  batch 
)

Eigen value decomposition of single precision input.

DLA license is required.

afError af_eigen_D ( void **  d_Val,
void **  d_Vec,
bool *  is_imag,
unsigned  n,
const double *  d_A,
bool  is_diag,
unsigned  batch 
)

Eigen value decomposition of single precision complex input.

DLA license is required.

afError af_eigen_C ( void **  d_Val,
cfloat d_Vec,
bool *  is_imag,
unsigned  n,
const cfloat d_A,
bool  is_diag,
unsigned  batch 
)

Eigen value decomposition of double precision input.

DLA license is required.

afError af_eigen_Z ( void **  d_Val,
cdouble d_Vec,
bool *  is_imag,
unsigned  n,
const cdouble d_A,
bool  is_diag,
unsigned  batch 
)

Eigen value decomposition of double precision complex input.

DLA license is required.

afError af_svd_S ( float *  d_S,
float *  d_U,
float *  d_V,
char  jobU,
char  jobV,
unsigned  m,
unsigned  n,
const float *  d_A,
unsigned  m_,
unsigned  n_,
bool  is_diag,
unsigned  batch 
)

Singular value decomposition on single precision input DLA license not required.

afError af_svd_C ( float *  d_S,
cfloat d_U,
cfloat d_V,
char  jobU,
char  jobV,
unsigned  m,
unsigned  n,
const cfloat d_A,
unsigned  m_,
unsigned  n_,
bool  is_diag,
unsigned  batch 
)

Singular value decomposition on single precision complex input DLA license required.

afError af_svd_D ( double *  d_S,
double *  d_U,
double *  d_V,
char  jobU,
char  jobV,
unsigned  m,
unsigned  n,
const double *  d_A,
unsigned  m_,
unsigned  n_,
bool  is_diag,
unsigned  batch 
)

Singular value decomposition on double precision input DLA license not required.

afError af_svd_Z ( double *  d_S,
cdouble d_U,
cdouble d_V,
char  jobU,
char  jobV,
unsigned  m,
unsigned  n,
const cdouble d_A,
unsigned  m_,
unsigned  n_,
bool  is_diag,
unsigned  batch 
)

Singular value decomposition on double precision complex input DLA license not required.