Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "arm_math.h"
00025
00054 void arm_min_f32(
00055 float32_t * pSrc,
00056 uint32_t blockSize,
00057 float32_t * pResult,
00058 uint32_t * pIndex)
00059 {
00060 float32_t minVal1, minVal2, out;
00061 uint32_t blkCnt, outIndex, count;
00062
00063
00064 count = 0u;
00065
00066 outIndex = 0u;
00067
00068 out = *pSrc++;
00069
00070
00071 blkCnt = (blockSize - 1u) >> 2u;
00072
00073 while(blkCnt > 0)
00074 {
00075
00076 minVal1 = pSrc[0];
00077 minVal2 = pSrc[1];
00078
00079
00080 if(out > minVal1)
00081 {
00082
00083 out = minVal1;
00084 outIndex = count + 1u;
00085 }
00086
00087 minVal1 = pSrc[2];
00088
00089
00090 if(out > minVal2)
00091 {
00092
00093 out = minVal2;
00094 outIndex = count + 2u;
00095 }
00096
00097 minVal2 = pSrc[3];
00098
00099
00100 if(out > minVal1)
00101 {
00102
00103 out = minVal1;
00104 outIndex = count + 3u;
00105 }
00106
00107
00108 if(out > minVal2)
00109 {
00110
00111 out = minVal2;
00112 outIndex = count + 4u;
00113 }
00114
00115 count += 4u;
00116
00117 pSrc += 4u;
00118
00119 blkCnt--;
00120 };
00121
00122
00123 blkCnt = (blockSize - 1u) % 4u;
00124
00125 while(blkCnt > 0)
00126 {
00127
00128 minVal1 = *pSrc++;
00129
00130
00131 if(out > minVal1)
00132 {
00133
00134 out = minVal1;
00135 outIndex = blockSize - blkCnt;
00136 }
00137
00138 blkCnt--;
00139
00140 };
00141
00142
00143 *pResult = out;
00144 *pIndex = outIndex;
00145 }
00146