CMSIS-DSP  
CMSIS DSP Software Library
 
Loading...
Searching...
No Matches
arm_cmsis_dsp Namespace Reference

Namespaces

namespace  inner
 

Data Structures

struct  _AddOp
 Add operator. More...
 
struct  _Binary
 Expression for binary operator. More...
 
struct  _BinaryOperator
 Unary operator. More...
 
struct  _ConjugateOp
 Conjugate operator. More...
 
struct  _Expr
 Expression template. More...
 
struct  _MatVec
 
struct  _MulOp
 Mul operator. More...
 
struct  _NegOp
 Neg operator. More...
 
struct  _NoOp
 No operator. More...
 
struct  _Outer
 Outer product operator for expressions. More...
 
struct  _SubOp
 Sub operator. More...
 
struct  _TransposedMatVec
 
struct  _Unary
 Expression for unary operator. More...
 
struct  _UnaryOperator
 Unary operator. More...
 
struct  Accumulate
 Accumulation without saturation. More...
 
struct  Accumulate< MD, MS, F, S, true >
 Accumulation without saturation. More...
 
struct  ComplexVector
 Vector containing complex values and not just real values but with same number of lanes than a normal float vector. More...
 
struct  default_user_allocator_malloc_free
 Malloc memory allocator. More...
 
class  DSP
 
struct  Dual
 Dual representation for complex. More...
 
struct  fixed_storage_type
 Storage type for a fixed point number. More...
 
struct  fixed_storage_type< M, F, false, test16(M, F, 0)>
 Storage type for a fixed point number representable on uint16. More...
 
struct  fixed_storage_type< M, F, false, test32(M, F, 0)>
 Storage type for a fixed point number representable on uint32. More...
 
struct  fixed_storage_type< M, F, false, test64(M, F, 0)>
 Storage type for a fixed point number representable on uint64. More...
 
struct  fixed_storage_type< M, F, false, test8(M, F, 0)>
 Storage type for a fixed point number representable on uint8. More...
 
struct  fixed_storage_type< M, F, true, test16(M, F, 1)>
 Storage type for a fixed point number representable on int16. More...
 
struct  fixed_storage_type< M, F, true, test32(M, F, 1)>
 Storage type for a fixed point number representable on int32. More...
 
struct  fixed_storage_type< M, F, true, test64(M, F, 1)>
 Storage type for a fixed point number representable on int64. More...
 
struct  fixed_storage_type< M, F, true, test8(M, F, 1)>
 Storage type for a fixed point number representable on int8. More...
 
struct  FixedCastShift< M, FD, FS, S,(FD >FS)>
 Changed fractional representation of a fixed point number using a shift. More...
 
struct  FixedCastShift< M, FD, FS, S,(FD< FS)>
 Changed fractional representation of a fixed point number using a shift. More...
 
struct  FloatType
 Check if datatype are compatible and accept mixed arithmetic complex with real. More...
 
struct  HalfComplexVector
 Vector of complex but with half lanes compared to real (2 complex) More...
 
class  Helium
 
class  Helium82
 
struct  ListElem
 Simple list of elements. More...
 
struct  malloc_allocator
 Default memory allocator for vectors and matrixes. More...
 
struct  MaskedDotSum
 
struct  Matrix
 Matrix. More...
 
struct  Matrix< P, DYNAMIC, DYNAMIC, Allocator >
 Matrix. More...
 
struct  MatrixView
 Matrix. More...
 
struct  MatrixView< T, CONSTRAINED_DYNAMIC >
 Dynamic Matrix View. More...
 
struct  MatrixView< T, DYNAMIC >
 Dynamic Matrix View. More...
 
class  MemoryPool
 This class describes a memory pool that can be used to build a memory allocator for vectors and matrixes. More...
 
class  NearestEvenRangeMask
 
class  Neon
 
struct  number_traits
 Properties of a scalar datatype. More...
 
struct  number_traits< double >
 Features for double. More...
 
struct  number_traits< float >
 Features for float. More...
 
struct  number_traits< float16_t >
 Feature of float16 datatype. More...
 
struct  number_traits< Q15 >
 Q15 features. More...
 
struct  number_traits< Q31 >
 Features for Q31. More...
 
struct  number_traits< Q7 >
 Q7 features. More...
 
struct  number_traits< std::complex< double > >
 Features for complex double. More...
 
struct  number_traits< std::complex< float > >
 Features for complex float. More...
 
struct  number_traits< std::complex< float16_t > >
 Feature for complex float16. More...
 
struct  number_traits< std::complex< Q15 > >
 Features for complex Q15. More...
 
struct  number_traits< std::complex< Q31 > >
 Features for complex Q31. More...
 
struct  number_traits< std::complex< Q7 > >
 Features for Complex Q7. More...
 
struct  number_traits< std::tuple< E... > >
 Number description for a tuple of numbers. More...
 
struct  Q
 Fixed point template. More...
 
struct  Q15DSPVector
 Representation of a vector when DSP extension supported. More...
 
struct  Q< M, F, false, uint16_t >
 Unsigned fixed point datatypes on 16 bits. More...
 
struct  Q< M, F, false, uint32_t >
 Unsigned fixed point datatypes on 32 bits. More...
 
struct  Q< M, F, false, uint64_t >
 Unsigned fixed point datatypes on 64 bits. More...
 
struct  Q< M, F, false, uint8_t >
 Unsigned fixed point datatypes on 8 bits. More...
 
struct  Q< M, F, true, int16_t >
 Signed fixed point datatypes on 16 bits. More...
 
struct  Q< M, F, true, int32_t >
 Signed fixed point datatypes on 32 bits. More...
 
struct  Q< M, F, true, int64_t >
 Signed fixed point datatypes on 64 bits. More...
 
struct  Q< M, F, true, int8_t >
 Signed fixed point datatypes on 8 bits. More...
 
class  Scalar
 
struct  Slice
 Slice. More...
 
struct  TransposeView
 Zero-copy transposed view of a matrix. More...
 
struct  user_allocator_aligned_malloc
 Memory allocation for aligned buffers. More...
 
struct  Vector
 Vector template for size knonw at build time. More...
 
struct  Vector< P, DYNAMIC, Allocator >
 Vector template for dynamic vector (size known at runtime) More...
 
struct  Vector_Base
 Storage for a vector. More...
 
struct  vector_traits
 Properties of a vector datatype linked to a scalar datatype. More...
 
struct  vector_traits< double, arch, void >
 Default vector datatype description for this scalar datatype. More...
 
struct  vector_traits< float, arch, typename std::enable_if< std::is_base_of< Helium, arch >::value >::type >
 Vector datatype for Helium. More...
 
struct  vector_traits< float, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 Vector instructions for float when no Helium or Neon. More...
 
struct  vector_traits< float16_t >
 float16 vector description when no vector architecture More...
 
struct  vector_traits< float16_t, arch, typename std::enable_if< std::is_base_of< Helium, arch >::value >::type >
 Vector features for f16 on Helium. More...
 
struct  vector_traits< Q15, arch, typename std::enable_if< std::is_base_of< Helium, arch >::value >::type >
 Vector features for Q15 on Helium. More...
 
struct  vector_traits< Q15, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value &&!std::is_base_of< DSP, arch >::value >::type >
 Vector features for Q15 when no vector architecture. More...
 
struct  vector_traits< Q15, DSP, typename std::enable_if< true >::type >
 Vector description for Q15 with DSP extensions. More...
 
struct  vector_traits< Q31, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 Vector features for Q31 when no vector instructions. More...
 
struct  vector_traits< Q7, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value &&!std::is_base_of< DSP, arch >::value >::type >
 Vector description when no vector architecture. More...
 
struct  vector_traits< std::complex< double >, arch, void >
 Default vector datatype description for this scalar datatype. More...
 
struct  vector_traits< std::complex< float >, arch, typename std::enable_if< std::is_base_of< Helium, arch >::value >::type >
 Vector datatype for Helium. More...
 
struct  vector_traits< std::complex< float >, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 Vector instructions for complex float when no Helium or Neon. More...
 
struct  vector_traits< std::complex< float16_t >, arch, typename std::enable_if< std::is_base_of< Helium, arch >::value >::type >
 Vector datatype for Helium. More...
 
struct  vector_traits< std::complex< float16_t >, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 float16 vector description when no vector architecture More...
 
struct  vector_traits< std::complex< Q15 >, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 Vector features for Q15 when no vector architecture. More...
 
struct  vector_traits< std::complex< Q31 >, arch, typename std::enable_if<!std::is_base_of< Helium, arch >::value &&!std::is_base_of< Neon, arch >::value >::type >
 Vector features for std::complex<Q31> when no vector instructions. More...
 
struct  vector_traits< std::complex< Q7 >, arch, void >
 Vector description when no vector architecture. More...
 
