28 #ifndef INCLUDE_VOLK_VOLK_NEON_INTRINSICS_H_ 29 #define INCLUDE_VOLK_VOLK_NEON_INTRINSICS_H_ 35 static inline float32x4_t
38 float32x4_t iValue, qValue, result;
39 iValue = vmulq_f32(cmplxValue.val[0], cmplxValue.val[0]);
40 qValue = vmulq_f32(cmplxValue.val[1], cmplxValue.val[1]);
41 result = vaddq_f32(iValue, qValue);
48 float32x4_t sqrt_reciprocal = vrsqrteq_f32(x);
49 sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);
50 sqrt_reciprocal = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x, sqrt_reciprocal), sqrt_reciprocal), sqrt_reciprocal);
52 return sqrt_reciprocal;
56 static inline float32x4x2_t
59 float32x4x2_t tmp_real;
60 float32x4x2_t tmp_imag;
65 tmp_real.val[0] = vmulq_f32(a_val.val[0], b_val.val[0]);
67 tmp_real.val[1] = vmulq_f32(a_val.val[1], b_val.val[1]);
70 tmp_imag.val[0] = vmulq_f32(a_val.val[0], b_val.val[1]);
72 tmp_imag.val[1] = vmulq_f32(a_val.val[1], b_val.val[0]);
74 c_val.val[0] = vsubq_f32(tmp_real.val[0], tmp_real.val[1]);
75 c_val.val[1] = vaddq_f32(tmp_imag.val[0], tmp_imag.val[1]);
static float32x4_t _vinvsqrtq_f32(float32x4_t x)
Definition: volk_neon_intrinsics.h:46
static float32x4x2_t _vmultiply_complexq_f32(float32x4x2_t a_val, float32x4x2_t b_val)
Definition: volk_neon_intrinsics.h:57
static float32x4_t _vmagnitudesquaredq_f32(float32x4x2_t cmplxValue)
Definition: volk_neon_intrinsics.h:36