Skip to content

Complex-by-Real Multiplication

Module: Complex Math Functions

More...

Functions

Name
void plp_cmplx_mult_cmplx_i32_rv32im(const int32_t restrict pSrcA, const int32_t restrict pSrcB, int32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-complex multiplication.
void plp_cmplx_mult_cmplx_i32_xpulpv2(const int32_t restrict pSrcA, const int32_t restrict pSrcB, int32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-complex multiplication.
void plp_cmplx_mult_cmplx_i8_rv32im(const int8_t restrict pSrcA, const int8_t restrict pSrcB, int8_t *restrict pDst, uint32_t numSamples)
8-bit integer complex-by-complex multiplication
void plp_cmplx_mult_cmplx_i8_xpulpv2(const int8_t restrict pSrcA, const int8_t restrict pSrcB, int8_t *restrict pDst, uint32_t numSamples)
8-bit integer complex-by-complex multiplication
void plp_cmplx_mult_real_f32_xpulpv2(const float32_t restrict pSrcCmplx, const float32_t restrict pSrcReal, float32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_i16_rv32im(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_i16_xpulpv2(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_i32_rv32im(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_i32_xpulpv2(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_i8_rv32im(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t numSamples)
8-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_i8_xpulpv2(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t numSamples)
8-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_q16_rv32im(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_q16_xpulpv2(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_q32_rv32im(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_q32_xpulpv2(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_q8_rv32im(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_real_q8_xpulpv2(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
16-bit integer complex-by-real multiplication
void plp_cmplx_mult_cmplx_i32(const int32_t restrict pSrcA, const int32_t restrict pSrcB, int32_t *restrict pDst, uint32_t numSamples)
32-bit integer complex-by-complex multiplication.
void plp_cmplx_mult_real_f32(const float32_t restrict pSrcCmplx, const float32_t restrict pSrcReal, float32_t *restrict pDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void plp_cmplx_mult_real_i16(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t numSamples)
16-bit integer complex-by-real multiplication.
void plp_cmplx_mult_real_i32(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t numSamples)
32-bit integer complex-by-real multiplication.
void plp_cmplx_mult_real_i8(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t numSamples)
8-bit integer complex-by-real multiplication.
void plp_cmplx_mult_real_q16(const int16_t restrict pSrcCmplx, const int16_t restrict pSrcReal, int16_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
16-bit fixed-point complex-by-real multiplication.
void plp_cmplx_mult_real_q32(const int32_t restrict pSrcCmplx, const int32_t restrict pSrcReal, int32_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
32-bit fixed-point complex-by-real multiplication.
void plp_cmplx_mult_real_q8(const int8_t restrict pSrcCmplx, const int8_t restrict pSrcReal, int8_t *restrict pDst, uint32_t deciPoint, uint32_t numSamples)
8-bit fixed-point complex-by-real multiplication.

Detailed Description

Multiplies a complex vector by a real vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter numSamples represents the number of complex samples processed. The complex arrays have a total of 2*numSamples real values while the real array has a total of numSamples real values. The underlying algorithm is used: for (n = 0; n < numSamples; n++) { pCmplxDst[(2n)+0] = pSrcA[(2n)+0] * pSrcB[n]; pCmplxDst[(2n)+1] = pSrcA[(2n)+1] * pSrcB[n]; } There are separate functions for floating point, integer, and fixed point 32- 16- 8-bit data types.

Multiplies a complex vector by a real vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter numSamples represents the number of complex samples processed. The complex arrays have a total of 2*numSamples real values while the real array has a total of numSamples real values. The underlying algorithm is used: for (n = 0; n < numSamples; n++) { pCmplxDst[(2n)+0] = pSrcCmplx[(2n)+0] * pSrcReal[n]; pCmplxDst[(2n)+1] = pSrcCmplx[(2n)+1] * pSrcReal[n]; } There are separate functions for floating point, integer, and fixed point 32- 16- 8-bit data types.

Functions Documentation

function plp_cmplx_mult_cmplx_i32_rv32im

void plp_cmplx_mult_cmplx_i32_rv32im(
    const int32_t *__restrict__ pSrcA,
    const int32_t *__restrict__ pSrcB,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-complex multiplication.

Parameters:

  • pSrcA points to first input vector
  • pSrcB points to second input vector
  • pDst points to output vector
  • numSamples number of samples in each vector

Return: none

32-bit integer complex multiplied by complex.

function plp_cmplx_mult_cmplx_i32_xpulpv2

void plp_cmplx_mult_cmplx_i32_xpulpv2(
    const int32_t *__restrict__ pSrcA,
    const int32_t *__restrict__ pSrcB,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-complex multiplication.

Parameters:

  • pSrcA points to first input vector
  • pSrcB points to second input vector
  • pDst points to output vector
  • numSamples number of samples in each vector

Return: none

32-bit integer complex multiplied by complex.

function plp_cmplx_mult_cmplx_i8_rv32im

void plp_cmplx_mult_cmplx_i8_rv32im(
    const int8_t *__restrict__ pSrcA,
    const int8_t *__restrict__ pSrcB,
    int8_t *__restrict__ pDst,
    uint32_t numSamples
)

8-bit integer complex-by-complex multiplication

Parameters:

  • pSrcA points to first input vector
  • pSrcB points to second input vector
  • pDst points to output vector
  • numSamples number of samples in each vector

Return: none

8-bit integer complex multiplied by complex.

function plp_cmplx_mult_cmplx_i8_xpulpv2

void plp_cmplx_mult_cmplx_i8_xpulpv2(
    const int8_t *__restrict__ pSrcA,
    const int8_t *__restrict__ pSrcB,
    int8_t *__restrict__ pDst,
    uint32_t numSamples
)

8-bit integer complex-by-complex multiplication

Parameters:

  • pSrcA points to first input vector
  • pSrcB points to second input vector
  • pDst points to output vector
  • numSamples number of samples in each vector

Return: none

8-bit integer complex multiplied by complex.

function plp_cmplx_mult_real_f32_xpulpv2

void plp_cmplx_mult_real_f32_xpulpv2(
    const float32_t *__restrict__ pSrcCmplx,
    const float32_t *__restrict__ pSrcReal,
    float32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Floating-point complex multiplied with real.

function plp_cmplx_mult_real_i16_rv32im

void plp_cmplx_mult_real_i16_rv32im(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

16-bit integer complex multiplied with real.

function plp_cmplx_mult_real_i16_xpulpv2

void plp_cmplx_mult_real_i16_xpulpv2(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

16-bit integer complex multiplied with real.

function plp_cmplx_mult_real_i32_rv32im

void plp_cmplx_mult_real_i32_rv32im(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

32-bit integer complex multiplied with real.

function plp_cmplx_mult_real_i32_xpulpv2

void plp_cmplx_mult_real_i32_xpulpv2(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

32-bit integer complex multiplied with real.

function plp_cmplx_mult_real_i8_rv32im

void plp_cmplx_mult_real_i8_rv32im(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t numSamples
)

8-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

8-bit integer complex multiplied with real.

function plp_cmplx_mult_real_i8_xpulpv2

void plp_cmplx_mult_real_i8_xpulpv2(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t numSamples
)

8-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

8-bit integer complex multiplied with real.

function plp_cmplx_mult_real_q16_rv32im

void plp_cmplx_mult_real_q16_rv32im(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

16-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_real_q16_xpulpv2

void plp_cmplx_mult_real_q16_xpulpv2(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

16-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_real_q32_rv32im

void plp_cmplx_mult_real_q32_rv32im(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

32-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_real_q32_xpulpv2

void plp_cmplx_mult_real_q32_xpulpv2(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

32-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_real_q8_rv32im

void plp_cmplx_mult_real_q8_rv32im(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

8-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_real_q8_xpulpv2

void plp_cmplx_mult_real_q8_xpulpv2(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

8-bit fixed-point complex multiplied with real.

function plp_cmplx_mult_cmplx_i32

void plp_cmplx_mult_cmplx_i32(
    const int32_t *__restrict__ pSrcA,
    const int32_t *__restrict__ pSrcB,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

32-bit integer complex-by-complex multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied by complex of 32-bit integer vectors.

function plp_cmplx_mult_real_f32

void plp_cmplx_mult_real_f32(
    const float32_t *__restrict__ pSrcCmplx,
    const float32_t *__restrict__ pSrcReal,
    float32_t *__restrict__ pDst,
    uint32_t numSamples
)

Floating-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 32-bit float vectors.

function plp_cmplx_mult_real_i16

void plp_cmplx_mult_real_i16(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t numSamples
)

16-bit integer complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 16-bit integer vectors.

function plp_cmplx_mult_real_i32

void plp_cmplx_mult_real_i32(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t numSamples
)

32-bit integer complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 32-bit integer vectors.

function plp_cmplx_mult_real_i8

void plp_cmplx_mult_real_i8(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t numSamples
)

8-bit integer complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 8-bit integer vectors.

function plp_cmplx_mult_real_q16

void plp_cmplx_mult_real_q16(
    const int16_t *__restrict__ pSrcCmplx,
    const int16_t *__restrict__ pSrcReal,
    int16_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

16-bit fixed-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 16-bit fixed-point vectors.

function plp_cmplx_mult_real_q32

void plp_cmplx_mult_real_q32(
    const int32_t *__restrict__ pSrcCmplx,
    const int32_t *__restrict__ pSrcReal,
    int32_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

32-bit fixed-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 32-bit fixed-point vectors.

function plp_cmplx_mult_real_q8

void plp_cmplx_mult_real_q8(
    const int8_t *__restrict__ pSrcCmplx,
    const int8_t *__restrict__ pSrcReal,
    int8_t *__restrict__ pDst,
    uint32_t deciPoint,
    uint32_t numSamples
)

8-bit fixed-point complex-by-real multiplication.

Parameters:

  • pSrcCmplx points to complex input vector
  • pSrcReal points to real input vector
  • pCmplxDst points to complex output vector
  • deciPoint decimal point for right shift
  • numSamples number of samples in each vector

Return: none

Glue code for complex multiplied with real of 8-bit fixed-point vectors.


Updated on 2023-03-01 at 16:16:32 +0000