|
void | tpt_cmplx_mult_cmplx_f32 (f32_t *__restrict aOutData, const f32_t *__restrict aInDataA, const f32_t *__restrict aInDataB, uint32_t aCount) |
| Floating-point complex-by-complex multiplication. More...
|
|
void | tpt_cmplx_mult_cmplx_f64 (f64_t *__restrict aOutData, const f64_t *__restrict aInDataA, const f64_t *__restrict aInDataB, uint32_t aCount) |
| Floating-point complex-by-complex multiplication. More...
|
|
void | tpt_cmplx_mult_cmplx_q15 (q1_14_t *__restrict aOutData, const q15_t *__restrict aInDataA, const q15_t *__restrict aInDataB, uint32_t aCount) |
| Q15 complex-by-complex multiplication. More...
|
|
void | tpt_cmplx_mult_cmplx_q31 (q1_30_t *__restrict aOutData, const q31_t *__restrict aInDataA, const q31_t *__restrict aInDataB, uint32_t aCount) |
| Q31 complex-by-complex multiplication. More...
|
|
Multiplies a complex vector by another complex vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter aCount
represents the number of complex samples processed. The complex arrays have a total of 2 * aCount
real values.
The underlying algorithm is used:
for (n = 0; n < aCount; n++)
{
aOutData[2 * n + 0] = aInDataA[2 * n + 0] * aInDataB[2 * n + 0]
- aInDataA[2 * n + 1] * aInDataB[2 * n + 1];
aOutData[2 * n + 1] = aInDataA[2 * n + 0] * aInDataB[2 * n + 1]
+ aInDataA[2 * n + 1] * aInDataB[2 * n + 0];
}
There are separate functions for floating-point, Q15, and Q31 data types.
◆ tpt_cmplx_mult_cmplx_f32()
void tpt_cmplx_mult_cmplx_f32 |
( |
f32_t *__restrict |
aOutData, |
|
|
const f32_t *__restrict |
aInDataA, |
|
|
const f32_t *__restrict |
aInDataB, |
|
|
uint32_t |
aCount |
|
) |
| |
Floating-point complex-by-complex multiplication.
- Parameters
-
[out] | aOutData | points to output vector. |
[in] | aInDataA | points to first input vector. |
[in] | aInDataB | points to second input vector. |
[in] | aCount | number of samples in each vector |
- Returns
- none
◆ tpt_cmplx_mult_cmplx_f64()
void tpt_cmplx_mult_cmplx_f64 |
( |
f64_t *__restrict |
aOutData, |
|
|
const f64_t *__restrict |
aInDataA, |
|
|
const f64_t *__restrict |
aInDataB, |
|
|
uint32_t |
aCount |
|
) |
| |
Floating-point complex-by-complex multiplication.
- Parameters
-
[out] | aOutData | points to output vector. |
[in] | aInDataA | points to first input vector. |
[in] | aInDataB | points to second input vector. |
[in] | aCount | number of samples in each vector |
- Returns
- none
◆ tpt_cmplx_mult_cmplx_q15()
void tpt_cmplx_mult_cmplx_q15 |
( |
q1_14_t *__restrict |
aOutData, |
|
|
const q15_t *__restrict |
aInDataA, |
|
|
const q15_t *__restrict |
aInDataB, |
|
|
uint32_t |
aCount |
|
) |
| |
Q15 complex-by-complex multiplication.
- Parameters
-
[out] | aOutData | points to output vector. |
[in] | aInDataA | points to first input vector. |
[in] | aInDataB | points to second input vector. |
[in] | aCount | number of samples in each vector |
- Returns
- none
- Scaling and Overflow Behavior
- The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.
◆ tpt_cmplx_mult_cmplx_q31()
void tpt_cmplx_mult_cmplx_q31 |
( |
q1_30_t *__restrict |
aOutData, |
|
|
const q31_t *__restrict |
aInDataA, |
|
|
const q31_t *__restrict |
aInDataB, |
|
|
uint32_t |
aCount |
|
) |
| |
Q31 complex-by-complex multiplication.
- Parameters
-
[out] | aOutData | points to output vector. |
[in] | aInDataA | points to first input vector. |
[in] | aInDataB | points to second input vector. |
[in] | aCount | number of samples in each vector |
- Returns
- none
- Scaling and Overflow Behavior
- The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format. Input down scaling is not required.