struct  vector_traits< std::tuple< E... >, arch >
 Tuple of compatible vectors. More...
 
struct  VectorView
 Vector view. More...
 
struct  VectorView< T, DYNAMIC >
 Vector view with dynamic stride (not known at build time) More...
 

Typedefs

typedef int32_t index_t
 index datatype. It must be a signed datatype
 
typedef int32_t vector_length_t
 Vector length datatype. Iy must be a signed datatype.
 
using Q63 = Q<0,63>
 Q63 datatype.
 
using Q31 = Q<0,31>
 Q31 datatype.
 
using Q15 = Q<0,15>
 Q15 datatype.
 
using Q7 = Q<0,7>
 Q7 datatype.
 
typedef int8_t q7_t
 8-bit fractional data type in 1.7 format.
 
typedef int16_t q15_t
 16-bit fractional data type in 1.15 format.
 
typedef int32_t q31_t
 32-bit fractional data type in 1.31 format.
 
typedef int64_t q63_t
 64-bit fractional data type in 1.63 format.
 
typedef float float32_t
 32-bit floating-point type definition.
 
typedef double float64_t
 64-bit floating-point type definition.
 
typedef int64x2_t q63x2_t
 vector types
 
typedef int32x4_t q31x4_t
 32-bit fractional 128-bit vector data type in 1.31 format.
 
typedef int16x8_t q15x8_t
 16-bit fractional 128-bit vector data type with 16-bit alignment in 1.15 format.
 
typedef int8x16_t q7x16_t
 8-bit fractional 128-bit vector data type with 8-bit alignment in 1.7 format.
 
typedef int32x4x2_t q31x4x2_t
 32-bit fractional 128-bit vector pair data type in 1.31 format.
 
typedef int32x4x4_t q31x4x4_t
 32-bit fractional 128-bit vector quadruplet data type in 1.31 format.
 
typedef int16x8x2_t q15x8x2_t
 16-bit fractional 128-bit vector pair data type in 1.15 format.
 
typedef int16x8x4_t q15x8x4_t
 16-bit fractional 128-bit vector quadruplet data type in 1.15 format.
 
typedef int8x16x2_t q7x16x2_t
 8-bit fractional 128-bit vector pair data type in 1.7 format.
 
typedef int8x16x4_t q7x16x4_t
 8-bit fractional 128-bit vector quadruplet data type in 1.7 format.
 
typedef int32_t q23_t
 32-bit fractional data type in 9.23 format.
 
typedef int32x4_t q23x4_t
 32-bit fractional 128-bit vector data type in 9.23 format.
 
typedef int64x2_t status64x2_t
 64-bit status 128-bit vector data type.
 
typedef int32x4_t status32x4_t
 32-bit status 128-bit vector data type.
 
typedef int16x8_t status16x8_t
 16-bit status 128-bit vector data type.
 
typedef int8x16_t status8x16_t
 8-bit status 128-bit vector data type.
 
typedef float32x4_t f32x4_t
 32-bit floating-point 128-bit vector type
 
typedef float32x4x2_t f32x4x2_t
 32-bit floating-point 128-bit vector pair data type
 
typedef float32x4x4_t f32x4x4_t
 32-bit floating-point 128-bit vector quadruplet data type
 

Enumerations

enum  arm_status {
  ARM_MATH_SUCCESS = 0 ,
  ARM_MATH_ARGUMENT_ERROR = -1 ,
  ARM_MATH_LENGTH_ERROR = -2 ,
  ARM_MATH_SIZE_MISMATCH = -3 ,
  ARM_MATH_NANINF = -4 ,
  ARM_MATH_SINGULAR = -5 ,
  ARM_MATH_TEST_FAILURE = -6 ,
  ARM_MATH_DECOMPOSITION_FAILURE = -7 ,
  ARM_MATH_SUCCESS = 0 ,
  ARM_MATH_ARGUMENT_ERROR = -1 ,
  ARM_MATH_LENGTH_ERROR = -2 ,
  ARM_MATH_SIZE_MISMATCH = -3 ,
  ARM_MATH_NANINF = -4 ,
  ARM_MATH_SINGULAR = -5 ,
  ARM_MATH_TEST_FAILURE = -6 ,
  ARM_MATH_DECOMPOSITION_FAILURE = -7
}
 Error status returned by some functions in the library. More...
 
enum  arm_math_datatype {
  ARM_MATH_F16 = 16 ,
  ARM_MATH_F32 = 32 ,
  ARM_MATH_F64 = 64 ,
  ARM_MATH_Q7 = 7 ,
  ARM_MATH_Q15 = 15 ,
  ARM_MATH_Q31 = 31 ,
  ARM_MATH_F16 = 16 ,
  ARM_MATH_F32 = 32 ,
  ARM_MATH_F64 = 64 ,
  ARM_MATH_Q7 = 7 ,
  ARM_MATH_Q15 = 15 ,
  ARM_MATH_Q31 = 31
}
 Datatype identifier. More...
 
enum  arm_math_target_arch {
  ARM_MATH_SCALAR_ARCH = 1 ,
  ARM_MATH_DSP_EXTENSIONS_ARCH = 2 ,
  ARM_MATH_HELIUM_ARCH = 3 ,
  ARM_MATH_NEON_ARCH = 4 ,
  ARM_MATH_SCALAR_ARCH = 1 ,
  ARM_MATH_DSP_EXTENSIONS_ARCH = 2 ,
  ARM_MATH_HELIUM_ARCH = 3 ,
  ARM_MATH_NEON_ARCH = 4
}
 Architecture target identifier. More...
 
enum  arm_status {
  ARM_MATH_SUCCESS = 0 ,
  ARM_MATH_ARGUMENT_ERROR = -1 ,
  ARM_MATH_LENGTH_ERROR = -2 ,
  ARM_MATH_SIZE_MISMATCH = -3 ,
  ARM_MATH_NANINF = -4 ,
  ARM_MATH_SINGULAR = -5 ,
  ARM_MATH_TEST_FAILURE = -6 ,
  ARM_MATH_DECOMPOSITION_FAILURE = -7 ,
  ARM_MATH_SUCCESS = 0 ,
  ARM_MATH_ARGUMENT_ERROR = -1 ,
  ARM_MATH_LENGTH_ERROR = -2 ,
  ARM_MATH_SIZE_MISMATCH = -3 ,
  ARM_MATH_NANINF = -4 ,
  ARM_MATH_SINGULAR = -5 ,
  ARM_MATH_TEST_FAILURE = -6 ,
  ARM_MATH_DECOMPOSITION_FAILURE = -7
}
 vector types More...
 
enum  arm_math_datatype {
  ARM_MATH_F16 = 16 ,
  ARM_MATH_F32 = 32 ,
  ARM_MATH_F64 = 64 ,
  ARM_MATH_Q7 = 7 ,
  ARM_MATH_Q15 = 15 ,
  ARM_MATH_Q31 = 31 ,
  ARM_MATH_F16 = 16 ,
  ARM_MATH_F32 = 32 ,
  ARM_MATH_F64 = 64 ,
  ARM_MATH_Q7 = 7 ,
  ARM_MATH_Q15 = 15 ,
  ARM_MATH_Q31 = 31
}
 Datatype identifier. More...
 
enum  arm_math_target_arch {
  ARM_MATH_SCALAR_ARCH = 1 ,
  ARM_MATH_DSP_EXTENSIONS_ARCH = 2 ,
  ARM_MATH_HELIUM_ARCH = 3 ,
  ARM_MATH_NEON_ARCH = 4 ,
  ARM_MATH_SCALAR_ARCH = 1 ,
  ARM_MATH_DSP_EXTENSIONS_ARCH = 2 ,
  ARM_MATH_HELIUM_ARCH = 3 ,
  ARM_MATH_NEON_ARCH = 4
}
 Architecture target identifier. More...
 

Functions

template<typename DST, typename SRC>
void round_scaled_to_nearest_clipped (DST &destination, const SRC &source, float multiplier, typename traits< DST >::Scalar offset, typename traits< DST >::Scalar minimum, typename traits< DST >::Scalar maximum)
 Scale in float, round to nearest-even, offset, and clip.
 
template<typename DST, typename SRC>
void round_to_nearest (DST &destination, const SRC &source)
 Element-wise nearest-even rounding into an existing vector.
 
template<typename DST, typename SRC>
void round_to_nearest_clipped (DST &destination, const SRC &source, typename traits< DST >::Scalar offset, typename traits< DST >::Scalar minimum, typename traits< DST >::Scalar maximum)
 Nearest-even rounding followed by an offset and inclusive clipping.
 
template<typename DST, typename SRC, typename MASK>
void masked_scale_add (DST &destination, const SRC &source, const MASK &mask, typename traits< DST >::Scalar scale)
 Accumulate source * scale into destination where mask is true.
 
