Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of dsp by
arm_max_q31.c
00001 /* ---------------------------------------------------------------------- 00002 * Copyright (C) 2010 ARM Limited. All rights reserved. 00003 * 00004 * $Date: 29. November 2010 00005 * $Revision: V1.0.3 00006 * 00007 * Project: CMSIS DSP Library 00008 * Title: arm_max_q31.c 00009 * 00010 * Description: Maximum value of a Q31 vector. 00011 * 00012 * Target Processor: Cortex-M4/Cortex-M3 00013 * 00014 * Version 1.0.3 2010/11/29 00015 * Re-organized the CMSIS folders and updated documentation. 00016 * 00017 * Version 1.0.2 2010/11/11 00018 * Documentation updated. 00019 * 00020 * Version 1.0.1 2010/10/05 00021 * Production release and review comments incorporated. 00022 * 00023 * Version 1.0.0 2010/09/20 00024 * Production release and review comments incorporated. 00025 * ---------------------------------------------------------------------------- */ 00026 00027 #include "arm_math.h" 00028 00029 /** 00030 * @ingroup groupStats 00031 */ 00032 00033 /** 00034 * @addtogroup Max 00035 * @{ 00036 */ 00037 00038 00039 /** 00040 * @brief Maximum value of a Q31 vector. 00041 * @param[in] *pSrc points to the input vector 00042 * @param[in] blockSize length of the input vector 00043 * @param[out] *pResult maximum value returned here 00044 * @param[out] *pIndex index of maximum value returned here 00045 * @return none. 00046 */ 00047 00048 void arm_max_q31( 00049 q31_t * pSrc, 00050 uint32_t blockSize, 00051 q31_t * pResult, 00052 uint32_t * pIndex) 00053 { 00054 q31_t maxVal, out; /* Temporary variables to store the output value. */ 00055 uint32_t blkCnt, outIndex; /* loop counter */ 00056 00057 /* Initialise the index value to zero. */ 00058 outIndex = 0u; 00059 /* Load first input value that act as reference value for comparision */ 00060 out = *pSrc++; 00061 00062 /* Loop over blockSize number of values */ 00063 blkCnt = (blockSize - 1u); 00064 00065 do 00066 { 00067 /* Initialize maxVal to the next consecutive values one by one */ 00068 maxVal = *pSrc++; 00069 00070 /* compare for the maximum value */ 00071 if(out < maxVal) 00072 { 00073 /* Update the maximum value and its index */ 00074 out = maxVal; 00075 outIndex = blockSize - blkCnt; 00076 } 00077 00078 blkCnt--; 00079 00080 } while(blkCnt > 0u); 00081 00082 /* Store the maximum value and its index into destination pointers */ 00083 *pResult = out; 00084 *pIndex = outIndex; 00085 } 00086 00087 /** 00088 * @} end of Max group 00089 */
Generated on Tue Jul 12 2022 19:55:43 by
1.7.2
