42 #ifndef INCLUDED_volk_32fc_s32f_power_32fc_a_H
43 #define INCLUDED_volk_32fc_s32f_power_32fc_a_H
56 return mag *
lv_cmake(-cosf(arg), sinf(arg));
60 #include <xmmintrin.h>
62 #ifdef LV_HAVE_LIB_SIMDMATH
69 unsigned int num_points)
71 unsigned int number = 0;
76 #ifdef LV_HAVE_LIB_SIMDMATH
77 const unsigned int quarterPoints = num_points / 4;
80 __m128 cplxValue1, cplxValue2, magnitude, phase, iValue, qValue;
81 for (; number < quarterPoints; number++) {
96 phase = atan2f4(qValue, iValue);
104 magnitude = powf4(magnitude, vPower);
130 number = quarterPoints * 4;
133 for (; number < num_points; number++) {
140 #ifdef LV_HAVE_GENERIC
145 unsigned int num_points)
149 unsigned int number = 0;
151 for (number = 0; number < num_points; number++) {
float32x4_t __m128
Definition: sse2neon.h:235
#define _mm_shuffle_ps(a, b, imm)
Definition: sse2neon.h:2586
FORCE_INLINE __m128 _mm_unpackhi_ps(__m128 a, __m128 b)
Definition: sse2neon.h:2920
FORCE_INLINE __m128 _mm_mul_ps(__m128 a, __m128 b)
Definition: sse2neon.h:2205
FORCE_INLINE __m128 _mm_set_ps1(float)
Definition: sse2neon.h:2437
FORCE_INLINE __m128 _mm_add_ps(__m128 a, __m128 b)
Definition: sse2neon.h:1039
FORCE_INLINE __m128 _mm_unpacklo_ps(__m128 a, __m128 b)
Definition: sse2neon.h:2942
#define _MM_SHUFFLE(fp3, fp2, fp1, fp0)
Definition: sse2neon.h:195
FORCE_INLINE __m128 _mm_load_ps(const float *p)
Definition: sse2neon.h:1858
FORCE_INLINE void _mm_store_ps(float *p, __m128 a)
Definition: sse2neon.h:2704
FORCE_INLINE __m128 _mm_sqrt_ps(__m128 in)
Definition: sse2neon.h:2659
static void volk_32fc_s32f_power_32fc_generic(lv_32fc_t *cVector, const lv_32fc_t *aVector, const float power, unsigned int num_points)
Definition: volk_32fc_s32f_power_32fc.h:142
static lv_32fc_t __volk_s32fc_s32f_power_s32fc_a(const lv_32fc_t exp, const float power)
raise a complex float to a real float power
Definition: volk_32fc_s32f_power_32fc.h:50
static void volk_32fc_s32f_power_32fc_a_sse(lv_32fc_t *cVector, const lv_32fc_t *aVector, const float power, unsigned int num_points)
Definition: volk_32fc_s32f_power_32fc.h:66
#define lv_cimag(x)
Definition: volk_complex.h:98
#define lv_cmake(r, i)
Definition: volk_complex.h:77
#define lv_creal(x)
Definition: volk_complex.h:96
float complex lv_32fc_t
Definition: volk_complex.h:74