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_f32.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_f32.c 00009 * 00010 * Description: Maximum value of a floating-point 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 * @defgroup Max Maximum 00035 * 00036 * Computes the maximum value of an array of data. 00037 * The function returns both the maximum value and its position within the array. 00038 * There are separate functions for floating-point, Q31, Q15, and Q7 data types. 00039 */ 00040 00041 /** 00042 * @addtogroup Max 00043 * @{ 00044 */ 00045 00046 00047 /** 00048 * @brief Maximum value of a floating-point vector. 00049 * @param[in] *pSrc points to the input vector 00050 * @param[in] blockSize length of the input vector 00051 * @param[out] *pResult maximum value returned here 00052 * @param[out] *pIndex index of maximum value returned here 00053 * @return none. 00054 */ 00055 00056 void arm_max_f32( 00057 float32_t * pSrc, 00058 uint32_t blockSize, 00059 float32_t * pResult, 00060 uint32_t * pIndex) 00061 { 00062 float32_t maxVal, out; /* Temporary variables to store the output value. */ 00063 uint32_t blkCnt, outIndex; /* loop counter */ 00064 00065 /* Initialise the index value to zero. */ 00066 outIndex = 0u; 00067 /* Load first input value that act as reference value for comparision */ 00068 out = *pSrc++; 00069 00070 /* Loop over blockSize number of values */ 00071 blkCnt = (blockSize - 1u); 00072 00073 do 00074 { 00075 /* Initialize maxVal to the next consecutive values one by one */ 00076 maxVal = *pSrc++; 00077 00078 /* compare for the maximum value */ 00079 if(out < maxVal) 00080 { 00081 /* Update the maximum value and it's index */ 00082 out = maxVal; 00083 outIndex = blockSize - blkCnt; 00084 } 00085 00086 blkCnt--; 00087 00088 } while(blkCnt > 0u); 00089 00090 /* Store the maximum value and it's index into destination pointers */ 00091 *pResult = out; 00092 *pIndex = outIndex; 00093 } 00094 00095 /** 00096 * @} end of Max group 00097 */
Generated on Tue Jul 12 2022 19:55:43 by
1.7.2
