Vector Optimized Library of Kernels 3.3.0
Architecture-tuned implementations of math kernels
Loading...
Searching...
No Matches
volk_32fc_s32fc_x2_rotator2_32fc.h File Reference
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <volk/volk_complex.h>
#include <arm_neon.h>
#include <volk/volk_neon_intrinsics.h>
#include <immintrin.h>
#include <volk/volk_avx_intrinsics.h>

Go to the source code of this file.

Macros

#define ROTATOR_RELOAD   512
#define ROTATOR_RELOAD_2   (ROTATOR_RELOAD / 2)
#define ROTATOR_RELOAD_4   (ROTATOR_RELOAD / 4)
#define ROTATOR_RELOAD_8   (ROTATOR_RELOAD / 8)
#define M_PI   3.14159265358979323846
#define REDUCE_ANGLE(a)
#define REDUCE_ANGLE(a)
#define REDUCE_ANGLE(a)

Functions

static void volk_32fc_s32fc_x2_rotator2_32fc_generic (lv_32fc_t *outVector, const lv_32fc_t *inVector, const lv_32fc_t *phase_inc, lv_32fc_t *phase, unsigned int num_points)
static void volk_32fc_s32fc_x2_rotator2_32fc_neon (lv_32fc_t *outVector, const lv_32fc_t *inVector, const lv_32fc_t *phase_inc, lv_32fc_t *phase, unsigned int num_points)
 NEON implementation with angle-based resync for numerical stability.
static void volk_32fc_s32fc_x2_rotator2_32fc_a_avx (lv_32fc_t *outVector, const lv_32fc_t *inVector, const lv_32fc_t *phase_inc, lv_32fc_t *phase, unsigned int num_points)
 AVX implementation with angle-based resync for numerical stability.
static void volk_32fc_s32fc_x2_rotator2_32fc_u_avx (lv_32fc_t *outVector, const lv_32fc_t *inVector, const lv_32fc_t *phase_inc, lv_32fc_t *phase, unsigned int num_points)
 Unaligned AVX implementation with angle-based resync for numerical stability.

Macro Definition Documentation

◆ M_PI

#define M_PI   3.14159265358979323846

◆ REDUCE_ANGLE [1/3]

#define REDUCE_ANGLE ( a)
Value:
do { \
(a) = fmod((a), 2.0 * M_PI); \
if ((a) > M_PI) \
(a) -= 2.0 * M_PI; \
else if ((a) < -M_PI) \
(a) += 2.0 * M_PI; \
} while (0)

◆ REDUCE_ANGLE [2/3]

#define REDUCE_ANGLE ( a)
Value:
do { \
(a) = fmod((a), 2.0 * M_PI); \
if ((a) > M_PI) \
(a) -= 2.0 * M_PI; \
else if ((a) < -M_PI) \
(a) += 2.0 * M_PI; \
} while (0)

◆ REDUCE_ANGLE [3/3]

#define REDUCE_ANGLE ( a)
Value:
do { \
(a) = fmod((a), 2.0 * M_PI); \
if ((a) > M_PI) \
(a) -= 2.0 * M_PI; \
else if ((a) < -M_PI) \
(a) += 2.0 * M_PI; \
} while (0)

◆ ROTATOR_RELOAD

#define ROTATOR_RELOAD   512

◆ ROTATOR_RELOAD_2

#define ROTATOR_RELOAD_2   (ROTATOR_RELOAD / 2)

◆ ROTATOR_RELOAD_4

#define ROTATOR_RELOAD_4   (ROTATOR_RELOAD / 4)

◆ ROTATOR_RELOAD_8

#define ROTATOR_RELOAD_8   (ROTATOR_RELOAD / 8)

Function Documentation

◆ volk_32fc_s32fc_x2_rotator2_32fc_a_avx()

void volk_32fc_s32fc_x2_rotator2_32fc_a_avx ( lv_32fc_t * outVector,
const lv_32fc_t * inVector,
const lv_32fc_t * phase_inc,
lv_32fc_t * phase,
unsigned int num_points )
inlinestatic

AVX implementation with angle-based resync for numerical stability.

Uses Kahan summation for angle accumulation and periodic sincos resync to eliminate accumulated phase error. Suitable for billion-sample stability.

◆ volk_32fc_s32fc_x2_rotator2_32fc_generic()

void volk_32fc_s32fc_x2_rotator2_32fc_generic ( lv_32fc_t * outVector,
const lv_32fc_t * inVector,
const lv_32fc_t * phase_inc,
lv_32fc_t * phase,
unsigned int num_points )
inlinestatic

◆ volk_32fc_s32fc_x2_rotator2_32fc_neon()

void volk_32fc_s32fc_x2_rotator2_32fc_neon ( lv_32fc_t * outVector,
const lv_32fc_t * inVector,
const lv_32fc_t * phase_inc,
lv_32fc_t * phase,
unsigned int num_points )
inlinestatic

NEON implementation with angle-based resync for numerical stability.

Uses Kahan summation for angle accumulation and periodic sincos resync to eliminate accumulated phase error. Suitable for billion-sample stability.

◆ volk_32fc_s32fc_x2_rotator2_32fc_u_avx()

void volk_32fc_s32fc_x2_rotator2_32fc_u_avx ( lv_32fc_t * outVector,
const lv_32fc_t * inVector,
const lv_32fc_t * phase_inc,
lv_32fc_t * phase,
unsigned int num_points )
inlinestatic

Unaligned AVX implementation with angle-based resync for numerical stability.

Uses Kahan summation for angle accumulation and periodic sincos resync to eliminate accumulated phase error. Suitable for billion-sample stability.