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
00067 void arm_cmplx_mag_f32(
00068 float32_t * pSrc,
00069 float32_t * pDst,
00070 uint32_t numSamples)
00071 {
00072 uint32_t blkCnt;
00073 float32_t realIn1, realIn2;
00074 float32_t imagIn1, imagIn2;
00075 float32_t mult1, mult2, mult3, mult4;
00076 float32_t add1, add2;
00077
00078
00079
00080 blkCnt = numSamples >> 2u;
00081
00082
00083
00084 while(blkCnt > 0u)
00085 {
00086
00087
00088 realIn1 = *pSrc;
00089 imagIn1 = *(pSrc + 1);
00090 realIn2 = *(pSrc + 2);
00091 imagIn2 = *(pSrc + 3);
00092
00093
00094 mult1 = realIn1 * realIn1;
00095 mult2 = imagIn1 * imagIn1;
00096 mult3 = realIn2 * realIn2;
00097 mult4 = imagIn2 * imagIn2;
00098
00099
00100 realIn1 = *(pSrc + 4);
00101
00102
00103 add1 = mult1 + mult2;
00104 add2 = mult3 + mult4;
00105
00106
00107 imagIn1 = *(pSrc + 5);
00108
00109
00110 mult1 = realIn1 * realIn1;
00111
00112
00113 realIn2 = *(pSrc + 6);
00114
00115
00116 mult2 = imagIn1 * imagIn1;
00117
00118
00119 imagIn2 = *(pSrc + 7);
00120
00121
00122 mult3 = realIn2 * realIn2;
00123 mult4 = imagIn2 * imagIn2;
00124
00125
00126 arm_sqrt_f32(add1, &pDst[0]);
00127
00128
00129 pSrc += 8;
00130
00131
00132 arm_sqrt_f32(add2, &pDst[1]);
00133
00134
00135 add1 = mult1 + mult2;
00136 add2 = mult3 + mult4;
00137
00138
00139 arm_sqrt_f32(add1, &pDst[2]);
00140 arm_sqrt_f32(add2, &pDst[3]);
00141
00142
00143 pDst += 4u;
00144
00145
00146 blkCnt--;
00147 }
00148
00149
00150
00151 blkCnt = numSamples % 0x4u;
00152
00153 while(blkCnt > 0u)
00154 {
00155
00156 realIn1 = *pSrc++;
00157 imagIn1 = *pSrc++;
00158
00159 arm_sqrt_f32((realIn1 * realIn1) + (imagIn1 * imagIn1), pDst++);
00160
00161
00162 blkCnt--;
00163 }
00164 }
00165