LIBDSP Version 4.1.9
LIBDSP Software Library
Loading...
Searching...
No Matches
tpt_math_matrix.h File Reference
This graph shows which files directly or indirectly include this file:

Data Structures

struct  tpt_matrix_instance_f32
 Instance structure for the floating-point matrix structure. More...
struct  tpt_matrix_instance_f64
 Instance structure for the double-precision floating-point matrix structure. More...
struct  tpt_matrix_instance_f16
 Instance structure for the F16 matrix structure. More...
struct  tpt_matrix_instance_q15
 Instance structure for the Q15 matrix structure. More...
struct  tpt_matrix_instance_q31
 Instance structure for the Q31 matrix structure. More...
struct  tpt_matrix_instance_q7
 Instance structure for the Q7 matrix structure. More...

Macros

#define ELEM(A, ROW, COL)
#define SWAP_ROWS_F32(A, COL, i, j)
#define SCALE_ROW_F32(A, COL, v, i)
#define MAS_ROW_F32(COL, A, i, v, B, j)
#define SWAP_ROWS_F64(A, COL, i, j)
#define SWAP_ROWS_F32(A, COL, i, j)
#define MAC_ROW_F32(COL, A, i, v, B, j)
#define SWAP_COLS_F32(A, COL, i, j)
#define SWAP_COLS_F64(A, COL, i, j)
#define SCALE_ROW_F64(A, COL, v, i)
#define MAC_ROW_F64(COL, A, i, v, B, j)
#define MAS_ROW_F64(COL, A, i, v, B, j)
#define COPY_COL_T(T, A, ROW, COL, DST)
#define COPY_COL_F32(A, ROW, COL, DST)
#define COPY_COL_F64(A, ROW, COL, DST)
#define COPY_COL_F16(A, ROW, COL, DST)
#define CMPLX_DIM   2
 Dimension of complex vector space.

Functions

tpt_status tpt_linear_equation_f32 (f32_t *aOutMat, f32_t *aInMat, uint32_t aN, f32_t *aB)
 Floating-point linear equations.