template<typename A, typename B, typename MASK>
auto masked_dot_sum (const A &a, const B &b, const MASK &mask)
 Compute a masked dot product and masked sum of the first operand.
 
template<typename MA, typename MB, typename std::enable_if< HasMatrixIndexing< MA >::value &&HasMatrixIndexing< MB >::value, bool >::type = true>
void transposeTo (MA &dst, const MB &src)
 Transpose a matrix.
 
template<typename M, typename V, typename std::enable_if< CompatibleStaticMatVecProduct< M, V >::value, bool >::type = true>
OutputVector< M, V >::type dot (const M &m, const V &v)
 Matrix x Vector product.
 
template<typename MA, typename MB, typename std::enable_if< CompatibleStaticMatMatProduct< MA, MB >::value &&number_traits< typename traits< MA >::Scalar >::is_fixed, bool >::type = true>
OutputMatrix< MA, MB >::type dot (const MA &ma, const MB &mb)
 Matrix x Matrix product.
 
template<typename MA, typename MB, typename RES, typename std::enable_if< CompatibleDynamicMatMatProduct< MA, MB >::value &&number_traits< typename traits< MA >::Scalar >::is_float, bool >::type = true>
void dot (RES &&res, const MA &ma, const MB &mb)
 Matrix x Matrix product.
 
template<typename P>
Matrix< P, DYNAMIC, DYNAMIC, TMP_ALLOC > mk_identity (const vector_length_t l)
 Create identity matrix.
 
template<typename P, int L>
Matrix< P, L, L, TMP_ALLOC > mk_identity ()
 Create identity matrix.
 
template<typename T>
void PrintType (void)
 Prints a textual representation of a type.
 
constexpr bool test64 (const int M, const int F, const int S)
 Function to identify the template for fixed number representable on 64 bits.
 
constexpr bool test32 (const int M, const int F, const int S)
 Function to identify the template for fixed number representable on 32 bits.
 
constexpr bool test16 (const int M, const int F, const int S)
 Function to identify the template for fixed number representable on 16 bits.
 
constexpr bool test8 (const int M, const int F, const int S)
 Function to identify the template for fixed number representable on 8 bits.
 
constexpr Q63 operator""_q63 (long double x)
 q63 literal
 
constexpr Q31 operator""_q31 (long double x)
 q31 literal
 
constexpr Q15 operator""_q15 (long double x)
 q15 literal
 
constexpr Q7 operator""_q7 (long double x)
 q7 literal
 
template<int MA, int FA, int MB, int FB, bool SA, bool SB>
Q< MA+MB+1, FA+FB, SA||SB > mult (const Q< MA, FA, SA > &a, const Q< MB, FB, SB > &b)
 Multiplication of two fixed point numbers A and B.
 
template<int M, int F, bool S>
Q< M, F, S > operator+ (const Q< M, F, S > &a, const Q< M, F, S > &b)
 Add two fixed point numbers with saturation.
 
template<int M, int F, bool S>
Q< M, F, S > operator- (const Q< M, F, S > &a, const Q< M, F, S > &b)
 Subtract two fixed point numbers with saturation.
 
template<int M, int F, bool S>
Q< M, F, S > operator- (const Q< M, F, S > &a)
 Negate a fixed point number with saturation.
 
template<int M, int F, bool S>
Q< M, F, S > add (const Q< M, F, S > &a, const Q< M, F, S > &b)
 Add two fixed point numbers without saturation.
 
template<int M, int F, bool S>
Q< M, F, S > sub (const Q< M, F, S > &a, const Q< M, F, S > &b)
 Subtract two fixed point numbers without saturation.
 
template<int M, int F, int N, bool S>
Q< M, F, S > operator>> (const Q< M, F, S > &a, std::integral_constant< int, N >) noexcept
 Shift right a fixed point number with a shift known at build time.
 
template<int M, int F, int N, bool S>
Q< M+N, F, S > operator<< (const Q< M, F, S > &a, std::integral_constant< int, N >) noexcept
 Shift left a fixed point number with a shift known at build time.
 
template<int MD = 0, int MS, int F>
Q< MD, F, true > saturate (const Q< MS, F, true > &src, typename std::enable_if<(MD< MS) &&((MD+F)< 31)>::type *=nullptr)
 Saturate a signed fixed point number.
 
template<int MD = 0, int MS, int F>
Q< MD, F, false > saturate (const Q< MS, F, false > &src, typename std::enable_if<(MD< MS) &&((MD+F)< 31)>::type *=nullptr)
 Saturate an unsigned fixed point number.
 
template<int FD, int M, int FS, bool S>
Q< M, FD, S > toFrac (const Q< M, FS, S > &src)
 Convert between different fractional part formats.
 
template<int MD, int MS, int F, bool S>
Q< MD, F, S > accumulate (const Q< MD, F, S > &a, const Q< MS, F, S > &b)
 Accumulate without saturation.
 
Q7 operator* (const Q7 &a, const Q7 &b)
 Multiplication operator.
 
Q15 operator* (const Q15 &a, const Q15 &b)
 Multiplication operator.
 
Q31 operator* (const Q31 &a, const Q31 &b)
 Multiplication operator.
 
template<int M, int F>
bool operator> (const Q< M, F > &a, const Q< M, F > &b)
 Greater-than comparison operator.
 
template<int M, int F>
bool operator< (const Q< M, F > &a, const Q< M, F > &b)
 Less-than comparison operator.
 
template<int M, int F>
bool operator>= (const Q< M, F > &a, const Q< M, F > &b)
 Greater-than-or-equal comparison operator.
 
template<int M, int F>
bool operator<= (const Q< M, F > &a, const Q< M, F > &b)
 Less-than-or-equal comparison operator.
 
template<int M, int F>
bool operator== (const Q< M, F > a, const Q< M, F > b)
 Equality operator.
 
template<int M, int F>
bool operator!= (const Q< M, F > a, const Q< M, F > b)
 Inequality operator.
 
template<int M, int F, bool S>
Q< M, F, S > operator/ (const Q< M, F, S > a, const int32_t b)
 Division operator.
 
template<int M, int F, bool S>
Q< M, F, S > operator+ (const Q< M, F, S > &a)
 No op operator.
 
template<typename DA>
constexpr bool has_vector_inst ()
 Determines if vector datatype supports vector instruction on a current architecture.
 
template<typename DA>
constexpr bool has_predicate ()
 Check if predicated instructions are supported.
 
template<typename DA>
constexpr bool is_mixed ()
 Check if expression contains a mix of complex / real operations.
 
template<typename A, typename B>
constexpr bool same_nb_lanes ()
 Check same number of lanes is used.
 
template<typename A>
constexpr bool is_complex ()
 Check if vector / matrix contains complex numbers.
 
template<typename A>
constexpr bool is_float ()
 Determines if datatype is a float (double, float, complex ...).
 
template<typename A>
constexpr bool is_fixed ()
 Determines if datatype is fixed (Q31,Q15, complex<Q15> ...).
 
template<typename DA>
constexpr bool has_predicate_inst ()
 Determines if datatype has predicated loop for current architecture.
 
template<typename DA>
constexpr bool is_scalar ()
 Determines if scalar datatype (not vector, vectorview, matrix, matrixview)
 
template<typename DA>
constexpr bool must_use_matrix_idx ()
 Check if datatype can only be used as a matrix (no vector addressing)
 
template<typename DA, typename DB>
constexpr bool vector_idx_pair ()
 Check if both datatype have vector indexing and are same scalar datatype.
 
template<typename DA>
constexpr bool is_only_vector ()
 Check if has vector indexing.
 
template<typename DA, typename DB>
constexpr bool must_use_matrix_idx_pair ()
 Check if datatypes have same scalar datatype and no vector indexing.
 
template<typename DA, typename DB>
constexpr vector_length_t static_length ()
 Static length.
 
template<typename DA, typename DB>
constexpr bool same_static_length ()
 Check compatibility of length.
 
template<typename VA, typename VB, typename std::enable_if< vector_idx_pair< VA, VB >() &&is_only_vector< VA >() &&is_only_vector< VB >() &&(!IsDynamic< VA >::value||!IsDynamic< VB >::value), bool >::type = true>
DotResult< DotFieldResult< VA, VB > > dot (const VA &a, const VB &b)
 Dot product.
 
template<typename VA, typename VB, typename std::enable_if< vector_idx_pair< VA, VB >() &&(!IsDynamic< VA >::value||!IsDynamic< VB >::value), bool >::type = true>
void swap (VA &&a, VB &&b)
 Swap vectors.
 
template<typename M, typename std::enable_if< HasMatrixIndexing< M >::value, bool >::type = true>
TransposeView< M > transpose_view (const M &matrix)
 Create a zero-copy transposed matrix view.
 
