APIs

backSubstitute

#include "back_substitute.hpp"
template <
    int RowsColsA,
    typename InputType,
    typename OutputType,
    typename TRAITS = backSubstituteTraits<RowsColsA, InputType, OutputType>
    >
void backSubstitute (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixBStrm,
    int& is_singular
    )

backSubstitute

Parameters:

RowsColsA Row and column dimensions
InputType Input data type
OutputType Output data type
TRIATS Traits class
matrixAStrm Stream of Input matrix
matrixBStrm Stream of Output matrix.
is_singular Indicates the diagonal of B contains zeros.

cholesky

#include "cholesky.hpp"
template <
    bool LowerTriangularL,
    int RowsColsA,
    class InputType,
    class OutputType,
    typename TRAITS = choleskyTraits<LowerTriangularL, RowsColsA, InputType, OutputType>
    >
int cholesky (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixLStrm
    )

cholesky

Parameters:

LowerTriangularL When false generates the result in the upper triangle
RowsColsA Defines the matrix dimensions
InputType Input data type
OutputType Output data type
TRAITS choleskyTraits class
matrixAStrm Stream of Hermitian/symmetric positive definite input matrix
matrixLStrm Stream of Lower or upper triangular output matrix

Returns:

An integer type. 0=Success. 1=Failure. The function attempted to find the square root of a negative number i.e. the input matrix A was not Hermitian/symmetric positive definite.

choleskyInverse

#include "cholesky_inverse.hpp"
template <
    int RowsColsA,
    typename InputType,
    typename OutputType,
    typename CholeskyInverseTraits = choleskyInverseTraits<RowsColsA, InputType, OutputType>
    >
void choleskyInverse (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixInverseAStrm,
    int& cholesky_success
    )

CHOLESKY_INVERSE.

Parameters:

RowsColsA Defines the matrix dimensions
InputType Input data type
OutputType Output data type
CholeskyInverseTraits Traits class
matrixAStrm Stream of Square Hermitian/symmetric positive definite input matrix
matrixInverseAStrm Stream of Inverse of input matrix
cholesky_success Indicates if matrix A was successfully inverted. 0 = Success. 1 = Failure.

matrixMultiply

matrixMultiply overload (1)

#include "matrix_multiply.hpp"
template <
    class TransposeFormA1,
    class TransposeFormA2,
    int RowsA,
    int ColsA,
    int RowsC,
    int ColsC,
    typename InputType,
    typename OutputType,
    typename TRAITS = matrixMultiplyTraits<TransposeFormA1, TransposeFormA2, RowsA, ColsA, RowsA, ColsA, InputType, OutputType>
    >
void matrixMultiply (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixCStrm
    )

matrixMultiply entry point function for calculating matrix power.

Parameters:

TransposeFormA1 Defines if the first matix is transposed before the multiplication. Valid values are: NoTranspose, Transpose, ConjugateTranspose
TransposeFormA2 Defines if the second matix is transposed before the multiplication.
RowsA Defines the number of rows in the A matrix
ColsA Defines the number of columns in the A matrix
RowsC Defines the number of rows in the C matrix
ColsC Defines the number of columns in the C matrix
InputType Input data type
OutputType Output data type
TRAITS Traits class
matrixAStrm Stream of input matrix
matrixCStrm Stream of A^2 product output matrix

matrixMultiply overload (2)

#include "matrix_multiply.hpp"
template <
    class TransposeFormA,
    class TransposeFormB,
    int RowsA,
    int ColsA,
    int RowsB,
    int ColsB,
    int RowsC,
    int ColsC,
    typename InputType,
    typename OutputType,
    typename TRAITS = matrixMultiplyTraits<TransposeFormA, TransposeFormB, RowsA, ColsA, RowsB, ColsB, InputType, OutputType>
    >
void matrixMultiply (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <InputType>& matrixBStrm,
    hls::stream <OutputType>& matrixCStrm
    )

matrixMultiply entry point function.

Parameters:

TransposeFormA Defines if the A matix is transposed before the multiplication. Valid values are: NoTranspose, Transpose, ConjugateTranspose
TransposeFormB Defines if the B matix is transposed before the multiplication.
RowsA Defines the number of rows in the A matrix
ColsA Defines the number of columns in the A matrix
RowsB Defines the number of rows in the B matrix
ColsB Defines the number of columns in the B matrix
RowsC Defines the number of rows in the C matrix
ColsC Defines the number of columns in the C matrix
InputType Input data type
OutputType Output data type
TRAITS Traits class
matrixAStrm Stream of First input matrix
matrixBStrm Stream of Second input matrix
matrixCStrm Stream of AB product output matrix

qrInverse

#include "qr_inverse.hpp"
template <
    int RowsColsA,
    typename InputType,
    typename OutputType,
    typename QRInverseTraits = qrInverseTraits<RowsColsA, InputType, OutputType>
    >
void qrInverse (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixInverseAStrm,
    int& A_singular
    )

qrInverse the entry point function.

Parameters:

RowsColsA Defines the matrix dimensions
InputType Input data type
OutputType Output data type
QRInverseTraits QRInverse Traits class
matrixAStrm Stream of Input matrix A
matrixInverseAStrm Stream of Inverse of input matrix
A_singular Failure, matrix A is singular

qrf

#include "qrf.hpp"
template <
    bool TransposedQ,
    int RowsA,
    int ColsA,
    typename InputType,
    typename OutputType,
    typename QRF_TRAITS = qrfTraits
    >
void qrf (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixQStrm,
    hls::stream <OutputType>& matrixRStrm
    )

QRF, to computes the full QR factorization (QR decomposition) of input matrix A, A=QR, producing orthogonal output matrix Q and upper-triangular matrix R.

Parameters:

TransposedQ Selects whether Q is output in transposed form
RowsA Number of rows in input matrix A
ColsA Number of columns in input matrix A
InputType Input data type
OutputType Output data type
QRF_TRAITS qrfTraits type with specified values
matrixAStrm Stream of Input matrix
matrixQStrm Stream of Orthogonal output matrix
matrixRStrm Stream of Upper triangular output matrix

svd

#include "svd.hpp"
template <
    int RowsA,
    int ColsA,
    typename InputType,
    typename OutputType,
    typename SVDTraits = svdTraits<RowsA, ColsA, InputType, OutputType>
    >
void svd (
    hls::stream <InputType>& matrixAStrm,
    hls::stream <OutputType>& matrixSStrm,
    hls::stream <OutputType>& matrixUStrm,
    hls::stream <OutputType>& matrixVStrm
    )

SVD the entry point function.

Parameters:

RowsA Row dimension
ColsA Column dimension
InputType Input data type
OutputType Output data type
matrixAStrm Stream of input matrix
matrixSStrm Stream of singular values output matrix
matrixUStrm Stream of left singular vectors output matrix
matrixVStrm Stream of right singular vectors output matrix