namespace solver¶
// namespaces namespace xf::solver::internalPSQRT // structs template < int RowsColsA, typename InputType, typename OutputType > struct backSubstituteTraits template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct backSubstituteTraits <RowsColsA, hls::x_complex <ap_fixed <W1, I1, Q1, O1, N1>>, hls::x_complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct backSubstituteTraits <RowsColsA, std::complex <ap_fixed <W1, I1, Q1, O1, N1>>, std::complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct backSubstituteTraits <RowsColsA, ap_fixed <W1, I1, Q1, O1, N1>, ap_fixed <W2, I2, Q2, O2, N2>> template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyInverseTraits <RowsColsA, ap_fixed <W1, I1, Q1, O1, N1>, ap_fixed <W2, I2, Q2, O2, N2>> template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyInverseTraits <RowsColsA, hls::x_complex <ap_fixed <W1, I1, Q1, O1, N1>>, hls::x_complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < int RowsColsA, typename InputType, typename OutputType > struct choleskyInverseTraits template < int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyInverseTraits <RowsColsA, std::complex <ap_fixed <W1, I1, Q1, O1, N1>>, std::complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < bool LowerTriangularL, int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyTraits <LowerTriangularL, RowsColsA, hls::x_complex <ap_fixed <W1, I1, Q1, O1, N1>>, hls::x_complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < bool LowerTriangularL, int RowsColsA, typename InputBaseType, typename OutputBaseType > struct choleskyTraits <LowerTriangularL, RowsColsA, hls::x_complex <InputBaseType>, hls::x_complex <OutputBaseType>> template < bool LowerTriangularL, int RowsColsA, typename InputBaseType, typename OutputBaseType > struct choleskyTraits <LowerTriangularL, RowsColsA, std::complex <InputBaseType>, std::complex <OutputBaseType>> template < bool LowerTriangularL, int RowsColsA, typename InputType, typename OutputType > struct choleskyTraits template < bool LowerTriangularL, int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyTraits <LowerTriangularL, RowsColsA, ap_fixed <W1, I1, Q1, O1, N1>, ap_fixed <W2, I2, Q2, O2, N2>> template < bool LowerTriangularL, int RowsColsA, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct choleskyTraits <LowerTriangularL, RowsColsA, std::complex <ap_fixed <W1, I1, Q1, O1, N1>>, std::complex <ap_fixed <W2, I2, Q2, O2, N2>>> template <typename T> struct is_cmplx <hls::x_complex <T>> template <typename T> struct is_cmplx <std::complex <T>> template <typename T> struct is_cmplx template < class TransposeFormA, class TransposeFormB, int RowsA, int ColsA, int RowsB, int ColsB, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct matrixMultiplyTraits <TransposeFormA, TransposeFormB, RowsA, ColsA, RowsB, ColsB, std::complex <ap_fixed <W1, I1, Q1, O1, N1>>, std::complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < class TransposeFormA, class TransposeFormB, int RowsA, int ColsA, int RowsB, int ColsB, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct matrixMultiplyTraits <TransposeFormA, TransposeFormB, RowsA, ColsA, RowsB, ColsB, ap_fixed <W1, I1, Q1, O1, N1>, ap_fixed <W2, I2, Q2, O2, N2>> template < class TransposeFormA, class TransposeFormB, int RowsA, int ColsA, int RowsB, int ColsB, typename InputType, typename OutputType > struct matrixMultiplyTraits template < class TransposeFormA, class TransposeFormB, int RowsA, int ColsA, int RowsB, int ColsB, int W1, int I1, ap_q_mode Q1, ap_o_mode O1, int N1, int W2, int I2, ap_q_mode Q2, ap_o_mode O2, int N2 > struct matrixMultiplyTraits <TransposeFormA, TransposeFormB, RowsA, ColsA, RowsB, ColsB, hls::x_complex <ap_fixed <W1, I1, Q1, O1, N1>>, hls::x_complex <ap_fixed <W2, I2, Q2, O2, N2>>> template < int RowsColsA, typename InputType, typename OutputType > struct qrInverseTraits template < int RowsColsA, typename InputType, typename OutputBaseType > struct qrInverseTraits <RowsColsA, InputType, std::complex <OutputBaseType>> template < int RowsColsA, typename InputType, typename OutputBaseType > struct qrInverseTraits <RowsColsA, InputType, hls::x_complex <OutputBaseType>> struct qrfTraits template < int ROWS, int COLS, typename InputType > struct qrf_alt_config template < int RowsA, int ColsA, typename InputType, typename OutputType > struct svdTraits
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 |