Vector Optimized Library of Kernels  1.2.2
Architecture-tuned implementations of math kernels
 All Data Structures Namespaces Files Functions Variables Typedefs Macros Pages

Overview

Multiplies two complex vectors and returns the complex result.

Dispatcher Prototype

void volk_32fc_x2_multiply_32fc(lv_32fc_t* cVector, const lv_32fc_t* aVector, const lv_32fc_t* bVector, unsigned int num_points);

Inputs

  • aVector: The first input vector of complex floats.
  • bVector: The second input vector of complex floats.
  • num_points: The number of data points.

Outputs

  • outputVector: The output vector complex floats.

Example Mix two signals at f=0.3 and 0.1.

int N = 10;
unsigned int alignment = volk_get_alignment();
for(unsigned int ii = 0; ii < N; ++ii){
// Generate two tones
float real_1 = std::cos(0.3f * (float)ii);
float imag_1 = std::sin(0.3f * (float)ii);
sig_1[ii] = lv_cmake(real_1, imag_1);
float real_2 = std::cos(0.1f * (float)ii);
float imag_2 = std::sin(0.1f * (float)ii);
sig_2[ii] = lv_cmake(real_2, imag_2);
}
volk_32fc_x2_multiply_32fc(out, sig_1, sig_2, N);
*
volk_free(sig_1);
volk_free(sig_2);
volk_free(out);