Loading...
Searching...
No Matches
volk_32fc_magnitude_32f.h File Reference
`#include <inttypes.h>`
`#include <math.h>`
`#include <stdio.h>`
`#include <immintrin.h>`
`#include <volk/volk_avx_intrinsics.h>`
`#include <pmmintrin.h>`
`#include <volk/volk_sse3_intrinsics.h>`
`#include <volk/volk_sse_intrinsics.h>`
`#include <xmmintrin.h>`
`#include <arm_neon.h>`

Go to the source code of this file.

## Macros

#define | INCLUDED_volk_32fc_magnitude_32f_a_H

## Functions

static void | volk_32fc_magnitude_32f_generic (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_u_avx (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_u_sse3 (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_u_sse (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_a_avx (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_a_sse3 (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_a_sse (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_neon (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
static void | volk_32fc_magnitude_32f_neon_fancy_sweet (float *magnitudeVector, const lv_32fc_t *complexVector, unsigned int num_points)
| Calculates the magnitude of the complexVector and stores the results in the magnitudeVector.

## Macro Definition Documentation

## INCLUDED_volk_32fc_magnitude_32f_a_H

#define INCLUDED_volk_32fc_magnitude_32f_a_H

## Function Documentation

## volk_32fc_magnitude_32f_a_avx()

void volk_32fc_magnitude_32f_a_avx | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_a_sse()

void volk_32fc_magnitude_32f_a_sse | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_a_sse3()

void volk_32fc_magnitude_32f_a_sse3 | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_generic()

void volk_32fc_magnitude_32f_generic | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_neon()

void volk_32fc_magnitude_32f_neon | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_neon_fancy_sweet()

void volk_32fc_magnitude_32f_neon_fancy_sweet | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

Calculates the magnitude of the complexVector and stores the results in the magnitudeVector.

This is an approximation from "Streamlining Digital Signal Processing" by Richard Lyons. Apparently max error is about 1% and mean error is about 0.6%. The basic idea is to do a weighted sum of the abs. value of imag and real parts where weight A is always assigned to max(imag, real) and B is always min(imag,real). There are two pairs of cofficients chosen based on whether min <= 0.4142 max. This method is called equiripple-error magnitude estimation proposed by Filip in '73

Parameters

  complexVector | The vector containing the complex input values
  magnitudeVector | The vector containing the real output values
  num_points | The number of complex values in complexVector to be calculated and stored into cVector

## volk_32fc_magnitude_32f_u_avx()

void volk_32fc_magnitude_32f_u_avx | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_u_sse()

void volk_32fc_magnitude_32f_u_sse | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static

## volk_32fc_magnitude_32f_u_sse3()

void volk_32fc_magnitude_32f_u_sse3 | ( | float * | magnitudeVector,
|  | const lv_32fc_t * | complexVector,
|  | unsigned int | num_points )

inline static