void tpt_mat_add_f32 (f32_t *aOutMat, const f32_t *aInMatA, const f32_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Floating-point matrix addition.
void tpt_mat_add_f64 (f64_t *aOutMat, const f64_t *aInMatA, const f64_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Floating-point matrix addition.
void tpt_mat_add_q15 (q15_t *aOutMat, const q15_t *aInMatA, const q15_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Q15 matrix addition.
void tpt_mat_add_q31 (q31_t *aOutMat, const q31_t *aInMatA, const q31_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Q31 matrix addition.
void tpt_mat_cmplx_mult_f32 (f32_t *aOutMat, const f32_t *aInMatA, const f32_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Floating-point Complex matrix multiplication.
void tpt_mat_cmplx_mult_f64 (f64_t *aOutMat, const f64_t *aInMatA, const f64_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Floating-point Complex matrix multiplication.
void tpt_mat_cmplx_mult_q15 (q15_t *aOutMat, const q15_t *aInMatA, const q15_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Q15 Complex matrix multiplication.
void tpt_mat_cmplx_mult_q31 (q31_t *aOutMat, const q31_t *aInMatA, const q31_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Q31 Complex matrix multiplication.
void tpt_mat_cmplx_trans_f32 (f32_t *aOutMat, const f32_t *aInMat, uint32_t aM, uint32_t aK)
 Transpose the single-precision floating-point complex matrices.
void tpt_mat_cmplx_trans_f64 (f64_t *aOutMat, const f64_t *aInMat, uint32_t aM, uint32_t aK)
 Transpose the single-precision floating-point complex matrices.
void tpt_mat_cmplx_trans_q15 (q15_t *aOutMat, const q15_t *aInMat, uint32_t aM, uint32_t aK)
 Transpose the q15 complex matrices.
void tpt_mat_cmplx_trans_q31 (q31_t *aOutMat, const q31_t *aInMat, uint32_t aM, uint32_t aK)
 Transpose the q31 complex matrices.
tpt_status tpt_mat_inverse_f32 (f32_t *aOutMat, f32_t *aInMat, uint32_t aN)
 Floating-point matrix inverse.
tpt_status tpt_mat_inverse_f64 (f64_t *aOutMat, f64_t *aInMat, uint16_t aN)
 Floating-point matrix inverse.
void tpt_mat_mul_mxv_f32 (f32_t *aOutMat, const f32_t *aInMat, const f32_t *aInVec, uint32_t aRow, uint32_t aCol)
 Matrix multiply vector for f32 formats.
void tpt_mat_mul_mxv_q7 (q7_t *aOutMat, const q7_t *aInMat, const q7_t *aInVec, uint32_t aRow, uint32_t aCol)
 Matrix multiply vector for q7 formats.
void tpt_mat_mul_mxv_q15 (q15_t *aOutMat, const q15_t *aInMat, const q15_t *aInVec, uint32_t aRow, uint32_t aCol)
 Matrix multiply vector for q15 formats.
void tpt_mat_mul_mxv_q31 (q31_t *aOutMat, const q31_t *aInMat, const q31_t *aInVec, uint32_t aRow, uint32_t aCol)
 Matrix multiply vector for q31 formats.
void tpt_mat_mult_f32 (f32_t *aOutMat, const f32_t *aInMatA, const f32_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Floating-point matrix multiplication.
void tpt_mat_mult_f64 (f64_t *aOutMat, const f64_t *aInMatA, const f64_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Floating-point matrix multiplication.
void tpt_mat_mult_q7 (q7_t *aOutMat, const q7_t *aInMatA, const q7_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Q7 matrix multiplication.
void tpt_mat_mult_q15 (q15_t *aOutMat, const q15_t *aInMatA, const q15_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Q15 matrix multiplication.
void tpt_mat_mult_q31 (q31_t *aOutMat, const q31_t *aInMatA, const q31_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Q31 matrix multiplication.
void tpt_mat_oprod_q31 (q31_t *aOutMat, const q31_t *aInMatA, const q31_t *aInMatB, uint32_t aM, uint32_t aN)
 Matrix Multiplication of two q31 vevtor.
void tpt_mat_scale_f32 (f32_t *aOutMat, const f32_t *aInMat, uint16_t aRows, uint16_t aCols, f32_t aScale)
 Floating-point matrix scaling.
void tpt_mat_scale_f64 (f64_t *aOutMat, const f64_t *aInMat, uint16_t aRows, uint16_t aCols, f64_t aScale)
 Floating-point matrix scaling.
void tpt_mat_scale_q15 (q15_t *aOutMat, const q15_t *aInMat, uint16_t aRows, uint16_t aCols, q15_t aScaleFract, int8_t aShift)
 Q15 matrix scaling.
void tpt_mat_scale_q31 (q31_t *aOutMat, const q31_t *aInMat, uint16_t aRows, uint16_t aCols, q31_t aScaleFract, int8_t aShift)
 Q31 matrix scaling.
void tpt_mat_sub_f32 (f32_t *aOutMat, const f32_t *aInMatA, const f32_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Floating-point matrix subtraction.
void tpt_mat_sub_f64 (f64_t *aOutMat, const f64_t *aInMatA, const f64_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Floating-point matrix subtraction.
void tpt_mat_sub_q15 (q15_t *aOutMat, const q15_t *aInMatA, const q15_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Q15 matrix subtraction.
void tpt_mat_sub_q31 (q31_t *aOutMat, const q31_t *aInMatA, const q31_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Q31 matrix subtraction.
void tpt_mat_trans_f32 (f32_t *aOutMat, const f32_t *aInMat, uint16_t aRows, uint16_t aCols)
 Floating-point matrix transpose.
void tpt_mat_trans_f64 (f64_t *aOutMat, const f64_t *aInMat, uint16_t aRows, uint16_t aCols)
 Floating-point matrix transpose.
void tpt_mat_trans_q15 (q15_t *aOutMat, const q15_t *aInMat, uint16_t aRows, uint16_t aCols)
 Q15 matrix transpose.
void tpt_mat_trans_q31 (q31_t *aOutMat, const q31_t *aInMat, uint16_t aRows, uint16_t aCols)
 Q31 matrix transpose.
tpt_status tpt_mat_ldlt_f32 (tpt_matrix_instance_f32 *aOutLowerTriangularMat, tpt_matrix_instance_f32 *aOutDiagonalMat, uint16_t *aOutPermutationVec, const tpt_matrix_instance_f32 *aInMat)
 Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.
tpt_status tpt_mat_ldlt_f64 (tpt_matrix_instance_f64 *aOutLowerTriangularMat, tpt_matrix_instance_f64 *aOutDiagonalMat, uint16_t *aOutPermutationVec, const tpt_matrix_instance_f64 *aInMat)
 Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.
void tpt_mat_init_f32 (tpt_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, f32_t *pData)
 Floating-point matrix initialization.
void tpt_mat_init_q15 (tpt_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
 Q15 matrix initialization.
void tpt_mat_init_q31 (tpt_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
 Q31 matrix initialization.
void tpt_mat_vec_mult_f32 (f32_t *aOutVec, const tpt_matrix_instance_f32 *aInMat, const f32_t *aInVec)
 Floating-point matrix and vector multiplication.
void tpt_mat_vec_mult_q15 (q15_t *aOutVec, const tpt_matrix_instance_q15 *aInMat, const q15_t *aInVec)
 Q15 matrix and vector multiplication.
void tpt_mat_vec_mult_f16 (f16_t *aOutVec, const tpt_matrix_instance_f16 *aInMat, const f16_t *aInVec)
 Floating-point matrix and vector multiplication.
tpt_status tpt_mat_mult_fast_q15 (tpt_matrix_instance_q15 *aOutMat, const tpt_matrix_instance_q15 *aInMatA, const tpt_matrix_instance_q15 *aInMatB, q15_t *aState)
 Q15 matrix multiplication. (fast variant).
void tpt_mat_vec_mult_q31 (q31_t *aOutVec, const tpt_matrix_instance_q31 *aInMat, const q31_t *aInVec)
 Q31 matrix and vector multiplication.
tpt_status tpt_mat_mult_opt_q31 (tpt_matrix_instance_q31 *aOutMat, const tpt_matrix_instance_q31 *aInMatA, const tpt_matrix_instance_q31 *aInMatB, q31_t *aState)
 Q31 matrix multiplication. (fast variant).
tpt_status tpt_mat_mult_fast_q31 (tpt_matrix_instance_q31 *aOutMat, const tpt_matrix_instance_q31 *aInMatA, const tpt_matrix_instance_q31 *aInMatB)
 Q31 matrix multiplication. (fast variant).
void tpt_mat_vec_mult_q7 (q7_t *aOutVec, const tpt_matrix_instance_q7 *aInMat, const q7_t *aInVec)
 Q7 matrix and vector multiplication.
tpt_status tpt_mat_solve_upper_triangular_f32 (tpt_matrix_instance_f32 *aOutMat, const tpt_matrix_instance_f32 *aUpperTriangularMat, const tpt_matrix_instance_f32 *aInMat)
 Solve UT . X = A where UT is an upper triangular matrix.
tpt_status tpt_mat_solve_upper_triangular_f64 (tpt_matrix_instance_f64 *aOutMat, const tpt_matrix_instance_f64 *aUpperTriangularMat, const tpt_matrix_instance_f64 *aInMat)
 Solve UT . X = A where UT is an upper triangular matrix.
tpt_status tpt_mat_cholesky_f32 (tpt_matrix_instance_f32 *aOutMat, const tpt_matrix_instance_f32 *aInMat)
 Cholesky decomposition of a symmetric positive definite matrix.
tpt_status tpt_mat_cholesky_f64 (tpt_matrix_instance_f64 *aOutMat, const tpt_matrix_instance_f64 *aInMat)
 Cholesky decomposition of a symmetric positive definite matrix.
tpt_status tpt_mat_solve_lower_triangular_f32 (const tpt_matrix_instance_f32 *aLowerTriangularMat, const tpt_matrix_instance_f32 *aInMat, tpt_matrix_instance_f32 *aOutMat)
 Solve LT . X = A where LT is a lower triangular matrix.
tpt_status tpt_mat_solve_lower_triangular_f64 (const tpt_matrix_instance_f64 *aLowerTriangularMat, const tpt_matrix_instance_f64 *aInMat, tpt_matrix_instance_f64 *aOutMat)
 Solve LT . X = A where LT is a lower triangular matrix.
void tpt_mat_init_q7 (tpt_matrix_instance_q7 *S, uint16_t nRows, uint16_t nColumns, q7_t *pData)
 Initialize a Q7 matrix.
void tpt_mat_trans_q7 (q7_t *aOutMat, const q7_t *aInMat, uint16_t aRows, uint16_t aCols)
 Transpose a Q7 matrix.
tpt_status tpt_mat_qr_f32 (const tpt_matrix_instance_f32 *aInMat, const f32_t threshold, tpt_matrix_instance_f32 *aOutR, tpt_matrix_instance_f32 *aOutQ, f32_t *aOutTau, f32_t *aTmpA, f32_t *aTmpB)
 QR decomposition of a matrix.
tpt_status tpt_mat_qr_f64 (const tpt_matrix_instance_f64 *aInMat, const f64_t threshold, tpt_matrix_instance_f64 *aOutR, tpt_matrix_instance_f64 *aOutQ, f64_t *aOutTau, f64_t *aTmpA, f64_t *aTmpB)
 QR decomposition of a matrix.
void tpt_mat_add_f16 (f16_t *aOutMat, const f16_t *aInMatA, const f16_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Add two matrices.
void tpt_mat_cmplx_mult_f16 (f16_t *aOutMat, const f16_t *aInMatA, const f16_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Multiply two matrices.
void tpt_mat_eigenvalue_f32 (f32_t *aOutMat, f32_t *aInMat, uint16_t aN)
 Eigenvalue of a matrix.
void tpt_mat_eigenvalue_f64 (f64_t *aOutMat, f64_t *aInMat, uint16_t aN)
 Eigenvalue of a matrix.
tpt_status tpt_mat_inverse_f16 (f16_t *aOutMat, f16_t *aInMat, uint16_t aN)
 Inverse of a matrix.
void tpt_mat_max_eigenvalue_f32 (f32_t *aResult, const f32_t *aInMat, uint16_t aN)
 Maximum eigenvalue of a matrix.
void tpt_mat_max_eigenvalue_f64 (f64_t *aResult, const f64_t *aInMat, uint16_t aN)
 Maximum eigenvalue of a matrix.
void tpt_mat_mult_f16 (f16_t *aOutMat, const f16_t *aInMatA, const f16_t *aInMatB, uint16_t aM, uint16_t aK, uint16_t aN)
 Multiply two matrices.
void tpt_mat_scale_f16 (f16_t *aOutMat, const f16_t *aInMat, uint16_t aRows, uint16_t aCols, f16_t aScale)
 Scale a matrix.
tpt_status tpt_mat_solve_lower_triangular_f16 (f16_t *aOutMat, const f16_t *aInDataL, const f16_t *aInDataA, uint16_t aRows, uint16_t aCols)
 Solve lower triangular matrix equation.
tpt_status tpt_mat_solve_upper_triangular_f16 (f16_t *aOutMat, const f16_t *aInDataU, const f16_t *aInDataA, uint16_t aRows, uint16_t aCols)
 Solve upper triangular matrix equation.
void tpt_mat_sub_f16 (f16_t *aOutMat, const f16_t *aInMatA, const f16_t *aInMatB, uint16_t aRows, uint16_t aCols)
 Subtract two matrices.
void tpt_mat_trans_f16 (f16_t *aOutMat, f16_t *aInMat, uint16_t aRows, uint16_t aCols)
 Transpose a matrix f16.
tpt_status tpt_qr_decompose_f32 (f32_t *aOutMatQ, f32_t *aOutMatR, const f32_t *aInMat, uint16_t aN)
 QR decomposition of a matrix f32.
tpt_status tpt_qr_decompose_f64 (f64_t *aOutMatQ, f64_t *aOutMatR, const f64_t *aInMat, uint16_t aN)
 QR decomposition of a matrix f64.

Macro Definition Documentation

◆ CMPLX_DIM

#define CMPLX_DIM   2

Dimension of complex vector space.

◆ COPY_COL_F16

#define COPY_COL_F16 ( A,
ROW,
COL,
DST )
Value:
COPY_COL_T(f16_t, A, ROW, COL, DST);
#define COPY_COL_T(T, A, ROW, COL, DST)
Definition matrix_utils.h:23
#define A
Definition tpt_pow_f32.c:86

◆ COPY_COL_F32

#define COPY_COL_F32 ( A,
ROW,
COL,
DST )
Value:
COPY_COL_T(f32_t, A, ROW, COL, DST);
float f32_t
32-bit floating-point type definition.
Definition tpt_math_dsp.h:132

◆ COPY_COL_F64

#define COPY_COL_F64 ( A,
ROW,
COL,
DST )
Value:
COPY_COL_T(f64_t, A, ROW, COL, DST);
#define f64_t
Definition tpt_fir_decimate_f64.c:34

◆ COPY_COL_T

#define COPY_COL_T ( T,
A,
ROW,
COL,
DST )
Value:
{ \
uint32_t _row; \
T* _pb = DST; \
T* _pa = (A)->pData + ROW * (A)->numCols + COL; \
for (_row = ROW; _row < (A)->numRows; _row++) \
{ \
*_pb++ = *_pa; \
_pa += (A)->numCols; \
} \
}
#define T
Definition tpt_pow_f32.c:85

◆ ELEM

#define ELEM ( A,
ROW,
COL )
Value:
&((A)->pData[(A)->numCols * (ROW) + (COL)])

◆ MAC_ROW_F32

#define MAC_ROW_F32 ( COL,
A,
i,
v,
B,
j )
Value:
{ \
int32_t _w; \
f32_t* dataA = (A)->pData; \
f32_t* dataB = (B)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
dataA = dataA + i * _numCols + (COL); \
dataB = dataB + j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*dataA++ += v * *dataB++; \
} \
}

◆ MAC_ROW_F64

#define MAC_ROW_F64 ( COL,
A,
i,
v,
B,
j )
Value:
{ \
int32_t _w; \
f64_t* dataA = (A)->pData; \
f64_t* dataB = (B)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
dataA += i * _numCols + (COL); \
dataB += j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*dataA++ += v * *dataB++; \
} \
}

◆ MAS_ROW_F32

#define MAS_ROW_F32 ( COL,
A,
i,
v,
B,
j )
Value:
{ \
int32_t _w; \
f32_t* dataA = (A)->pData; \
f32_t* dataB = (B)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
dataA = dataA + i * _numCols + (COL); \
dataB = dataB + j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*dataA++ -= v * *dataB++; \
} \
}

◆ MAS_ROW_F64

#define MAS_ROW_F64 ( COL,
A,
i,
v,
B,
j )
Value:
{ \
int32_t _w; \
f64_t* dataA = (A)->pData; \
f64_t* dataB = (B)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
dataA += i * _numCols + (COL); \
dataB += j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*dataA++ -= v * *dataB++; \
} \
}

◆ SCALE_ROW_F32

#define SCALE_ROW_F32 ( A,
COL,
v,
i )
Value:
{ \
int32_t _w; \
f32_t* data = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - COL; \
\
data += i * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*data++ *= v; \
} \
}

◆ SCALE_ROW_F64

#define SCALE_ROW_F64 ( A,
COL,
v,
i )
Value:
{ \
int32_t _w; \
f64_t* data = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
data += i * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
*data++ *= v; \
} \
}

◆ SWAP_COLS_F32

#define SWAP_COLS_F32 ( A,
COL,
i,
j )
Value:
{ \
int32_t _w; \
f32_t* data = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
for (_w = (COL); _w < _numCols; _w++) \
{ \
f32_t tmp; \
tmp = data[_w * _numCols + i]; \
data[_w * _numCols + i] = data[_w * _numCols + j]; \
data[_w * _numCols + j] = tmp; \
} \
}

◆ SWAP_COLS_F64

#define SWAP_COLS_F64 ( A,
COL,
i,
j )
Value:
{ \
int32_t _w; \
f64_t* data = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
for (_w = (COL); _w < _numCols; _w++) \
{ \
f64_t tmp; \
tmp = data[_w * _numCols + i]; \
data[_w * _numCols + i] = data[_w * _numCols + j]; \
data[_w * _numCols + j] = tmp; \
} \
}

◆ SWAP_ROWS_F32 [1/2]

#define SWAP_ROWS_F32 ( A,
COL,
i,
j )
Value:
{ \
int32_t _w; \
f32_t tmp; \
f32_t* dataI = (A)->pData; \
f32_t* dataJ = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - COL; \
\
dataI += i * _numCols + (COL); \
dataJ += j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
tmp = *dataI; \
*dataI++ = *dataJ; \
*dataJ++ = tmp; \
} \
}

