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)
#define M_PI
Definition volk_32fc_s32fc_x2_rotator2_32fc.h:118

◆ 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()

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 
)
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()

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 
)
inlinestatic

◆ volk_32fc_s32fc_x2_rotator2_32fc_neon()

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 
)
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()

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 
)
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.