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

Data Structures

struct  _Binary
 Expression for binary operator. More...
 
struct  _Expr
 Expression template. More...
 
struct  _Outer
 Outer product operator for expressions. More...
 
struct  _Unary
 Expression for unary operator. More...
 
struct  Accumulate
 Accumulation without saturation. More...
 
struct  Accumulate< MD, MS, F, S, true >
 Accumulation without saturation. More...
 
struct  default_user_allocator_malloc_free
 Malloc memory allocator. More...
 
class  DSP
 
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...
 
class  Helium
 
class  Helium82
 
struct  ListElem
 Simple list of elements. More...
 
struct  malloc_allocator
 Default memory allocator for vectors and matrixes. More...
 
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  Neon
 
struct  number_traits
 Properties of a scalar datatype. More...
 
struct  Q
 Fixed point template. 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  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  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.
 

Functions

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_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 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< VA > 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 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 >()) &&SameElementType< LHS, RHS >::value &&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 >()) &&SameElementType< LHS, RHS >::value &&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 RHS , typename std::enable_if<(!is_scalar< LHS >()||!is_scalar< RHS >()) &&SameElementType< LHS, RHS >::value &&same_static_length< LHS, RHS >(), bool >::type = true>
auto operator* (const LHS &a, const RHS &b)
 Element wise multiplication operator for expressions.
 

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 independant way (using operators of the library)