◆ SWAP_ROWS_F32 [2/2]

#define SWAP_ROWS_F32 ( A,
COL,
i,
j )
Value:
{ \
int32_t _w; \
f32_t tmp; \
f32_t* dataI = (A)->pData; \
f32_t* dataJ = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - COL; \
\
dataI += i * _numCols + (COL); \
dataJ += j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
tmp = *dataI; \
*dataI++ = *dataJ; \
*dataJ++ = tmp; \
} \
}

◆ SWAP_ROWS_F64

#define SWAP_ROWS_F64 ( A,
COL,
i,
j )
Value:
{ \
int32_t _w; \
f64_t* dataI = (A)->pData; \
f64_t* dataJ = (A)->pData; \
const int32_t _numCols = (A)->numCols; \
const int32_t nb = _numCols - (COL); \
\
dataI += i * _numCols + (COL); \
dataJ += j * _numCols + (COL); \
\
for (_w = 0; _w < nb; _w++) \
{ \
f64_t tmp; \
tmp = *dataI; \
*dataI++ = *dataJ; \
*dataJ++ = tmp; \
} \
}

Function Documentation

◆ tpt_mat_add_f16()

void tpt_mat_add_f16 ( f16_t * aOutMat,
const f16_t * aInMatA,
const f16_t * aInMatB,
uint16_t aRows,
uint16_t aCols )

