Vector Optimized Library of Kernels  3.0.0
Architecture-tuned implementations of math kernels

Overview

Deinterleaves the complex floating point vector and return the real part (inphase) of the samples that have been converted to doubles.

Dispatcher Prototype

void volk_32fc_deinterleave_real_64f(double* iBuffer, const lv_32fc_t*
complexVector, unsigned int num_points)
float complex lv_32fc_t
Definition: volk_complex.h:74

Inputs

  • complexVector: The complex input vector.
  • num_points: The number of complex data values to be deinterleaved.

Outputs

  • iBuffer: The I buffer output data.

Example

Generate complex numbers around the top half of the unit circle and
extract all of the real parts to a double buffer.
\code
int N = 10;
unsigned int alignment = volk_get_alignment();
lv_32fc_t* in = (lv_32fc_t*)volk_malloc(sizeof(lv_32fc_t)*N, alignment);
double* re = (double*)volk_malloc(sizeof(double)*N, alignment);
for(unsigned int ii = 0; ii < N; ++ii){
float real = 2.f * ((float)ii / (float)N) - 1.f;
float imag = std::sqrt(1.f - real * real);
in[ii] = lv_cmake(real, imag);
}
volk_32fc_deinterleave_real_64f(re, in, N);
printf(" real part\n");
for(unsigned int ii = 0; ii < N; ++ii){
printf("out(%i) = %+.1g\n", ii, re[ii]);
}
volk_free(in);
volk_free(re);
size_t volk_get_alignment(void)
Get the machine alignment in bytes.
Definition: volk.tmpl.c:90
#define lv_cmake(r, i)
Definition: volk_complex.h:77
__VOLK_DECL_BEGIN VOLK_API void * volk_malloc(size_t size, size_t alignment)
Allocate size bytes of data aligned to alignment.
Definition: volk_malloc.c:38
VOLK_API void volk_free(void *aptr)
Free's memory allocated by volk_malloc.
Definition: volk_malloc.c:80