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 )

inline static

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 )

inline static

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

inline static

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 )

inline static

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.