Add two matrices.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatApoints to input matrix A
[in]aInMatBpoints to input matrix B
[in]aRowsrows of matrix
[in]aColscolumns of matrix
Returns
none

◆ tpt_mat_cholesky_f32()

tpt_status tpt_mat_cholesky_f32 ( tpt_matrix_instance_f32 * aOutMat,
const tpt_matrix_instance_f32 * aInMat )

Cholesky decomposition of a symmetric positive definite matrix.

Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatpoints to the input matrix structure
Returns
The function returns either TPT_MATH_SIZE_MISMATCH or TPT_MATH_SUCCESS based on the outcome of size checking.
Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatpoints to the input matrix structure
Returns
TPT_MATH_DECOMPOSITION_FAILURE if the matrix is not positive definite.

◆ tpt_mat_cholesky_f64()

tpt_status tpt_mat_cholesky_f64 ( tpt_matrix_instance_f64 * aOutMat,
const tpt_matrix_instance_f64 * aInMat )

Cholesky decomposition of a symmetric positive definite matrix.

Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatpoints to the input matrix structure
Returns
The function returns either TPT_MATH_SIZE_MISMATCH or TPT_MATH_SUCCESS based on the outcome of size checking.
Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatpoints to the input matrix structure
Returns
TPT_MATH_DECOMPOSITION_FAILURE if the matrix is not positive definite.

