| /****************************************************************************** | |
| * @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 | |
| */ | |
| extern "C" | |
| { | |
| //#define TABLE_SPACING_Q31 0x400000 | |
| //#define TABLE_SPACING_Q15 0x80 | |
| } | |
| /** | |
| * | |
| * End of file. | |
| */ | |