template<typename M, typename V, typename std::enable_if<(CompatibleStaticMatVecProduct< M, V >::value||CompatibleDynamicMatVecProduct< M, V >::value), bool >::type = true>
auto matvec (const M &matrix, const V &vector)
 Create a lazy matrix times vector expression.
 
template<typename VA, typename VB, typename std::enable_if< vector_idx_pair< VA, VB >(), bool >::type = true>
auto outer (const VA &a, const VB &b)
 Outer product.
 
void * aligned_malloc (std::size_t alignment, std::size_t size)
 Aligned memory allocation.
 
void aligned_free (void *ptr)
 Free an aligned buffer.
 
template<typename LHS, typename RHS, typename std::enable_if<(!is_scalar< LHS >()||!is_scalar< RHS >()) &&compatible_element< LHS, RHS >() &&same_static_length< LHS, RHS >(), bool >::type = true>
auto operator+ (const LHS &a, const RHS &b)
 Addition operator for expressions.
 
template<typename LHS, typename std::enable_if<!is_scalar< LHS >(), bool >::type = true>
auto operator+ (const LHS &a)
 
  • operator for expressions

 
template<typename LHS, typename std::enable_if<!is_scalar< LHS >(), bool >::type = true>
auto expr (const LHS &a)
 Identity operator for expression.
 
template<typename LHS, typename std::enable_if<!is_scalar< LHS >(), bool >::type = true>
auto copy (const LHS &a)
 Identity operator for expression.
 
template<typename LHS, typename RHS, typename std::enable_if<(!is_scalar< LHS >()||!is_scalar< RHS >()) &&compatible_element< LHS, RHS >() &&same_static_length< LHS, RHS >(), bool >::type = true>
auto operator- (const LHS &a, const RHS &b)
 Subtraction operator for expressions.
 
template<typename LHS, typename std::enable_if<!is_scalar< LHS >(), bool >::type = true>
auto operator- (const LHS &a)
 
  • operator for expressions

 
template<typename LHS, typename std::enable_if<!is_scalar< LHS >(), bool >::type = true>
auto conjugate (const LHS &a)
 
  • operator for expressions

 
template<typename LHS, typename RHS, typename std::enable_if<(!is_scalar< LHS >()||!is_scalar< RHS >()) &&compatible_element< LHS, RHS >() &&same_static_length< LHS, RHS >(), bool >::type = true>
auto operator* (const LHS &a, const RHS &b)
 Element wise multiplication operator for expressions.
 
q31_t read_q15x2 (q15_t const *pQ15)
 Read 2 Q15 from Q15 pointer.
 
void write_q15x2_ia (q15_t **pQ15, q31_t value)
 Write 2 Q15 to Q15 pointer and increment pointer afterwards.
 
void write_q15x2 (q15_t *pQ15, q31_t value)
 Write 2 Q15 to Q15 pointer.
 
q31_t read_q7x4 (q7_t const *pQ7)
 Read 4 Q7 from Q7 pointer.
 
void write_q7x4_ia (q7_t **pQ7, q31_t value)
 Write 4 Q7 to Q7 pointer and increment pointer afterwards.
 
q31_t clip_q63_to_q31 (q63_t x)
 Clips Q63 to Q31 values.
 
q15_t clip_q31_to_q15 (q31_t x)
 Clips Q31 to Q15 values.
 
q63_t mult32x64 (q63_t x, q31_t y)
 Multiplies Q63 by Q31 and returns a result in 2.62 format.
 
uint32_t arm_recip_q31 (q31_t in, q31_t *dst, const q31_t *pRecipTable)
 Function to Calculates 1/in (reciprocal) value of Q31 Data type. It should not be used with negative values.
 
uint32_t arm_recip_q15 (q15_t in, q15_t *dst, const q15_t *pRecipTable)
 Function to Calculates 1/in (reciprocal) value of Q15 Data type. It should not be used with negative values.
 
__STATIC_INLINE void arm_norm_64_to_32u (uint64_t in, int32_t *normalized, int32_t *norm)
 64-bit to 32-bit unsigned normalization
 
__STATIC_INLINE int32_t arm_div_int64_to_int32 (int64_t num, int32_t den)
 