◆ tpt_mat_cmplx_mult_f16()

void tpt_mat_cmplx_mult_f16 ( f16_t * aOutMat,
const f16_t * aInMatA,
const f16_t * aInMatB,
uint16_t aM,
uint16_t aK,
uint16_t aN )

Multiply two matrices.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatApoints to input matrix A
[in]aInMatBpoints to input matrix B
[in]aMrows of matrix A
[in]aKcolumns of matrix A
[in]aNcolumns of matrix B
Returns
none

◆ tpt_mat_eigenvalue_f32()

void tpt_mat_eigenvalue_f32 ( f32_t * aOutMat,
f32_t * aInMat,
uint16_t aN )

Eigenvalue of a matrix.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_mat_eigenvalue_f64()

void tpt_mat_eigenvalue_f64 ( f64_t * aOutMat,
f64_t * aInMat,
uint16_t aN )

Eigenvalue of a matrix.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_mat_inverse_f16()

tpt_status tpt_mat_inverse_f16 ( f16_t * aOutMat,
f16_t * aInMat,
uint16_t aN )

Inverse of a matrix.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_mat_ldlt_f32()

tpt_status tpt_mat_ldlt_f32 ( tpt_matrix_instance_f32 * aOutLowerTriangularMat,
tpt_matrix_instance_f32 * aOutDiagonalMat,
uint16_t * aOutPermutationVec,
const tpt_matrix_instance_f32 * aInMat )

Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.

