95 q15_t *pSrcBT = pScratch;
99 uint16_t numRowsA = pSrcA->
numRows;
100 uint16_t numColsB = pSrcB->
numCols;
101 uint16_t numColsA = pSrcA->
numCols;
102 uint16_t numRowsB = pSrcB->
numRows;
103 uint16_t col, i = 0u, row = numRowsB, colCnt;
105 q63_t sumReal, sumImag;
107 #ifdef UNALIGNED_SUPPORT_DISABLE 113 q31_t pSourceA, pSourceB;
116 #ifdef ARM_MATH_MATRIX_CHECK 140 #ifdef UNALIGNED_SUPPORT_DISABLE 183 col = numColsB % 0x4u;
233 col = numColsB % 0x4u;
281 colCnt = numColsA >> 1;
284 pInA = pSrcA->
pData + i * 2;
292 #ifdef UNALIGNED_SUPPORT_DISABLE 302 sumReal += (
q31_t) a *c;
303 sumImag += (
q31_t) a *d;
304 sumReal -= (
q31_t) b *d;
305 sumImag += (
q31_t) b *c;
318 sumReal += (
q31_t) a *c;
319 sumImag += (
q31_t) a *d;
320 sumReal -= (
q31_t) b *d;
321 sumImag += (
q31_t) b *c;
330 #ifdef ARM_MATH_BIG_ENDIAN 331 prod1 = -__SMUSD(pSourceA, pSourceB);
333 prod1 = __SMUSD(pSourceA, pSourceB);
335 prod2 = __SMUADX(pSourceA, pSourceB);
336 sumReal += (
q63_t) prod1;
337 sumImag += (
q63_t) prod2;
344 #ifdef ARM_MATH_BIG_ENDIAN 345 prod1 = -__SMUSD(pSourceA, pSourceB);
347 prod1 = __SMUSD(pSourceA, pSourceB);
349 prod2 = __SMUADX(pSourceA, pSourceB);
350 sumReal += (
q63_t) prod1;
351 sumImag += (
q63_t) prod2;
360 if((numColsA & 0x1u) > 0u)
364 #ifdef UNALIGNED_SUPPORT_DISABLE 373 sumReal += (
q31_t) a *c;
374 sumImag += (
q31_t) a *d;
375 sumReal -= (
q31_t) b *d;
376 sumImag += (
q31_t) b *c;
384 #ifdef ARM_MATH_BIG_ENDIAN 385 prod1 = -__SMUSD(pSourceA, pSourceB);
387 prod1 = __SMUSD(pSourceA, pSourceB);
389 prod2 = __SMUADX(pSourceA, pSourceB);
390 sumReal += (
q63_t) prod1;
391 sumImag += (
q63_t) prod2;
399 *px++ = (
q15_t) (__SSAT(sumReal >> 15, 16));
400 *px++ = (
q15_t) (__SSAT(sumImag >> 15, 16));
int64_t q63_t
64-bit fractional data type in 1.63 format.
arm_status arm_mat_cmplx_mult_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pScratch)
Q15 Complex matrix multiplication.
int16_t q15_t
16-bit fractional data type in 1.15 format.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
Instance structure for the Q15 matrix structure.
int32_t q31_t
32-bit fractional data type in 1.31 format.
arm_status
Error status returned by some functions in the library.