void arm_mult_q7 (const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
 Q7 vector multiplication.
 
void arm_mult_q15 (const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
 Q15 vector multiplication.
 
void arm_mult_q31 (const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
 Q31 vector multiplication.
 
void arm_mult_f32 (const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
 Floating-point vector multiplication.
 
void arm_mult_f64 (const float64_t *pSrcA, const float64_t *pSrcB, float64_t *pDst, uint32_t blockSize)
 Floating-point vector multiplication.
 
void arm_add_f32 (const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
 Floating-point vector addition.
 
void arm_add_f64 (const float64_t *pSrcA, const float64_t *pSrcB, float64_t *pDst, uint32_t blockSize)
 Floating-point vector addition.
 
void arm_add_q7 (const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
 Q7 vector addition.
 
void arm_add_q15 (const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
 Q15 vector addition.
 
void arm_add_q31 (const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
 Q31 vector addition.
 
void arm_sub_f32 (const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
 Floating-point vector subtraction.
 
void arm_sub_f64 (const float64_t *pSrcA, const float64_t *pSrcB, float64_t *pDst, uint32_t blockSize)
 Floating-point vector subtraction.
 
void arm_sub_q7 (const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
 Q7 vector subtraction.
 
void arm_sub_q15 (const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
 Q15 vector subtraction.
 
void arm_sub_q31 (const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
 Q31 vector subtraction.
 
void arm_scale_f32 (const float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
 Multiplies a floating-point vector by a scalar.
 
void arm_scale_f64 (const float64_t *pSrc, float64_t scale, float64_t *pDst, uint32_t blockSize)
 Multiplies a floating-point vector by a scalar.
 
void arm_scale_q7 (const q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
 Multiplies a Q7 vector by a scalar.
 
void arm_scale_q15 (const q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
 Multiplies a Q15 vector by a scalar.
 
void arm_scale_q31 (const q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
 Multiplies a Q31 vector by a scalar.
 
void arm_abs_q7 (const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
 Q7 vector absolute value.
 
void arm_abs_f32 (const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
 Floating-point vector absolute value.
 
void arm_abs_f64 (const float64_t *pSrc, float64_t *pDst, uint32_t blockSize)
 Floating-point vector absolute value.
 
void arm_abs_q15 (const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
 Q15 vector absolute value.
 
void arm_abs_q31 (const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
 Q31 vector absolute value.
 
void arm_dot_prod_f32 (const float32_t *pSrcA, const float32_t *pSrcB, uint32_t blockSize, float32_t *result)
 Dot product of floating-point vectors.
 
void arm_dot_prod_f64 (const float64_t *pSrcA, const float64_t *pSrcB, uint32_t blockSize, float64_t *result)
 Dot product of floating-point vectors.
 
void arm_dot_prod_q7 (const q7_t *pSrcA, const q7_t *pSrcB, uint32_t blockSize, q31_t *result)
 Dot product of Q7 vectors.
 
void arm_dot_prod_q15 (const q15_t *pSrcA, const q15_t *pSrcB, uint32_t blockSize, q63_t *result)
 Dot product of Q15 vectors.
 
void arm_dot_prod_q31 (const q31_t *pSrcA, const q31_t *pSrcB, uint32_t blockSize, q63_t *result)
 Dot product of Q31 vectors.
 
void arm_shift_q7 (const q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
 Shifts the elements of a Q7 vector a specified number of bits.
 
void arm_shift_q15 (const q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
 Shifts the elements of a Q15 vector a specified number of bits.
 
void arm_shift_q31 (const q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
 Shifts the elements of a Q31 vector a specified number of bits.
 
void arm_offset_f64 (const float64_t *pSrc, float64_t offset, float64_t *pDst, uint32_t blockSize)
 Adds a constant offset to a floating-point vector.
 
void arm_offset_f32 (const float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
 Adds a constant offset to a floating-point vector.
 
void arm_offset_q7 (const q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
 Adds a constant offset to a Q7 vector.
 
void arm_offset_q15 (const q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
 Adds a constant offset to a Q15 vector.
 
void arm_offset_q31 (const q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
 Adds a constant offset to a Q31 vector.
 
void arm_negate_f32 (const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
 Negates the elements of a floating-point vector.
 
void arm_negate_f64 (const float64_t *pSrc, float64_t *pDst, uint32_t blockSize)
 Negates the elements of a floating-point vector.
 
void arm_negate_q7 (const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
 Negates the elements of a Q7 vector.
 
void arm_negate_q15 (const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
 Negates the elements of a Q15 vector.
 
void arm_negate_q31 (const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
 Negates the elements of a Q31 vector.
 
void arm_and_u16 (const uint16_t *pSrcA, const uint16_t *pSrcB, uint16_t *pDst, uint32_t blockSize)
 Compute the logical bitwise AND of two fixed-point vectors.
 
void arm_and_u32 (const uint32_t *pSrcA, const uint32_t *pSrcB, uint32_t *pDst, uint32_t blockSize)
 Compute the logical bitwise AND of two fixed-point vectors.
 
void arm_and_u8 (const uint8_t *pSrcA, const uint8_t *pSrcB, uint8_t *pDst, uint32_t blockSize)
 Compute the logical bitwise AND of two fixed-point vectors.
 
void arm_or_u16 (const uint16_t *pSrcA, const uint16_t *pSrcB, uint16_t *pDst, uint32_t blockSize)
 Compute the logical bitwise OR of two fixed-point vectors.
 
void arm_or_u32 (const uint32_t *pSrcA, const uint32_t *pSrcB, uint32_t *pDst, uint32_t blockSize)
 Compute the logical bitwise OR of two fixed-point vectors.
 
void arm_or_u8 (const uint8_t *pSrcA, const uint8_t *pSrcB, uint8_t *pDst, uint32_t blockSize)
 Compute the logical bitwise OR of two fixed-point vectors.
 
void arm_not_u16 (const uint16_t *pSrc, uint16_t *pDst, uint32_t blockSize)
 Compute the logical bitwise NOT of a fixed-point vector.
 
void arm_not_u32 (const uint32_t *pSrc, uint32_t *pDst, uint32_t blockSize)
 Compute the logical bitwise NOT of a fixed-point vector.
 
void arm_not_u8 (const uint8_t *pSrc, uint8_t *pDst, uint32_t blockSize)
 Compute the logical bitwise NOT of a fixed-point vector.
 
void arm_xor_u16 (const uint16_t *pSrcA, const uint16_t *pSrcB, uint16_t *pDst, uint32_t blockSize)
 Compute the logical bitwise XOR of two fixed-point vectors.
 
void arm_xor_u32 (const uint32_t *pSrcA, const uint32_t *pSrcB, uint32_t *pDst, uint32_t blockSize)
 Compute the logical bitwise XOR of two fixed-point vectors.
 
void arm_xor_u8 (const uint8_t *pSrcA, const uint8_t *pSrcB, uint8_t *pDst, uint32_t blockSize)
 Compute the logical bitwise XOR of two fixed-point vectors.
 
void arm_clip_f32 (const float32_t *pSrc, float32_t *pDst, float32_t low, float32_t high, uint32_t numSamples)
 Elementwise floating-point clipping.
 
void arm_clip_q31 (const q31_t *pSrc, q31_t *pDst, q31_t low, q31_t high, uint32_t numSamples)
 Elementwise fixed-point clipping.
 
void arm_clip_q15 (const q15_t *pSrc, q15_t *pDst, q15_t low, q15_t high, uint32_t numSamples)
 Elementwise fixed-point clipping.
 
void arm_clip_q7 (const q7_t *pSrc, q7_t *pDst, q7_t low, q7_t high, uint32_t numSamples)
 Elementwise fixed-point clipping.
 
float32_t arm_sin_f32 (float32_t x)
 Fast approximation to the trigonometric sine function for floating-point data.
 
q31_t arm_sin_q31 (q31_t x)
 Fast approximation to the trigonometric sine function for Q31 data.
 
q15_t arm_sin_q15 (q15_t x)
 Fast approximation to the trigonometric sine function for Q15 data.
 
float32_t arm_cos_f32 (float32_t x)
 Fast approximation to the trigonometric cosine function for floating-point data.
 
q31_t arm_cos_q31 (q31_t x)
 Fast approximation to the trigonometric cosine function for Q31 data.
 
q15_t arm_cos_q15 (q15_t x)
 Fast approximation to the trigonometric cosine function for Q15 data.
 
void arm_vlog_f32 (const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
 Floating-point vector of log values.
 
void arm_vlog_f64 (const float64_t *pSrc, float64_t *pDst, uint32_t blockSize)
 Floating-point vector of log values.
 
void arm_vlog_q31 (const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
 q31 vector of log values.
 
void arm_vlog_q15 (const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
 q15 vector of log values.
 
void arm_vexp_f32 (const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
 Floating-point vector of exp values.
 
void arm_vexp_f64 (const float64_t *pSrc, float64_t *pDst, uint32_t blockSize)
 Floating-point vector of exp values.
 
arm_status arm_sqrt_f32 (const float32_t in, float32_t *pOut)
 Floating-point square root function.
 
arm_status arm_sqrt_q31 (q31_t in, q31_t *pOut)
 Q31 square root function.
 
arm_status arm_sqrt_q15 (q15_t in, q15_t *pOut)
 Q15 square root function.
 
arm_status arm_divide_q15 (q15_t numerator, q15_t denominator, q15_t *quotient, int16_t *shift)
 Fixed point division.
 
arm_status arm_divide_q31 (q31_t numerator, q31_t denominator, q31_t *quotient, int16_t *shift)
 Fixed point division.
 
arm_status arm_atan2_f32 (float32_t y, float32_t x, float32_t *result)
 Arc tangent in radian of y/x using sign of x and y to determine right quadrant.
 
arm_status arm_atan2_q31 (q31_t y, q31_t x, q31_t *result)
 Arc tangent in radian of y/x using sign of x and y to determine right quadrant.
 
arm_status arm_atan2_q15 (q15_t y, q15_t x, q15_t *result)
 Arc tangent in radian of y/x using sign of x and y to determine right quadrant.
 
template<typename MA, typename MB>
__STATIC_INLINE void _arm_mat_trans (const MA &src, MB &dst, const Scalar *=nullptr)
 Transposition for scalar architecture.
 
template<typename M, typename V, typename RES>
void _dot_m_v (RES &res, const TransposeView< M > &m, const V &v, const Scalar *=nullptr)
 Matrix times vector for scalar architecture.
 
template<typename MA, typename MB, typename RES, typename TMP, typename std::enable_if< number_traits< typename traits< MA >::Scalar >::is_fixed, bool >::type = true>
__STATIC_INLINE void _dot_m_m (const MA &pSrcA, const MB &pSrcB, RES &&pDst, const TMP &BT, const Scalar *=nullptr)
 Matrix times matrix for scalar architecture and fixed point.
 
template<typename MA, typename MB, typename RES, typename std::enable_if< is_float< MA >(), bool >::type = true>
__STATIC_INLINE void _dot_m_m (const MA &pSrcA, const MB &pSrcB, RES &&pDst, const Scalar *=nullptr)
 Matrix times matrix for scalar architecture and float.
 
template<typename T, typename DST, typename std::enable_if< IsVector< DST >::value &&compatible_element< DST, T >(), bool >::type = true>
void _Fill (DST &v, const T val, vector_length_t l, const Scalar *=nullptr)
 Fill evaluator for scalar architecture.
 
template<typename T, typename DST, typename std::enable_if< must_use_matrix_idx< DST >() &&compatible_element< DST, T >(), bool >::type = true>
void _Fill2D (DST &v, const T val, const vector_length_t rows, const vector_length_t cols, const Scalar *=nullptr)
 Fill2D evaluator for scalar architecture.
 
template<typename DA, typename DB, typename std::enable_if< vector_idx_pair< DA, DB >(), bool >::type = true>
void eval (DA &v, const DB &other, const vector_length_t l, const Scalar *=nullptr)
 Expression evaluator for vector in scalar mode.
 
template<typename DA, typename DB, typename std::enable_if< must_use_matrix_idx_pair< DA, DB >(), bool >::type = true>
void eval2D (DA &v, const DB &other, const vector_length_t rows, const vector_length_t cols, const Scalar *=nullptr)
 2D expression evaluator for scalar architecture
 
template<typename DA, typename DB, typename std::enable_if< vector_idx_pair< DA, DB >(), bool >::type = true>
DotResult< DotFieldResult< DA, DB > > _dot (const DA &a, const DB &b, const vector_length_t l, const Scalar *=nullptr)
 Dot product evaluator for scalar architectuire.
 
template<typename DA, typename DB, typename std::enable_if< vector_idx_pair< DA, DB >(), bool >::type = true>
void _swap (DA &&a, DB &&b, const vector_length_t l, const Scalar *=nullptr)
 Swap evaluator for scalar architecture.
 
template<typename T, typename DST, typename std::enable_if< has_vector_inst< DST >() &&IsVector< DST >::value &&compatible_element< DST, T >() &&has_predicate< DST >(), bool >::type = true>
void _Fill (DST &v, const T val, const vector_length_t l, const Helium *=nullptr)
 Fill evaluator for Helium.
 
template<typename T, typename DST, typename std::enable_if< has_vector_inst< DST >() &&must_use_matrix_idx< DST >() &&compatible_element< DST, T >() &&has_predicate< DST >(), bool >::type = true>
void _Fill2D (DST &v, const T val, const vector_length_t rows, const vector_length_t cols, const Helium *=nullptr)
 Fill2D evaluator for Helium.
 
template<typename DA, typename DB, typename std::enable_if< has_vector_inst< DA >() &&has_vector_inst< DB >() &&vector_idx_pair< DA, DB >() &&same_nb_lanes< DA, DB >() &&has_predicate< DA >(), bool >::type = true>
void eval (DA &v, const DB &other, const vector_length_t l, const Helium *=nullptr)
 Eval function for Helium.
 
template<typename DA, typename DB, typename std::enable_if< has_vector_inst< DA >() &&has_vector_inst< DB >() &&must_use_matrix_idx_pair< DA, DB >() &&same_nb_lanes< DA, DB >() &&(has_predicate< DA >() &&has_predicate< DB >()), bool >::type = true>
void eval2D (DA &v, const DB &other, const vector_length_t rows, const vector_length_t cols, const Helium *=nullptr)
 Eval2D function for Helium.
 
template<class TupType, size_t... I>
void printt (const TupType &_tup, std::index_sequence< I... >)
 Print tuple for debug.
 
template<class... T>
void printt (const std::tuple< T... > &_tup)
 Print tuple.
 
template<typename DA, typename DB, typename std::enable_if< has_vector_inst< DA >() &&has_vector_inst< DB >() &&vector_idx_pair< DA, DB >() &&same_nb_lanes< DA, DB >() &&has_predicate< DotFieldResult< DA, DB > >(), bool >::type = true>
DotResult< DotFieldResult< DA, DB > > _dot (const DA &a, const DB &b, const vector_length_t l, const Helium *=nullptr)
 Dor product for Helium.
 
template<typename DA, typename DB, typename std::enable_if< has_vector_inst< DA >() &&has_vector_inst< DB >() &&vector_idx_pair< DA, DB >() &&has_predicate< DA >(), bool >::type = true>
void _swap (DA &&a, DB &&b, const vector_length_t l, const Helium *=nullptr)
 Swap operator for Helium.
 

Variables

constexpr int DYNAMIC = -1
 Dynamic objects (dimensions only known at runtime)
 
constexpr int CONSTRAINED_DYNAMIC = -2
 Dynamic objects (dimensions only known at runtime) but with some constraints (like stride == nb_cols)
 

Detailed Description

In this file we have kernels that are written in an architecture independent way (using operators of the library)

Function Documentation

◆ arm_abs_f32()

void arm_abs_f32 ( const float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector absolute value.

Parameters
[in]pSrcpoints to the input buffer
[out]pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector

◆ arm_abs_f64()

void arm_abs_f64 ( const float64_t * pSrc,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector absolute value.

Parameters
[in]pSrcpoints to the input buffer
[out]pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector

◆ arm_abs_q15()

void arm_abs_q15 ( const q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize )

Q15 vector absolute value.

Parameters
[in]pSrcpoints to the input buffer
[out]pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector

◆ arm_abs_q31()

void arm_abs_q31 ( const q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize )

Q31 vector absolute value.

Parameters
[in]pSrcpoints to the input buffer
[out]pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector

◆ arm_abs_q7()

void arm_abs_q7 ( const q7_t * pSrc,
q7_t * pDst,
uint32_t blockSize )

Q7 vector absolute value.

Parameters
[in]pSrcpoints to the input buffer
[out]pDstpoints to the output buffer
[in]blockSizenumber of samples in each vector

◆ arm_add_f32()

void arm_add_f32 ( const float32_t * pSrcA,
const float32_t * pSrcB,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector addition.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_add_f64()

void arm_add_f64 ( const float64_t * pSrcA,
const float64_t * pSrcB,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector addition.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_add_q15()

void arm_add_q15 ( const q15_t * pSrcA,
const q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize )

Q15 vector addition.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_add_q31()

void arm_add_q31 ( const q31_t * pSrcA,
const q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize )

Q31 vector addition.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_add_q7()

void arm_add_q7 ( const q7_t * pSrcA,
const q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize )

Q7 vector addition.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_and_u16()

void arm_and_u16 ( const uint16_t * pSrcA,
const uint16_t * pSrcB,
uint16_t * pDst,
uint32_t blockSize )

Compute the logical bitwise AND of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_and_u32()

void arm_and_u32 ( const uint32_t * pSrcA,
const uint32_t * pSrcB,
uint32_t * pDst,
uint32_t blockSize )

Compute the logical bitwise AND of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_and_u8()

void arm_and_u8 ( const uint8_t * pSrcA,
const uint8_t * pSrcB,
uint8_t * pDst,
uint32_t blockSize )

Compute the logical bitwise AND of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_atan2_f32()

arm_status arm_atan2_f32 ( float32_t y,
float32_t x,
float32_t * result )

Arc tangent in radian of y/x using sign of x and y to determine right quadrant.

Parameters
[in]yy coordinate
[in]xx coordinate
[out]resultResult
Returns
error status.

◆ arm_atan2_q15()

arm_status arm_atan2_q15 ( q15_t y,
q15_t x,
q15_t * result )

Arc tangent in radian of y/x using sign of x and y to determine right quadrant.

Parameters
[in]yy coordinate
[in]xx coordinate
[out]resultResult in Q2.13
Returns
error status.

◆ arm_atan2_q31()

arm_status arm_atan2_q31 ( q31_t y,
q31_t x,
q31_t * result )

Arc tangent in radian of y/x using sign of x and y to determine right quadrant.

Parameters
[in]yy coordinate
[in]xx coordinate
[out]resultResult in Q2.29
Returns
error status.

◆ arm_clip_f32()

void arm_clip_f32 ( const float32_t * pSrc,
float32_t * pDst,
float32_t low,
float32_t high,
uint32_t numSamples )

Elementwise floating-point clipping.

Parameters
[in]pSrcpoints to input values
[out]pDstpoints to output clipped values
[in]lowlower bound
[in]highhigher bound
[in]numSamplesnumber of samples to clip

◆ arm_clip_q15()

void arm_clip_q15 ( const q15_t * pSrc,
q15_t * pDst,
q15_t low,
q15_t high,
uint32_t numSamples )

Elementwise fixed-point clipping.

Parameters
[in]pSrcpoints to input values
[out]pDstpoints to output clipped values
[in]lowlower bound
[in]highhigher bound
[in]numSamplesnumber of samples to clip

◆ arm_clip_q31()

void arm_clip_q31 ( const q31_t * pSrc,
q31_t * pDst,
q31_t low,
q31_t high,
uint32_t numSamples )

Elementwise fixed-point clipping.

Parameters
[in]pSrcpoints to input values
[out]pDstpoints to output clipped values
[in]lowlower bound
[in]highhigher bound
[in]numSamplesnumber of samples to clip

◆ arm_clip_q7()

void arm_clip_q7 ( const q7_t * pSrc,
q7_t * pDst,
q7_t low,
q7_t high,
uint32_t numSamples )

Elementwise fixed-point clipping.

Parameters
[in]pSrcpoints to input values
[out]pDstpoints to output clipped values
[in]lowlower bound
[in]highhigher bound
[in]numSamplesnumber of samples to clip

◆ arm_cos_f32()

float32_t arm_cos_f32 ( float32_t x)

Fast approximation to the trigonometric cosine function for floating-point data.

Parameters
[in]xinput value in radians.
Returns
cos(x).

◆ arm_cos_q15()

q15_t arm_cos_q15 ( q15_t x)

Fast approximation to the trigonometric cosine function for Q15 data.

Parameters
[in]xScaled input value in radians.
Returns
cos(x).

◆ arm_cos_q31()

q31_t arm_cos_q31 ( q31_t x)

Fast approximation to the trigonometric cosine function for Q31 data.

Parameters
[in]xScaled input value in radians.
Returns
cos(x).

◆ arm_div_int64_to_int32()

__STATIC_INLINE int32_t arm_div_int64_to_int32 ( int64_t num,
int32_t den )

arm_div_int64_to_int32 function performs division of a 64-bit integer by a 32-bit integer and returns a 32-bit integer result. The function saturates the result to fit within the 32-bit integer range.

Parameters
numThe 64-bit integer numerator.
denThe 32-bit integer denominator.
Returns
The saturated 32-bit integer result of the division.

◆ arm_divide_q15()

arm_status arm_divide_q15 ( q15_t numerator,
q15_t denominator,
q15_t * quotient,
int16_t * shift )

Fixed point division.

end of SQRT group

Parameters
[in]numeratorNumerator
[in]denominatorDenominator
[out]quotientQuotient value normalized between -1.0 and 1.0
[out]shiftShift left value to get the unnormalized quotient
Returns
error status

When dividing by 0, an error ARM_MATH_NANINF is returned. And the quotient is forced to the saturated negative or positive value.

◆ arm_divide_q31()

arm_status arm_divide_q31 ( q31_t numerator,
q31_t denominator,
q31_t * quotient,
int16_t * shift )

Fixed point division.

Parameters
[in]numeratorNumerator
[in]denominatorDenominator
[out]quotientQuotient value normalized between -1.0 and 1.0
[out]shiftShift left value to get the unnormalized quotient
Returns
error status

When dividing by 0, an error ARM_MATH_NANINF is returned. And the quotient is forced to the saturated negative or positive value.

◆ arm_dot_prod_f32()

void arm_dot_prod_f32 ( const float32_t * pSrcA,
const float32_t * pSrcB,
uint32_t blockSize,
float32_t * result )

Dot product of floating-point vectors.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]resultoutput result returned here

◆ arm_dot_prod_f64()

void arm_dot_prod_f64 ( const float64_t * pSrcA,
const float64_t * pSrcB,
uint32_t blockSize,
float64_t * result )

Dot product of floating-point vectors.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]resultoutput result returned here

◆ arm_dot_prod_q15()

void arm_dot_prod_q15 ( const q15_t * pSrcA,
const q15_t * pSrcB,
uint32_t blockSize,
q63_t * result )

Dot product of Q15 vectors.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]resultoutput result returned here

◆ arm_dot_prod_q31()

void arm_dot_prod_q31 ( const q31_t * pSrcA,
const q31_t * pSrcB,
uint32_t blockSize,
q63_t * result )

Dot product of Q31 vectors.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]resultoutput result returned here

◆ arm_dot_prod_q7()

void arm_dot_prod_q7 ( const q7_t * pSrcA,
const q7_t * pSrcB,
uint32_t blockSize,
q31_t * result )

Dot product of Q7 vectors.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[in]blockSizenumber of samples in each vector
[out]resultoutput result returned here

◆ arm_mult_f32()

void arm_mult_f32 ( const float32_t * pSrcA,
const float32_t * pSrcB,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector multiplication.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_mult_f64()

void arm_mult_f64 ( const float64_t * pSrcA,
const float64_t * pSrcB,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector multiplication.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_mult_q15()

void arm_mult_q15 ( const q15_t * pSrcA,
const q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize )

Q15 vector multiplication.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_mult_q31()

void arm_mult_q31 ( const q31_t * pSrcA,
const q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize )

Q31 vector multiplication.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_mult_q7()

void arm_mult_q7 ( const q7_t * pSrcA,
const q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize )

Q7 vector multiplication.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_negate_f32()

void arm_negate_f32 ( const float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize )

Negates the elements of a floating-point vector.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_negate_f64()

void arm_negate_f64 ( const float64_t * pSrc,
float64_t * pDst,
uint32_t blockSize )

Negates the elements of a floating-point vector.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_negate_q15()

void arm_negate_q15 ( const q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize )

Negates the elements of a Q15 vector.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_negate_q31()

void arm_negate_q31 ( const q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize )

Negates the elements of a Q31 vector.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_negate_q7()

void arm_negate_q7 ( const q7_t * pSrc,
q7_t * pDst,
uint32_t blockSize )

Negates the elements of a Q7 vector.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_norm_64_to_32u()

__STATIC_INLINE void arm_norm_64_to_32u ( uint64_t in,
int32_t * normalized,
int32_t * norm )

64-bit to 32-bit unsigned normalization

Note
The input is the absolute magnitude of a signed 64-bit value and must therefore be in the range 0 to INT64_MAX. Bit 63 must not be set.
Parameters
[in]inis input unsigned long long value
[out]normalizedis the 32-bit normalized value
[out]normis norm scale

◆ arm_not_u16()

void arm_not_u16 ( const uint16_t * pSrc,
uint16_t * pDst,
uint32_t blockSize )

Compute the logical bitwise NOT of a fixed-point vector.

Parameters
[in]pSrcpoints to input vector
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_not_u32()

void arm_not_u32 ( const uint32_t * pSrc,
uint32_t * pDst,
uint32_t blockSize )

Compute the logical bitwise NOT of a fixed-point vector.

Parameters
[in]pSrcpoints to input vector
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_not_u8()

void arm_not_u8 ( const uint8_t * pSrc,
uint8_t * pDst,
uint32_t blockSize )

Compute the logical bitwise NOT of a fixed-point vector.

Parameters
[in]pSrcpoints to input vector
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_offset_f32()

void arm_offset_f32 ( const float32_t * pSrc,
float32_t offset,
float32_t * pDst,
uint32_t blockSize )

Adds a constant offset to a floating-point vector.

Parameters
[in]pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_offset_f64()

void arm_offset_f64 ( const float64_t * pSrc,
float64_t offset,
float64_t * pDst,
uint32_t blockSize )

Adds a constant offset to a floating-point vector.

Parameters
[in]pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_offset_q15()

void arm_offset_q15 ( const q15_t * pSrc,
q15_t offset,
q15_t * pDst,
uint32_t blockSize )

Adds a constant offset to a Q15 vector.

Parameters
[in]pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_offset_q31()

void arm_offset_q31 ( const q31_t * pSrc,
q31_t offset,
q31_t * pDst,
uint32_t blockSize )

Adds a constant offset to a Q31 vector.

Parameters
[in]pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_offset_q7()

void arm_offset_q7 ( const q7_t * pSrc,
q7_t offset,
q7_t * pDst,
uint32_t blockSize )

Adds a constant offset to a Q7 vector.

Parameters
[in]pSrcpoints to the input vector
[in]offsetis the offset to be added
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_or_u16()

void arm_or_u16 ( const uint16_t * pSrcA,
const uint16_t * pSrcB,
uint16_t * pDst,
uint32_t blockSize )

Compute the logical bitwise OR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_or_u32()

void arm_or_u32 ( const uint32_t * pSrcA,
const uint32_t * pSrcB,
uint32_t * pDst,
uint32_t blockSize )

Compute the logical bitwise OR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_or_u8()

void arm_or_u8 ( const uint8_t * pSrcA,
const uint8_t * pSrcB,
uint8_t * pDst,
uint32_t blockSize )

Compute the logical bitwise OR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_recip_q15()

uint32_t arm_recip_q15 ( q15_t in,
q15_t * dst,
const q15_t * pRecipTable )

Function to Calculates 1/in (reciprocal) value of Q15 Data type. It should not be used with negative values.

Parameters
[in]inInput value in 1.15 format.
[out]dstReciprocal mantissa in 1.15 format.
[in]pRecipTableTable of 64 initial reciprocal approximations.
Returns
Exponent e such that the reciprocal is approximately *dst times 2^e.

◆ arm_recip_q31()

uint32_t arm_recip_q31 ( q31_t in,
q31_t * dst,
const q31_t * pRecipTable )

Function to Calculates 1/in (reciprocal) value of Q31 Data type. It should not be used with negative values.

Parameters
[in]inInput value in 1.31 format.
[out]dstReciprocal mantissa in 1.31 format.
[in]pRecipTableTable of 64 initial reciprocal approximations.
Returns
Exponent e such that the reciprocal is approximately *dst times 2^e.

◆ arm_scale_f32()

void arm_scale_f32 ( const float32_t * pSrc,
float32_t scale,
float32_t * pDst,
uint32_t blockSize )

Multiplies a floating-point vector by a scalar.

Parameters
[in]pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_scale_f64()

void arm_scale_f64 ( const float64_t * pSrc,
float64_t scale,
float64_t * pDst,
uint32_t blockSize )

Multiplies a floating-point vector by a scalar.

Parameters
[in]pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_scale_q15()

void arm_scale_q15 ( const q15_t * pSrc,
q15_t scaleFract,
int8_t shift,
q15_t * pDst,
uint32_t blockSize )

Multiplies a Q15 vector by a scalar.

Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_scale_q31()

void arm_scale_q31 ( const q31_t * pSrc,
q31_t scaleFract,
int8_t shift,
q31_t * pDst,
uint32_t blockSize )

Multiplies a Q31 vector by a scalar.

Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_scale_q7()

void arm_scale_q7 ( const q7_t * pSrc,
q7_t scaleFract,
int8_t shift,
q7_t * pDst,
uint32_t blockSize )

Multiplies a Q7 vector by a scalar.

Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_shift_q15()

void arm_shift_q15 ( const q15_t * pSrc,
int8_t shiftBits,
q15_t * pDst,
uint32_t blockSize )

Shifts the elements of a Q15 vector a specified number of bits.

Parameters
[in]pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_shift_q31()

void arm_shift_q31 ( const q31_t * pSrc,
int8_t shiftBits,
q31_t * pDst,
uint32_t blockSize )

Shifts the elements of a Q31 vector a specified number of bits.

Parameters
[in]pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_shift_q7()

void arm_shift_q7 ( const q7_t * pSrc,
int8_t shiftBits,
q7_t * pDst,
uint32_t blockSize )

Shifts the elements of a Q7 vector a specified number of bits.

Parameters
[in]pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in the vector

◆ arm_sin_f32()

float32_t arm_sin_f32 ( float32_t x)

Fast approximation to the trigonometric sine function for floating-point data.

Parameters
[in]xinput value in radians.
Returns
sin(x).

◆ arm_sin_q15()

q15_t arm_sin_q15 ( q15_t x)

Fast approximation to the trigonometric sine function for Q15 data.

Parameters
[in]xScaled input value in radians.
Returns
sin(x).

◆ arm_sin_q31()

q31_t arm_sin_q31 ( q31_t x)

Fast approximation to the trigonometric sine function for Q31 data.

Parameters
[in]xScaled input value in radians.
Returns
sin(x).

◆ arm_sub_f32()

void arm_sub_f32 ( const float32_t * pSrcA,
const float32_t * pSrcB,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector subtraction.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_sub_f64()

void arm_sub_f64 ( const float64_t * pSrcA,
const float64_t * pSrcB,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector subtraction.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_sub_q15()

void arm_sub_q15 ( const q15_t * pSrcA,
const q15_t * pSrcB,
q15_t * pDst,
uint32_t blockSize )

Q15 vector subtraction.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_sub_q31()

void arm_sub_q31 ( const q31_t * pSrcA,
const q31_t * pSrcB,
q31_t * pDst,
uint32_t blockSize )

Q31 vector subtraction.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_sub_q7()

void arm_sub_q7 ( const q7_t * pSrcA,
const q7_t * pSrcB,
q7_t * pDst,
uint32_t blockSize )

Q7 vector subtraction.

Parameters
[in]pSrcApoints to the first input vector
[in]pSrcBpoints to the second input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_vexp_f32()

void arm_vexp_f32 ( const float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector of exp values.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_vexp_f64()

void arm_vexp_f64 ( const float64_t * pSrc,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector of exp values.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_vlog_f32()

void arm_vlog_f32 ( const float32_t * pSrc,
float32_t * pDst,
uint32_t blockSize )

Floating-point vector of log values.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_vlog_f64()

void arm_vlog_f64 ( const float64_t * pSrc,
float64_t * pDst,
uint32_t blockSize )

Floating-point vector of log values.

Parameters
[in]pSrcpoints to the input vector
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector

◆ arm_vlog_q15()

void arm_vlog_q15 ( const q15_t * pSrc,
q15_t * pDst,
uint32_t blockSize )

q15 vector of log values.

Parameters
[in]pSrcpoints to the input vector in q15
[out]pDstpoints to the output vector in q4.11
[in]blockSizenumber of samples in each vector

◆ arm_vlog_q31()

void arm_vlog_q31 ( const q31_t * pSrc,
q31_t * pDst,
uint32_t blockSize )

q31 vector of log values.

Parameters
[in]pSrcpoints to the input vector in q31
[out]pDstpoints to the output vector in q5.26
[in]blockSizenumber of samples in each vector

◆ arm_xor_u16()

void arm_xor_u16 ( const uint16_t * pSrcA,
const uint16_t * pSrcB,
uint16_t * pDst,
uint32_t blockSize )

Compute the logical bitwise XOR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_xor_u32()

void arm_xor_u32 ( const uint32_t * pSrcA,
const uint32_t * pSrcB,
uint32_t * pDst,
uint32_t blockSize )

Compute the logical bitwise XOR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ arm_xor_u8()

void arm_xor_u8 ( const uint8_t * pSrcA,
const uint8_t * pSrcB,
uint8_t * pDst,
uint32_t blockSize )

Compute the logical bitwise XOR of two fixed-point vectors.

Parameters
[in]pSrcApoints to input vector A
[in]pSrcBpoints to input vector B
[out]pDstpoints to output vector
[in]blockSizenumber of samples in each vector

◆ clip_q31_to_q15()

q15_t clip_q31_to_q15 ( q31_t x)

Clips Q31 to Q15 values.

Parameters
[in]xValue to saturate to the signed 16-bit range.
Returns
The saturated value, without fractional rescaling.

◆ clip_q63_to_q31()

q31_t clip_q63_to_q31 ( q63_t x)

Clips Q63 to Q31 values.

Parameters
[in]xValue to saturate to the signed 32-bit range.
Returns
The saturated value, without fractional rescaling.

◆ masked_dot_sum()

template<typename A, typename B, typename MASK>
auto masked_dot_sum ( const A & a,
const B & b,
const MASK & mask )
inline

Compute a masked dot product and masked sum of the first operand.

Template Parameters
AFirst vector expression type.
BSecond vector expression type.
MASKMask type supporting element indexing.
Parameters
[in]aFirst vector operand.
[in]bSecond vector operand with at least a.length() elements.
[in]maskSelection mask with at least a.length() elements.
Returns
MaskedDotSum containing the sum of a[i] * b[i] and the sum of a[i] over indices where mask[i] is true.

◆ masked_scale_add()

template<typename DST, typename SRC, typename MASK>
void masked_scale_add ( DST & destination,
const SRC & source,
const MASK & mask,
typename traits< DST >::Scalar scale )
inline

Accumulate source * scale into destination where mask is true.

Template Parameters
DSTDestination vector type.
SRCSource vector expression type.
MASKMask type supporting element indexing.
Parameters
[in,out]destinationVector to update.
[in]sourceInput expression with at least destination.length() elements.
[in]maskSelection mask with at least destination.length() elements.
[in]scaleMultiplier applied to selected source values.

◆ mult32x64()

q63_t mult32x64 ( q63_t x,
q31_t y )

Multiplies Q63 by Q31 and returns a result in 2.62 format.

Parameters
[in]xMultiplicand in 1.63 format.
[in]yMultiplicand in 1.31 format.
Returns
The 64-bit product after discarding the lowest 32 bits.

◆ read_q15x2()

q31_t read_q15x2 ( q15_t const * pQ15)

Read 2 Q15 from Q15 pointer.

Parameters
[in]pQ15points to input value
Returns
Q31 value

◆ read_q7x4()

q31_t read_q7x4 ( q7_t const * pQ7)

Read 4 Q7 from Q7 pointer.

Parameters
[in]pQ7points to input value
Returns
Q31 value

◆ round_scaled_to_nearest_clipped()

template<typename DST, typename SRC>
void round_scaled_to_nearest_clipped ( DST & destination,
const SRC & source,
float multiplier,
typename traits< DST >::Scalar offset,
typename traits< DST >::Scalar minimum,
typename traits< DST >::Scalar maximum )
inline

Scale in float, round to nearest-even, offset, and clip.

Template Parameters
DSTDestination vector type.
SRCSource vector expression type.
Parameters
[out]destinationVector receiving the rounded and clipped values.
[in]sourceInput expression with at least destination.length() elements.
[in]multiplierScale applied before rounding.
[in]offsetOffset added after rounding.
[in]minimumInclusive lower clipping bound.
[in]maximumInclusive upper clipping bound.

◆ round_to_nearest()

template<typename DST, typename SRC>
void round_to_nearest ( DST & destination,
const SRC & source )
inline

Element-wise nearest-even rounding into an existing vector.

Template Parameters
DSTDestination vector type.
SRCSource vector expression type.
Parameters
[out]destinationVector receiving the rounded values.
[in]sourceInput expression with at least destination.length() elements.

◆ round_to_nearest_clipped()

template<typename DST, typename SRC>
void round_to_nearest_clipped ( DST & destination,
const SRC & source,
typename traits< DST >::Scalar offset,
typename traits< DST >::Scalar minimum,
typename traits< DST >::Scalar maximum )
inline

Nearest-even rounding followed by an offset and inclusive clipping.

Template Parameters
DSTDestination vector type.
SRCSource vector expression type.
Parameters
[out]destinationVector receiving the rounded and clipped values.
[in]sourceInput expression with at least destination.length() elements.
[in]offsetOffset added after rounding.
[in]minimumInclusive lower clipping bound.
[in]maximumInclusive upper clipping bound.

◆ write_q15x2()

void write_q15x2 ( q15_t * pQ15,
q31_t value )

Write 2 Q15 to Q15 pointer.

Parameters
[in]pQ15points to input value
[in]valueQ31 value

◆ write_q15x2_ia()

void write_q15x2_ia ( q15_t ** pQ15,
q31_t value )

Write 2 Q15 to Q15 pointer and increment pointer afterwards.

Parameters
[in]pQ15points to input value
[in]valueQ31 value

◆ write_q7x4_ia()

void write_q7x4_ia ( q7_t ** pQ7,
q31_t value )

Write 4 Q7 to Q7 pointer and increment pointer afterwards.

Parameters
[in]pQ7points to input value
[in]valueQ31 value