Parameters
[out]aOutLowerTriangularMatpoints to the output floating-point triangular matrix structure.
[out]aOutDiagonalMatpoints to the output floating-point diagonal matrix structure.
[out]aOutPermutationVecpoints to the output permutation vector.
[in]aInMatpoints to the input floating-point matrix structure.
Returns
The function returns TPT_MATH_SIZE_MISMATCH, if the dimensions do not match. If the input matrix does not have a decomposition, then the algorithm terminates and returns error status TPT_MATH_DECOMPOSITION_FAILURE. The decomposition is returning a lower triangular matrix.

Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.

Parameters
[out]aOutLowerTriangularMatlower matrix output
[out]aOutDiagonalMatdiagonal matrix output
[out]aOutPermutationVecpermutation vector
[in]aInMatinput matrix
Returns
TPT_MATH_SUCCESS or TPT_MATH_SINGULAR

◆ tpt_mat_ldlt_f64()

tpt_status tpt_mat_ldlt_f64 ( tpt_matrix_instance_f64 * aOutLowerTriangularMat,
tpt_matrix_instance_f64 * aOutDiagonalMat,
uint16_t * aOutPermutationVec,
const tpt_matrix_instance_f64 * aInMat )

Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.

Parameters
[out]aOutLowerTriangularMatpoints to the output floating-point triangular matrix structure.
[out]aOutDiagonalMatpoints to the output floating-point diagonal matrix structure.
[out]aOutPermutationVecpoints to the output permutation vector.
[in]aInMatpoints to the input floating-point matrix structure.
Returns
The function returns TPT_MATH_SIZE_MISMATCH, if the dimensions do not match. If the input matrix does not have a decomposition, then the algorithm terminates and returns error status TPT_MATH_DECOMPOSITION_FAILURE. The decomposition is returning a lower triangular matrix.

