1 /* ----------------------------------------------------------------------
2 * Copyright (C) 2010 ARM Limited. All rights reserved.
7 * Project: CMSIS DSP Library
10 * Description: Minimum value of a floating-point vector.
12 * Target Processor: Cortex-M4/Cortex-M3/Cortex-M0
14 * Version 1.0.10 2011/7/15
15 * Big Endian support added and Merged M0 and M3/M4 Source code.
17 * Version 1.0.3 2010/11/29
18 * Re-organized the CMSIS folders and updated documentation.
20 * Version 1.0.2 2010/11/11
21 * Documentation updated.
23 * Version 1.0.1 2010/10/05
24 * Production release and review comments incorporated.
26 * Version 1.0.0 2010/09/20
27 * Production release and review comments incorporated.
28 * ---------------------------------------------------------------------------- */
37 * @defgroup Min Minimum
39 * Computes the minimum value of an array of data.
40 * The function returns both the minimum value and its position within the array.
41 * There are separate functions for floating-point, Q31, Q15, and Q7 data types.
51 * @brief Minimum value of a floating-point vector.
52 * @param[in] *pSrc points to the input vector
53 * @param[in] blockSize length of the input vector
54 * @param[out] *pResult minimum value returned here
55 * @param[out] *pIndex index of minimum value returned here
66 float32_t minVal, out; /* Temporary variables to store the output value. */
67 uint32_t blkCnt, outIndex; /* loop counter */
69 /* Initialise the index value to zero. */
71 /* Load first input value that act as reference value for comparision */
76 /* Run the below code for Cortex-M4 and Cortex-M3 */
79 /* Loop over blockSize number of values */
80 blkCnt = (blockSize - 1u);
84 /* Initialize minVal to the next consecutive values one by one */
87 /* compare for the minimum value */
90 /* Update the minimum value and it's index */
92 outIndex = blockSize - blkCnt;
101 /* Run the below code for Cortex-M0 */
103 /* Loop over blockSize - 1 number of values */
104 blkCnt = (blockSize - 1u);
108 /* Initialize minVal to the next consecutive values one by one */
111 /* compare for the minimum value */
114 /* Update the minimum value and it's index */
116 outIndex = blockSize - blkCnt;
118 /* Decrement the loop counter */
123 #endif /* #ifndef ARM_MATH_CM0 */
126 /* Store the minimum value and it's index into destination pointers */
132 * @} end of Min group