File size: 8,726 Bytes
25ade36 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | /******************************************************************************
* @file arm_math.h
* @brief Public header file for CMSIS DSP Library
* @version V1.10.0
* @date 08 July 2021
* Target Processor: Cortex-M and Cortex-A cores
******************************************************************************/
/*
* Copyright (c) 2010-2021 Arm Limited or its affiliates. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
\mainpage CMSIS DSP Software Library
*
* \section intro Introduction
*
* This user manual describes the CMSIS DSP software library,
* a suite of common signal processing functions for use on Cortex-M and Cortex-A processor
* based devices.
*
* The library is divided into a number of functions each covering a specific category:
* - \ref groupMath "Basic math functions"
* - \ref groupFastMath "Fast math functions"
* - \ref groupCmplxMath "Complex math functions"
* - \ref groupFilters "Filtering functions"
* - \ref groupMatrix "Matrix functions"
* - \ref groupTransforms "Transform functions"
* - \ref groupController "Motor control functions"
* - \ref groupStats "Statistical functions"
* - \ref groupSupport "Support functions"
* - \ref groupInterpolation "Interpolation functions"
* - \ref groupSVM "Support Vector Machine functions (SVM)"
* - \ref groupBayes "Bayes classifier functions"
* - \ref groupDistance "Distance functions"
* - \ref groupQuaternionMath "Quaternion functions"
*
* The library has generally separate functions for operating on 8-bit integers, 16-bit integers,
* 32-bit integer and 32-bit floating-point values.
*
* The library is providing vectorized versions of most algorthms for Helium
* and of most f32 algorithms for Neon.
*
* When using a vectorized version, provide a little bit of padding after the end of
* a buffer (3 words) because the vectorized code may read a little bit after the end
* of a buffer. You don't have to modify your buffers but just ensure that the
* end of buffer + padding is not outside of a memory region.
*
* \section using Using the Library
*
* The library is released in source form. It is strongly advised to compile the library using -Ofast to
* have the best performances.
*
* The library functions are declared in the public file `arm_math.h` which is placed in the `Include` folder.
* Simply include this file. If you don't want to include everything, you can also rely
* on headers in `Include/dsp` folder and use only what you need.
*
* \section example Examples
*
* The library ships with a number of examples which demonstrate how to use the library functions. Please refer to \ref groupExamples.
*
* \section toolchain Toolchain Support
*
* The library is now tested on Fast Models building with cmake.
* Core M0, M4, M7, M33, M55, A32 are tested.
*
*
* \section preprocessor Preprocessor Macros
*
* Each library project has different preprocessor macros.
*
* - `ARM_MATH_BIG_ENDIAN`:
* - Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets.
* .
* - `ARM_MATH_MATRIX_CHECK`:
* - Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices
* .
* - `ARM_MATH_ROUNDING`:
* - Define macro ARM_MATH_ROUNDING for rounding on support functions
* .
* - `ARM_MATH_LOOPUNROLL`:
* - Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions
* .
* - `ARM_MATH_NEON`:
* - Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions.
* It is not enabled by default when Neon is available because performances are
* dependent on the compiler and target architecture.
* .
* - `ARM_MATH_NEON_EXPERIMENTAL`:
* - Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of
* of some DSP functions. Experimental Neon versions currently do not have better
* performances than the scalar versions.
* .
* - `ARM_MATH_HELIUM`:
* - It implies the flags ARM_MATH_MVEF and ARM_MATH_MVEI and ARM_MATH_MVE_FLOAT16.
* .
* - `ARM_MATH_HELIUM_EXPERIMENTAL`:
* - Only taken into account when ARM_MATH_MVEF, ARM_MATH_MVEI or ARM_MATH_MVE_FLOAT16 are defined.
* Enable some vector versions which may have worse performance than scalar
* depending on the core / compiler configuration.
* .
* - `ARM_MATH_MVEF`:
* - Select Helium versions of the f32 algorithms.
* It implies ARM_MATH_FLOAT16 and ARM_MATH_MVEI.
* .
* - `ARM_MATH_MVEI`:
* - Select Helium versions of the int and fixed point algorithms.
* .
* - `ARM_MATH_MVE_FLOAT16`:
* - MVE Float16 implementations of some algorithms (Requires MVE extension).
* .
* - `DISABLEFLOAT16`:
* - Disable float16 algorithms when __fp16 is not supported for a
* specific compiler / core configuration.
* This is only valid for scalar. When vector architecture is
* supporting f16 then it can't be disabled.
* .
* - `ARM_MATH_AUTOVECTORIZE`:
* - With Helium or Neon, disable the use of vectorized code with C intrinsics
* and use pure C instead. The vectorization is then done by the compiler.
*
* \section pack CMSIS-DSP in ARM::CMSIS Pack
*
* The following files relevant to CMSIS-DSP are present in the <b>ARM::CMSIS</b> Pack directories:
* |File/Folder |Content |
* |---------------------------------|------------------------------------------------------------------------|
* |\b CMSIS\\Documentation\\DSP | This documentation |
* |\b CMSIS\\DSP\\Examples | Example projects demonstrating the usage of the library functions |
* |\b CMSIS\\DSP\\ComputeLibrary | Small Neon kernels when building on Cortex-A
* |\b CMSIS\\DSP\\Include | include files for using and building the lib
* |\b CMSIS\\DSP\\PrivateInclude | private include files for building the lib |
* |\b CMSIS\\DSP\\Source | source files |
*
* \section rev Revision History of CMSIS-DSP
* Please refer to \ref ChangeLog_pg.
*
* \section license License
*
* The CMSIS-DSP is provided free of charge under the <a href="LICENSE.txt">Apache 2.0 License</a>.
*/
/**
* @defgroup groupExamples Examples
*/
#ifndef _ARM_MATH_H
#define _ARM_MATH_H
#include "edge-impulse-sdk/CMSIS/DSP/Include/arm_math_types.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/arm_math_memory.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/none.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/utils.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/basic_math_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/interpolation_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/bayes_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/matrix_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/complex_math_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/statistics_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/controller_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/support_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/distance_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/svm_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/fast_math_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/transform_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/filtering_functions.h"
#include "edge-impulse-sdk/CMSIS/DSP/Include/dsp/quaternion_math_functions.h"
#ifdef __cplusplus
extern "C"
{
#endif
//#define TABLE_SPACING_Q31 0x400000
//#define TABLE_SPACING_Q15 0x80
#ifdef __cplusplus
}
#endif
#endif /* _ARM_MATH_H */
/**
*
* End of file.
*/
|