Floating-point LDL decomposition of Symmetric Positive Semi-Definite Matrix.

Parameters
[out]aOutLowerTriangularMatlower matrix output
[out]aOutDiagonalMatdiagonal matrix output
[out]aOutPermutationVecpermutation vector
[in]aInMatinput matrix
Returns
TPT_MATH_SUCCESS or TPT_MATH_SINGULAR

◆ tpt_mat_max_eigenvalue_f32()

void tpt_mat_max_eigenvalue_f32 ( f32_t * aResult,
const f32_t * aInMat,
uint16_t aN )

Maximum eigenvalue of a matrix.

Parameters
[out]aResultpoints to output matrix
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_mat_max_eigenvalue_f64()

void tpt_mat_max_eigenvalue_f64 ( f64_t * aResult,
const f64_t * aInMat,
uint16_t aN )

Maximum eigenvalue of a matrix.

Parameters
[out]aResultpoints to output matrix
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_mat_mult_f16()

void tpt_mat_mult_f16 ( f16_t * aOutMat,
const f16_t * aInMatA,
const f16_t * aInMatB,
uint16_t aM,
uint16_t aK,
uint16_t aN )

Multiply two matrices.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatApoints to input matrix A
[in]aInMatBpoints to input matrix B
[in]aMrows of matrix A
[in]aKcolumns of matrix A
[in]aNcolumns of matrix B
Returns
none

◆ tpt_mat_mult_fast_q15()

tpt_status tpt_mat_mult_fast_q15 ( tpt_matrix_instance_q15 * aOutMat,
const tpt_matrix_instance_q15 * aInMatA,
const tpt_matrix_instance_q15 * aInMatB,
q15_t * aState )

Q15 matrix multiplication. (fast variant).

Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatApoints to the first input matrix structure
[in]aInMatBpoints to the second input matrix structure
[in]aStatepoints to the array for storing intermediate results
Returns
The function returns either TPT_MATH_SIZE_MISMATCH or TPT_MATH_SUCCESS based on the outcome of size checking.

◆ tpt_mat_mult_fast_q31()

tpt_status tpt_mat_mult_fast_q31 ( tpt_matrix_instance_q31 * aOutMat,
const tpt_matrix_instance_q31 * aInMatA,
const tpt_matrix_instance_q31 * aInMatB )

Q31 matrix multiplication. (fast variant).

Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatApoints to the first input matrix structure
[in]aInMatBpoints to the second input matrix structure
Returns
The function returns either TPT_MATH_SIZE_MISMATCH or TPT_MATH_SUCCESS based on the outcome of size checking.

◆ tpt_mat_mult_opt_q31()

tpt_status tpt_mat_mult_opt_q31 ( tpt_matrix_instance_q31 * aOutMat,
const tpt_matrix_instance_q31 * aInMatA,
const tpt_matrix_instance_q31 * aInMatB,
q31_t * aState )

Q31 matrix multiplication. (fast variant).

Parameters
[out]aOutMatpoints to output matrix structure
[in]aInMatApoints to the first input matrix structure
[in]aInMatBpoints to the second input matrix structure
[in]aStatepoints to the array for storing intermediate results
Returns
The function returns either TPT_MATH_SIZE_MISMATCH or TPT_MATH_SUCCESS based on the outcome of size checking.

◆ tpt_mat_scale_f16()

void tpt_mat_scale_f16 ( f16_t * aOutMat,
const f16_t * aInMat,
uint16_t aRows,
uint16_t aCols,
f16_t aScale )

Scale a matrix.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatpoints to input matrix
[in]aRowsrows of matrix
[in]aColscolumns of matrix
[in]aScalescale factor
Returns
none

◆ tpt_mat_solve_lower_triangular_f16()

tpt_status tpt_mat_solve_lower_triangular_f16 ( f16_t * aOutMat,
const f16_t * aInDataL,
const f16_t * aInDataA,
uint16_t aRows,
uint16_t aCols )

