namespace solver

// namespaces

namespace xf::solver::internal
namespace xf::solver::internalgetrf

geqrf

geqrf overload (1)

#include "MatrixDecomposition/geqrf.hpp"
template <
    typename T,
    int NRMAX,
    int NCMAX,
    int NCU
    >
int geqrf (
    int m,
    int n,
    T* A,
    int lda,
    T* tau
    )

This function computes QR decomposition of matrix A

A=QR

where A is a dense matrix of size m×n , Q is a m×n matrix with orthonormal columns, and R is an upper triangular matrix.

The maximum matrix size supported in FPGA is templated by NRMAX and NCMAX.

Parameters:

T data type (support float and double)
NRMAX maximum number of rows of input matrix
NCMAX maximum number of columns of input matrix
NCU number of computation unit
m number of rows of matrix A
n number of cols of matrix A
A input matrix of size m×lda , and overwritten by the output triangular R matrix and min(m,n) elementary reflectors
lda leading dimension of matrix A
tau scalar factors for elementary reflectors

gesvdj

#include "MatrixDecomposition/gesvdj.hpp"
template <
    typename T,
    int NMAX,
    int NCU
    >
void gesvdj (
    int m,
    T* A,
    int lda,
    T* S,
    T* U,
    int ldu,
    T* V,
    int ldv,
    int& info
    )

Symmetric Matrix Jacobi based Singular Value Decomposition (GESVDJ) .

A=UΣVT

where A is a dense symmetric matrix of size m×m , U and V are m×m matrix with orthonormal columns, and Σ is diagonal matrix.

The maximum matrix size supported in FPGA is templated by NMAX.

Parameters:

T data type (support float and double).
NMAX maximum number of rows/columns of input matrix
NCU number of computation unit
m number of rows/cols of matrix A
A input matrix of size m×m
S decomposed diagonal singular matrix of size m×m
U left U matrix of SVD
V right V matrix of SVD
lda leading dimension of matrix A
ldu leading dimension of matrix U
ldv leading dimension of matrix V
info output info (unused)

gesvj

#include "MatrixDecomposition/gesvj.hpp"
template <
    typename T,
    int NRMAX,
    int NCMAX,
    int MCU,
    int NCU
    >
void gesvj (
    int m,
    int n,
    T* A,
    T* U,
    T* S,
    T* V
    )

This function implements singular value decomposition of matrix A using one-sided Jacobi algorihtm.

A=UΣVT

where A is a dense matrix of size m×n , U is m×m matrix with orthonormal columns, V is n×n matrix with orthonormal columns, and Σ is diagonal matrix.

The maximum matrix size supported in FPGA is templated by NCMAX, NRMAX.

Parameters:

T  
: the data type of gesvj
NRMAX maximum number of rows of input matrix
NCMAX maximum number of columns of input matrix
MCU number of computation unit of M
NCU number of computation unit of N
m number of rows of matrix A
n number of cols of matrix A
A input matrix of size m×n
S decomposed diagonal singular matrix of size n
U left U matrix of SVD of size m×m
V right V matrix of SVD n×n

getrf

#include "MatrixDecomposition/getrf.hpp"
template <
    typename T,
    int NMAX,
    int NCU
    >
void getrf (
    int n,
    T* A,
    int lda,
    int* ipiv,
    int& info
    )

This function computes the LU decomposition (with partial pivoting) of matrix A

PA=LU

where P is a permutation matrix, A is a dense matrix of size n×n , L is a lower triangular matrix with unit diagonal, and U is an upper triangular matrix. This function does not implement pivoting.

The maximum matrix size supported in FPGA is templated by NMAX.

Parameters:

T data type (support float and double)
NMAX maximum number of rows/columns of input matrix
NCU number of computation unit
n number of rows/cols of matrix A
A input matrix, and overwritten by the output upper and lower triangular matrix
lda leading dimention of input matrix A
pivot indices, row i of matrix A is stored in row[i]
info output info (unused)

getrf_nopivot

#include "MatrixDecomposition/getrf_nopivot.hpp"
template <
    typename T,
    int NMAX,
    int NCU
    >
void getrf_nopivot (
    int n,
    T* A,
    int lda,
    int& info
    )

This function computes the LU decomposition (without pivoting) of matrix A

A=LU

where A is a dense matrix of size n×n , L is a lower triangular matrix with unit diagonal, and U is an upper triangular matrix. This function does not implement pivoting.

The maximum matrix size supported in FPGA is templated by NMAX.

Parameters:

T data type (support float and double)
NMAX maximum number of rows/cols of input matrix
NCU number of computation unit
n number of rows/cols of matrix A
A input matrix
lda leading dimention of input matrix A
info output info (unused)

potrf

#include "MatrixDecomposition/potrf.hpp"
template <
    typename T,
    int NMAX,
    int NCU
    >
void potrf (
    int m,
    T* A,
    int lda,
    int& info
    )

This function computes the Cholesky decomposition of matrix A

A=LLT

where A is a dense symmetric positive-definite matrix of size m×m , L is a lower triangular matrix, and LT is the transposed matrix of L .

The maximum matrix size supported in FPGA is templated by NMAX.

Parameters:

T data type (support float and double)
NMAX maximum number of rows/columns of input matrix
NCU number of computation unit
m number of rows/cols of matrix A
A input matrix of size m×m
lda leading dimention of input matrix A
info output info (unused)