Solve lower triangular matrix equation.

Parameters
[out]aOutMatpoints to output matrix
[in]aInDataLpoints to input matrix L
[in]aInDataApoints to input matrix A
[in]aRowsrows of matrix
[in]aColscolumns of matrix
Returns
none

◆ tpt_mat_solve_lower_triangular_f32()

tpt_status tpt_mat_solve_lower_triangular_f32 ( const tpt_matrix_instance_f32 * aLowerTriangularMat,
const tpt_matrix_instance_f32 * aInMat,
tpt_matrix_instance_f32 * aOutMat )

Solve LT . X = A where LT is a lower triangular matrix.

Parameters
[in]aLowerTriangularMatThe lower triangular matrix
[in]aInMatThe input matrix A
[out]aOutMatThe solution X of LT . X = A
Returns
The function returns ARM_MATH_SINGULAR, if the system can't be solved.
Parameters
[out]aOutMatpoints to output matrix
[in]aLowerTriangularMatThe lower triangular matrix
[in]aInMatThe matrix A
Returns
The function returns TPT_MATH_SINGULAR, if the system cannot be solved.

◆ tpt_mat_solve_lower_triangular_f64()

tpt_status tpt_mat_solve_lower_triangular_f64 ( const tpt_matrix_instance_f64 * aLowerTriangularMat,
const tpt_matrix_instance_f64 * aInMat,
tpt_matrix_instance_f64 * aOutMat )

Solve LT . X = A where LT is a lower triangular matrix.

Parameters
[in]aLowerTriangularMatThe lower triangular matrix
[in]aInMatThe input matrix A
[out]aOutMatThe solution X of LT . X = A
Returns
The function returns ARM_MATH_SINGULAR, if the system can't be solved.
Parameters
[out]aOutMatpoints to output matrix
[in]aLowerTriangularMatThe lower triangular matrix
[in]aInMatThe matrix A
Returns
The function returns TPT_MATH_SINGULAR, if the system cannot be solved.

◆ tpt_mat_solve_upper_triangular_f16()

tpt_status tpt_mat_solve_upper_triangular_f16 ( f16_t * aOutMat,
const f16_t * aInDataU,
const f16_t * aInDataA,
uint16_t aRows,
uint16_t aCols )

Solve upper triangular matrix equation.

Parameters
[out]aOutMatpoints to output matrix
[in]aInDataUpoints to input matrix U
[in]aInDataApoints to input matrix A
[in]aRowsrows of matrix
[in]aColscolumns of matrix
Returns
none

◆ tpt_mat_sub_f16()

void tpt_mat_sub_f16 ( f16_t * aOutMat,
const f16_t * aInMatA,
const f16_t * aInMatB,
uint16_t aRows,
uint16_t aCols )

Subtract two matrices.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatApoints to input matrix A
[in]aInMatBpoints to input matrix B
[in]aRowsrows of matrix
[in]aColscolumns of matrix
Returns
none

◆ tpt_mat_trans_f16()

void tpt_mat_trans_f16 ( f16_t * aOutMat,
f16_t * aInMat,
uint16_t aRows,
uint16_t aCols )

Transpose a matrix f16.

Parameters
[out]aOutMatpoints to output matrix
[in]aInMatpoints to input matrix
[in]aRowsrows of matrix
[in]aColscolumns of matrix
Returns
none

◆ tpt_qr_decompose_f32()

tpt_status tpt_qr_decompose_f32 ( f32_t * aOutMatQ,
f32_t * aOutMatR,
const f32_t * aInMat,
uint16_t aN )

QR decomposition of a matrix f32.

Parameters
[out]aOutMatQpoints to output matrix Q
[out]aOutMatRpoints to output matrix R
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

QR decomposition of a matrix f32.

Parameters
[out]aOutMatQpoints to output matrix Q
[out]aOutMatRpoints to output matrix R
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

◆ tpt_qr_decompose_f64()

tpt_status tpt_qr_decompose_f64 ( f64_t * aOutMatQ,
f64_t * aOutMatR,
const f64_t * aInMat,
uint16_t aN )

QR decomposition of a matrix f64.

Parameters
[out]aOutMatQpoints to output matrix Q
[out]aOutMatRpoints to output matrix R
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none

QR decomposition of a matrix f64.

Parameters
[out]aOutMatQpoints to output matrix Q
[out]aOutMatRpoints to output matrix R
[in]aInMatpoints to input matrix
[in]aNnumber of rows and columns of the matrix
Returns
none