284 #define __CMSIS_GENERIC 286 #if defined(ARM_MATH_CM7) 288 #elif defined (ARM_MATH_CM4) 290 #elif defined (ARM_MATH_CM3) 291 #include "core_cm3.h" 292 #elif defined (ARM_MATH_CM0) 294 #define ARM_MATH_CM0_FAMILY 295 #elif defined (ARM_MATH_CM0PLUS) 297 #define ARM_MATH_CM0_FAMILY 299 #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0" 302 #undef __CMSIS_GENERIC 315 #define DELTA_Q31 (0x100) 316 #define DELTA_Q15 0x5 317 #define INDEX_MASK 0x0000003F 319 #define PI 3.14159265358979f 326 #define FAST_MATH_TABLE_SIZE 512 327 #define FAST_MATH_Q31_SHIFT (32 - 10) 328 #define FAST_MATH_Q15_SHIFT (16 - 10) 329 #define CONTROLLER_Q31_SHIFT (32 - 9) 330 #define TABLE_SIZE 256 331 #define TABLE_SPACING_Q31 0x400000 332 #define TABLE_SPACING_Q15 0x80 339 #define INPUT_SPACING 0xB60B61 344 #ifndef UNALIGNED_SUPPORT_DISABLE 347 #if defined (__GNUC__) 348 #define ALIGN4 __attribute__((aligned(4))) 350 #define ALIGN4 __align(4) 403 #define __SIMD32_TYPE int32_t __packed 404 #define CMSIS_UNUSED __attribute__((unused)) 405 #elif defined __ICCARM__ 407 #define __SIMD32_TYPE int32_t __packed 408 #elif defined __GNUC__ 409 #define __SIMD32_TYPE int32_t 410 #define CMSIS_UNUSED __attribute__((unused)) 411 #elif defined __CSMC__ 413 #define __SIMD32_TYPE int32_t 415 #error Unknown compiler 418 #define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) 419 #define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) 421 #define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) 423 #define __SIMD64(addr) (*(int64_t **) & (addr)) 425 #if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) 429 #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ 430 (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) 431 #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ 432 (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) 440 #ifndef ARM_MATH_BIG_ENDIAN 442 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ 443 (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ 444 (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ 445 (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) 448 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ 449 (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ 450 (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ 451 (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) 462 return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
463 ((0x7FFFFFFF ^ ((
q31_t) (x >> 63)))) : (q31_t) x;
472 return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
473 ((0x7FFF ^ ((
q15_t) (x >> 63)))) : (q15_t) (x >> 15);
482 return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?
483 ((0x7F ^ ((
q7_t) (x >> 31)))) : (q7_t) x;
492 return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?
493 ((0x7FFF ^ ((
q15_t) (x >> 31)))) : (q15_t) x;
504 return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
505 (((q63_t) (x >> 32) * y)));
509 #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) 513 #if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ||(defined (__GNUC__)) || defined (__TASKING__) ) 515 static __INLINE uint32_t __CLZ(
519 static __INLINE uint32_t __CLZ(
523 uint32_t mask = 0x80000000;
525 while((data & mask) == 0)
547 uint32_t
out, tempVal;
553 signBits = __CLZ(in) - 1;
557 signBits = __CLZ(-in) - 1;
564 index = (uint32_t) (in >> 24u);
568 out = pRecipTable[index];
572 for (i = 0u; i < 2u; i++)
574 tempVal = (
q31_t) (((q63_t) in *
out) >> 31u);
575 tempVal = 0x7FFFFFFF - tempVal;
585 return (signBits + 1u);
598 uint32_t
out = 0, tempVal = 0;
599 uint32_t index = 0,
i = 0;
600 uint32_t signBits = 0;
604 signBits = __CLZ(in) - 17;
608 signBits = __CLZ(-in) - 17;
619 out = pRecipTable[index];
623 for (
i = 0;
i < 2;
i++)
625 tempVal = (
q15_t) (((q31_t) in *
out) >> 15);
626 tempVal = 0x7FFF - tempVal;
628 out = (
q15_t) (((q31_t) out * tempVal) >> 14);
635 return (signBits + 1);
643 #if defined(ARM_MATH_CM0_FAMILY) 645 static __INLINE q31_t __SSAT(
649 int32_t posMax, negMin;
653 for (i = 0; i < (y - 1); i++)
660 posMax = (posMax - 1);
688 #if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) 693 static __INLINE q31_t __QADD8(
704 r = __SSAT((q31_t) (r + s), 8);
705 s = __SSAT(((q31_t) (((x << 16) >> 24) + ((y << 16) >> 24))), 8);
706 t = __SSAT(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8);
707 u = __SSAT(((q31_t) ((x >> 24) + (y >> 24))), 8);
710 (((
q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) |
711 (((
q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF);
720 static __INLINE q31_t __QSUB8(
731 r = __SSAT((r - s), 8);
732 s = __SSAT(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8;
733 t = __SSAT(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16;
734 u = __SSAT(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24;
737 (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r &
750 static __INLINE q31_t __QADD16(
761 r = __SSAT(r + s, 16);
762 s = __SSAT(((q31_t) ((x >> 16) + (y >> 16))), 16) << 16;
764 sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
773 static __INLINE q31_t __SHADD16(
784 r = ((r >> 1) + (s >> 1));
785 s = ((
q31_t) ((x >> 17) + (y >> 17))) << 16;
787 sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
796 static __INLINE q31_t __QSUB16(
807 r = __SSAT(r - s, 16);
808 s = __SSAT(((q31_t) ((x >> 16) - (y >> 16))), 16) << 16;
810 sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
818 static __INLINE q31_t __SHSUB16(
829 r = ((r >> 1) - (s >> 1));
830 s = (((x >> 17) - (y >> 17)) << 16);
832 diff = (s & 0xFFFF0000) | (r & 0x0000FFFF);
840 static __INLINE q31_t __QASX(
858 static __INLINE q31_t __SHASX(
869 r = ((r >> 1) - (y >> 17));
870 s = (((x >> 17) + (s >> 1)) << 16);
872 sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
881 static __INLINE q31_t __QSAX(
899 static __INLINE q31_t __SHSAX(
910 r = ((r >> 1) + (y >> 17));
911 s = (((x >> 17) - (s >> 1)) << 16);
913 sum = (s & 0xFFFF0000) | (r & 0x0000FFFF);
921 static __INLINE q31_t __SMUSDX(
926 return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) -
927 ((q15_t) (x >> 16) * (q15_t) y)));
933 static __INLINE q31_t __SMUADX(
938 return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) +
939 ((q15_t) (x >> 16) * (q15_t) y)));
945 static __INLINE q31_t __QADD(
955 static __INLINE q31_t __QSUB(
965 static __INLINE q31_t __SMLAD(
971 return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) +
972 ((q15_t) x * (q15_t) y));
978 static __INLINE q31_t __SMLADX(
984 return (sum + ((q15_t) (x >> 16) * (q15_t) (y)) +
985 ((q15_t) x * (q15_t) (y >> 16)));
991 static __INLINE q31_t __SMLSDX(
997 return (sum - ((q15_t) (x >> 16) * (q15_t) (y)) +
998 ((q15_t) x * (q15_t) (y >> 16)));
1004 static __INLINE q63_t __SMLALD(
1010 return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) +
1011 ((q15_t) x * (q15_t) y));
1017 static __INLINE q63_t __SMLALDX(
1023 return (sum + ((q15_t) (x >> 16) * (q15_t) y)) +
1024 ((
q15_t) x * (q15_t) (y >> 16));
1030 static __INLINE q31_t __SMUAD(
1035 return (((x >> 16) * (y >> 16)) +
1036 (((x << 16) >> 16) * ((y << 16) >> 16)));
1042 static __INLINE q31_t __SMUSD(
1047 return (-((x >> 16) * (y >> 16)) +
1048 (((x << 16) >> 16) * ((y << 16) >> 16)));
1055 static __INLINE q31_t __SXTB16(
1059 return ((((x << 24) >> 24) & 0x0000FFFF) |
1060 (((x << 8) >> 8) & 0xFFFF0000));
1120 uint32_t blockSize);
1137 uint32_t blockSize);
1152 uint32_t blockSize);
1166 uint32_t blockSize);
1184 uint32_t blockSize);
1198 uint32_t blockSize);
1212 uint32_t blockSize);
1228 uint32_t blockSize);
1242 uint32_t blockSize);
1256 float32_t * pCoeffs,
1258 uint32_t blockSize);
1313 uint32_t blockSize);
1346 uint32_t blockSize);
1362 uint32_t blockSize);
1377 uint32_t blockSize);
1409 uint32_t blockSize);
1423 float32_t * pCoeffs,
1424 float32_t * pState);
1817 #ifdef ARM_MATH_CM0_FAMILY 1868 int32_t resetStateFlag);
1887 int32_t resetStateFlag);
1907 int32_t resetStateFlag);
1987 uint32_t blockSize);
2002 uint32_t blockSize);
2017 uint32_t blockSize);
2032 uint32_t blockSize);
2059 uint8_t bitReverseFlag);
2088 uint8_t bitReverseFlag);
2115 uint8_t bitReverseFlag);
2147 uint8_t bitReverseFlag);
2170 uint8_t bitReverseFlag);
2198 uint8_t bitReverseFlag);
2221 uint8_t bitReverseFlag);
2239 uint8_t bitReverseFlag);
2257 uint8_t bitReverseFlag);
2276 uint32_t fftLenReal,
2278 uint32_t bitReverseFlag);
2302 uint32_t fftLenReal,
2304 uint32_t bitReverseFlag);
2330 uint32_t fftLenReal,
2332 uint32_t bitReverseFlag);
2356 float32_t * p, float32_t * pOut,
2391 float32_t normalize);
2404 float32_t * pInlineBuffer);
2451 q31_t * pInlineBuffer);
2498 q15_t * pInlineBuffer);
2513 uint32_t blockSize);
2528 uint32_t blockSize);
2543 uint32_t blockSize);
2558 uint32_t blockSize);
2573 uint32_t blockSize);
2588 uint32_t blockSize);
2603 uint32_t blockSize);
2618 uint32_t blockSize);
2633 uint32_t blockSize);
2650 uint32_t blockSize);
2667 uint32_t blockSize);
2684 uint32_t blockSize);
2697 uint32_t blockSize);
2710 uint32_t blockSize);
2723 uint32_t blockSize);
2736 uint32_t blockSize);
2751 float32_t * result);
2811 uint32_t blockSize);
2826 uint32_t blockSize);
2841 uint32_t blockSize);
2856 uint32_t blockSize);
2871 uint32_t blockSize);
2886 uint32_t blockSize);
2901 uint32_t blockSize);
2914 uint32_t blockSize);
2927 uint32_t blockSize);
2940 uint32_t blockSize);
2953 uint32_t blockSize);
2964 uint32_t blockSize);
2976 uint32_t blockSize);
2988 uint32_t blockSize);
3000 uint32_t blockSize);
3011 uint32_t blockSize);
3023 uint32_t blockSize);
3035 uint32_t blockSize);
3047 uint32_t blockSize);
3241 uint32_t firstIndex,
3242 uint32_t numPoints);
3264 uint32_t firstIndex,
3288 uint32_t firstIndex,
3289 uint32_t numPoints);
3309 uint32_t firstIndex,
3310 uint32_t numPoints);
3333 uint32_t firstIndex,
3357 uint32_t firstIndex,
3358 uint32_t numPoints);
3379 uint32_t firstIndex,
3380 uint32_t numPoints);
3403 uint32_t firstIndex,
3427 uint32_t firstIndex,
3428 uint32_t numPoints);
3485 uint32_t blockSize);
3504 float32_t * pCoeffs,
3506 uint32_t blockSize);
3521 uint32_t blockSize);
3536 uint32_t blockSize);
3558 uint32_t blockSize);
3573 uint32_t blockSize);
3588 uint32_t blockSize);
3609 uint32_t blockSize);
3663 uint32_t blockSize);
3684 uint32_t blockSize);
3699 uint32_t blockSize);
3719 uint32_t blockSize);
3735 uint32_t blockSize);
3753 float32_t * pCoeffs,
3755 uint32_t blockSize);
3783 uint32_t blockSize);
3855 uint32_t blockSize);
3871 uint32_t blockSize);
3886 uint32_t blockSize);
3901 float32_t * pCoeffs,
3902 float32_t * pState);
3917 float32_t * pCoeffs,
3918 float32_t * pState);
3933 float64_t * pCoeffs,
3934 float64_t * pState);
3999 uint32_t blockSize);
4030 uint32_t blockSize);
4044 float32_t * pCoeffs,
4045 float32_t * pState);
4060 uint32_t blockSize);
4108 uint32_t blockSize);
4124 float32_t * pkCoeffs,
4125 float32_t * pvCoeffs,
4127 uint32_t blockSize);
4143 uint32_t blockSize);
4163 uint32_t blockSize);
4179 uint32_t blockSize);
4199 uint32_t blockSize);
4230 uint32_t blockSize);
4246 float32_t * pCoeffs,
4249 uint32_t blockSize);
4284 uint32_t postShift);
4303 uint32_t blockSize);
4337 uint32_t blockSize);
4358 uint32_t postShift);
4391 uint32_t blockSize);
4407 float32_t * pCoeffs,
4410 uint32_t blockSize);
4445 uint32_t blockSize);
4501 uint32_t blockSize);
4762 float32_t * pScratchIn,
4763 uint32_t blockSize);
4780 float32_t * pCoeffs,
4782 int32_t * pTapDelay,
4784 uint32_t blockSize);
4801 uint32_t blockSize);
4820 int32_t * pTapDelay,
4822 uint32_t blockSize);
4840 q31_t * pScratchOut,
4841 uint32_t blockSize);
4861 int32_t * pTapDelay,
4863 uint32_t blockSize);
4881 q31_t * pScratchOut,
4882 uint32_t blockSize);
4901 int32_t * pTapDelay,
4903 uint32_t blockSize);
4916 float32_t * pSinVal,
4917 float32_t * pCcosVal);
4944 uint32_t numSamples);
4957 uint32_t numSamples);
4970 uint32_t numSamples);
4985 uint32_t numSamples);
4998 uint32_t numSamples);
5011 uint32_t numSamples);
5095 out = (S->
A0 * in) +
5134 acc += (q63_t) S->
A1 * S->
state[0];
5140 out = (q31_t) (acc >> 31u);
5178 #ifndef ARM_MATH_CM0_FAMILY 5179 __SIMD32_TYPE *vstate;
5184 acc = (
q31_t) __SMUAD(S->
A0, in);
5188 acc = __SMLALD(S->
A1, (q31_t) *vstate, acc);
5196 acc += (q31_t) S->A2 * S->
state[1];
5204 out = (q15_t) (__SSAT((acc >> 15), 16));
5293 float32_t * pIalpha,
5301 ((
float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);
5326 q31_t product1, product2;
5332 product1 = (
q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);
5335 product2 = (
q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);
5338 *pIbeta = __QADD(product1, product2);
5355 uint32_t blockSize);
5405 *pIb = -0.5 * Ialpha + (
float32_t) 0.8660254039 *Ibeta;
5430 q31_t product1, product2;
5436 product1 = (
q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);
5439 product2 = (
q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
5442 *pIb = __QSUB(product2, product1);
5460 uint32_t blockSize);
5520 *pId = Ialpha * cosVal + Ibeta * sinVal;
5523 *pIq = -Ialpha * sinVal + Ibeta * cosVal;
5553 q31_t product1, product2;
5554 q31_t product3, product4;
5557 product1 = (
q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);
5560 product2 = (
q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);
5564 product3 = (
q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);
5567 product4 = (
q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);
5570 *pId = __QADD(product1, product2);
5573 *pIq = __QSUB(product4, product3);
5590 uint32_t blockSize);
5633 float32_t * pIalpha,
5639 *pIalpha = Id * cosVal - Iq * sinVal;
5642 *pIbeta = Id * sinVal + Iq * cosVal;
5673 q31_t product1, product2;
5674 q31_t product3, product4;
5677 product1 = (
q31_t) (((q63_t) (Id) * (cosVal)) >> 31);
5680 product2 = (
q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);
5684 product3 = (
q31_t) (((q63_t) (Id) * (sinVal)) >> 31);
5687 product4 = (
q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);
5690 *pIalpha = __QSUB(product1, product2);
5693 *pIbeta = __QADD(product4, product3);
5712 uint32_t blockSize);
5773 float32_t *pYData = S->
pYData;
5776 i = (int32_t) ((x - S->
x1) / xSpacing);
5783 else if((uint32_t)i >= S->
nValues)
5791 x0 = S->
x1 + i * xSpacing;
5792 x1 = S->
x1 + (i + 1) * xSpacing;
5799 y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
5835 index = ((x & 0xFFF00000) >> 20);
5837 if(index >= (int32_t)(nValues - 1))
5839 return (pYData[nValues - 1]);
5850 fract = (x & 0x000FFFFF) << 11;
5854 y1 = pYData[index + 1u];
5857 y = ((
q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
5860 y += ((
q31_t) (((q63_t) y1 * fract) >> 32));
5897 index = ((x & 0xFFF00000) >> 20u);
5899 if(index >= (int32_t)(nValues - 1))
5901 return (pYData[nValues - 1]);
5911 fract = (x & 0x000FFFFF);
5915 y1 = pYData[index + 1u];
5918 y = ((
q63_t) y0 * (0xFFFFF - fract));
5921 y += ((
q63_t) y1 * (fract));
5961 index = (x >> 20) & 0xfff;
5964 if(index >= (nValues - 1))
5966 return (pYData[nValues - 1]);
5973 fract = (x & 0x000FFFFF);
5977 y1 = pYData[index + 1u];
5980 y = ((y0 * (0xFFFFF - fract)));
6097 #if (__FPU_USED == 1) && defined ( __CC_ARM ) 6098 *pOut = __sqrtf(in);
6150 int32_t * circBuffer,
6152 uint16_t * writeOffset,
6154 const int32_t * src,
6163 wOffset = *writeOffset;
6171 circBuffer[wOffset] = *src;
6177 wOffset += bufferInc;
6186 *writeOffset = wOffset;
6195 int32_t * circBuffer,
6197 int32_t * readOffset,
6206 int32_t rOffset, dst_end;
6210 rOffset = *readOffset;
6211 dst_end = (int32_t) (dst_base + dst_length);
6219 *dst = circBuffer[rOffset];
6224 if(dst == (int32_t *) dst_end)
6230 rOffset += bufferInc;
6242 *readOffset = rOffset;
6252 uint16_t * writeOffset,
6263 wOffset = *writeOffset;
6271 circBuffer[wOffset] = *src;
6277 wOffset += bufferInc;
6286 *writeOffset = wOffset;
6297 int32_t * readOffset,
6306 int32_t rOffset, dst_end;
6310 rOffset = *readOffset;
6312 dst_end = (int32_t) (dst_base + dst_length);
6320 *dst = circBuffer[rOffset];
6325 if(dst == (q15_t *) dst_end)
6331 rOffset += bufferInc;
6343 *readOffset = rOffset;
6354 uint16_t * writeOffset,
6365 wOffset = *writeOffset;
6373 circBuffer[wOffset] = *src;
6379 wOffset += bufferInc;
6388 *writeOffset = wOffset;
6399 int32_t * readOffset,
6408 int32_t rOffset, dst_end;
6412 rOffset = *readOffset;
6414 dst_end = (int32_t) (dst_base + dst_length);
6422 *dst = circBuffer[rOffset];
6427 if(dst == (q7_t *) dst_end)
6433 rOffset += bufferInc;
6445 *readOffset = rOffset;
6473 float32_t * pResult);
6548 float32_t * pResult);
6561 float32_t * pResult);
6600 float32_t * pResult);
6639 float32_t * pResult);
6678 uint32_t numSamples);
6691 uint32_t numSamples);
6704 uint32_t numSamples);
6719 uint32_t numSamples,
6721 q31_t * imagResult);
6736 uint32_t numSamples,
6738 q63_t * imagResult);
6753 uint32_t numSamples,
6754 float32_t * realResult,
6755 float32_t * imagResult);
6770 uint32_t numSamples);
6785 uint32_t numSamples);
6797 float32_t * pSrcCmplx,
6798 float32_t * pSrcReal,
6799 float32_t * pCmplxDst,
6800 uint32_t numSamples);
6858 float32_t * pResult,
6918 float32_t * pResult,
6934 uint32_t numSamples);
6949 uint32_t numSamples);
6964 uint32_t numSamples);
6976 uint32_t blockSize);
6988 uint32_t blockSize);
7000 uint32_t blockSize);
7013 uint32_t blockSize);
7025 uint32_t blockSize);
7037 uint32_t blockSize);
7050 uint32_t blockSize);
7063 uint32_t blockSize);
7143 float32_t f00, f01, f10, f11;
7144 float32_t *pData = S->
pData;
7145 int32_t xIndex, yIndex, index;
7146 float32_t xdiff, ydiff;
7147 float32_t b1, b2, b3, b4;
7149 xIndex = (int32_t) X;
7150 yIndex = (int32_t) Y;
7154 if(xIndex < 0 || xIndex > (S->
numRows - 1) || yIndex < 0
7161 index = (xIndex - 1) + (yIndex - 1) * S->
numCols;
7166 f01 = pData[index + 1];
7169 index = (xIndex - 1) + (yIndex) * S->
numCols;
7174 f11 = pData[index + 1];
7180 b4 = f00 - f01 - f10 + f11;
7189 out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
7212 q31_t xfract, yfract;
7213 q31_t x1, x2, y1, y2;
7215 q31_t *pYData = S->
pData;
7222 rI = ((X & 0xFFF00000) >> 20u);
7227 cI = ((Y & 0xFFF00000) >> 20u);
7231 if(rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7238 xfract = (X & 0x000FFFFF) << 11u;
7241 x1 = pYData[(rI) + nCols * (cI)];
7242 x2 = pYData[(rI) + nCols * (cI) + 1u];
7246 yfract = (Y & 0x000FFFFF) << 11u;
7249 y1 = pYData[(rI) + nCols * (cI + 1)];
7250 y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
7253 out = ((
q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));
7254 acc = ((
q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
7257 out = ((
q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
7258 acc += ((
q31_t) ((q63_t) out * (xfract) >> 32));
7261 out = ((
q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
7262 acc += ((
q31_t) ((q63_t) out * (yfract) >> 32));
7265 out = ((
q31_t) ((q63_t) y2 * (xfract) >> 32));
7266 acc += ((
q31_t) ((q63_t) out * (yfract) >> 32));
7288 q15_t x1, x2, y1, y2;
7289 q31_t xfract, yfract;
7291 q15_t *pYData = S->
pData;
7297 rI = ((X & 0xFFF00000) >> 20);
7302 cI = ((Y & 0xFFF00000) >> 20);
7306 if(rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7313 xfract = (X & 0x000FFFFF);
7316 x1 = pYData[(rI) + nCols * (cI)];
7317 x2 = pYData[(rI) + nCols * (cI) + 1u];
7322 yfract = (Y & 0x000FFFFF);
7325 y1 = pYData[(rI) + nCols * (cI + 1)];
7326 y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
7332 out = (
q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u);
7333 acc = ((
q63_t) out * (0xFFFFF - yfract));
7336 out = (
q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u);
7337 acc += ((
q63_t) out * (xfract));
7340 out = (
q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u);
7341 acc += ((
q63_t) out * (yfract));
7344 out = (
q31_t) (((q63_t) y2 * (xfract)) >> 4u);
7345 acc += ((
q63_t) out * (yfract));
7368 q31_t xfract, yfract;
7369 q7_t x1, x2, y1, y2;
7371 q7_t *pYData = S->
pData;
7377 rI = ((X & 0xFFF00000) >> 20);
7382 cI = ((Y & 0xFFF00000) >> 20);
7386 if(rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7393 xfract = (X & 0x000FFFFF);
7396 x1 = pYData[(rI) + nCols * (cI)];
7397 x2 = pYData[(rI) + nCols * (cI) + 1u];
7402 yfract = (Y & 0x000FFFFF);
7405 y1 = pYData[(rI) + nCols * (cI + 1)];
7406 y2 = pYData[(rI) + nCols * (cI + 1) + 1u];
7409 out = ((x1 * (0xFFFFF - xfract)));
7410 acc = (((
q63_t) out * (0xFFFFF - yfract)));
7413 out = ((x2 * (0xFFFFF - yfract)));
7414 acc += (((
q63_t) out * (xfract)));
7417 out = ((y1 * (0xFFFFF - xfract)));
7418 acc += (((
q63_t) out * (yfract)));
7421 out = ((y2 * (yfract)));
7422 acc += (((
q63_t) out * (xfract)));
7435 #define multAcc_32x32_keep32_R(a, x, y) \ 7436 a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) 7439 #define multSub_32x32_keep32_R(a, x, y) \ 7440 a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) 7443 #define mult_32x32_keep32_R(a, x, y) \ 7444 a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) 7447 #define multAcc_32x32_keep32(a, x, y) \ 7448 a += (q31_t) (((q63_t) x * y) >> 32) 7451 #define multSub_32x32_keep32(a, x, y) \ 7452 a -= (q31_t) (((q63_t) x * y) >> 32) 7455 #define mult_32x32_keep32(a, x, y) \ 7456 a = (q31_t) (((q63_t) x * y ) >> 32) 7459 #if defined ( __CC_ARM ) //Keil 7463 #define LOW_OPTIMIZATION_ENTER \ 7467 #define LOW_OPTIMIZATION_ENTER 7472 #define LOW_OPTIMIZATION_EXIT \ 7475 #define LOW_OPTIMIZATION_EXIT 7479 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7482 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7484 #elif defined(__ICCARM__) //IAR 7488 #define LOW_OPTIMIZATION_ENTER \ 7489 _Pragma ("optimize=low") 7491 #define LOW_OPTIMIZATION_ENTER 7495 #define LOW_OPTIMIZATION_EXIT 7499 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ 7500 _Pragma ("optimize=low") 7502 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7506 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7508 #elif defined(__GNUC__) 7510 #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") )) 7512 #define LOW_OPTIMIZATION_EXIT 7514 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7516 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7518 #elif defined(__CSMC__) // Cosmic 7520 #define LOW_OPTIMIZATION_ENTER 7521 #define LOW_OPTIMIZATION_EXIT 7522 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7523 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
void arm_rms_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Root Mean Square of the elements of a Q31 vector.
arm_status arm_mat_mult_fast_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4.
void arm_sub_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector subtraction.
void arm_offset_q15(q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q15 vector.
void arm_std_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Standard deviation of the elements of a floating-point vector.
Instance structure for the floating-point FIR interpolator.
void arm_pid_reset_q15(arm_pid_instance_q15 *S)
Reset function for the Q15 PID Control.
arm_status arm_dct4_init_q15(arm_dct4_instance_q15 *S, arm_rfft_instance_q15 *S_RFFT, arm_cfft_radix4_instance_q15 *S_CFFT, uint16_t N, uint16_t Nby2, q15_t normalize)
Initialization function for the Q15 DCT4/IDCT4.
void arm_iir_lattice_f32(const arm_iir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point IIR lattice filter.
void arm_mat_init_f32(arm_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, float32_t *pData)
Floating-point matrix initialization.
void arm_power_q7(q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
Sum of the squares of the elements of a Q7 vector.
static __INLINE void arm_circularRead_q15(q15_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, q15_t *dst, q15_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
Q15 Circular Read function.
arm_status arm_rfft_fast_init_f32(arm_rfft_fast_instance_f32 *S, uint16_t fftLen)
void arm_scale_q7(q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
Multiplies a Q7 vector by a scalar.
static __INLINE void arm_circularRead_q7(q7_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, q7_t *dst, q7_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
Q7 Circular Read function.
int8_t q7_t
8-bit fractional data type in 1.7 format.
arm_status arm_mat_mult_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31 matrix multiplication.
void arm_cmplx_conj_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex conjugate.
Instance structure for the Q15 FIR filter.
static __INLINE q31_t arm_pid_q31(arm_pid_instance_q31 *S, q31_t in)
Process function for the Q31 PID Control.
void arm_pid_init_q15(arm_pid_instance_q15 *S, int32_t resetStateFlag)
Initialization function for the Q15 PID Control.
void arm_abs_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Q15 vector absolute value.
Instance structure for the floating-point transposed direct form II Biquad cascade filter...
void arm_q31_to_float(q31_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to floating-point vector.
void arm_dct4_f32(const arm_dct4_instance_f32 *S, float32_t *pState, float32_t *pInlineBuffer)
Processing function for the floating-point DCT4/IDCT4.
void arm_cfft_q15(const arm_cfft_instance_q15 *S, q15_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
arm_status arm_mat_add_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
Q15 matrix addition.
void arm_mean_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Mean value of a Q31 vector.
void arm_copy_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Copies the elements of a Q7 vector.
void arm_correlate_fast_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch)
Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
void arm_biquad_cascade_stereo_df2T_f32(const arm_biquad_cascade_stereo_df2T_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point transposed direct form II Biquad cascade filter...
Instance structure for the Q31 FIR lattice filter.
arm_status arm_mat_mult_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pState)
Q15 matrix multiplication.
void arm_cfft_f32(const arm_cfft_instance_f32 *S, float32_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
static __INLINE q15_t clip_q31_to_q15(q31_t x)
Clips Q31 to Q15 values.
void arm_biquad_cascade_df1_fast_q15(const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-...
void arm_add_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector addition.
Instance structure for the Q31 IIR lattice filter.
static __INLINE arm_status arm_sqrt_f32(float32_t in, float32_t *pOut)
Floating-point square root function.
arm_status arm_fir_init_q15(arm_fir_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR filter.
arm_cfft_radix4_instance_f32 * pCfft
void arm_scale_f32(float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
Multiplies a floating-point vector by a scalar.
arm_cfft_radix4_instance_q31 * pCfft
float32_t * pTwiddleBReal
void arm_biquad_cascade_df1_q15(const arm_biquad_casd_df1_inst_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 Biquad cascade filter.
static __INLINE q7_t arm_bilinear_interp_q7(arm_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)
Q7 bilinear interpolation.
void arm_fill_q31(q31_t value, q31_t *pDst, uint32_t blockSize)
Fills a constant value into a Q31 vector.
void arm_cmplx_mag_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude.
static __INLINE void arm_circularWrite_q15(q15_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const q15_t *src, int32_t srcInc, uint32_t blockSize)
Q15 Circular write function.
void arm_fir_sparse_q31(arm_fir_sparse_instance_q31 *S, q31_t *pSrc, q31_t *pDst, q31_t *pScratchIn, uint32_t blockSize)
Processing function for the Q31 sparse FIR filter.
float float32_t
32-bit floating-point type definition.
void arm_fir_init_q7(arm_fir_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, uint32_t blockSize)
Initialization function for the Q7 FIR filter.
void arm_fir_decimate_fast_q15(const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
void arm_sub_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector subtraction.
void arm_conv_fast_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
arm_status arm_fir_decimate_init_q31(arm_fir_decimate_instance_q31 *S, uint16_t numTaps, uint8_t M, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR decimator.
void arm_scale_q31(q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
Multiplies a Q31 vector by a scalar.
void arm_pid_init_q31(arm_pid_instance_q31 *S, int32_t resetStateFlag)
Initialization function for the Q31 PID Control.
void arm_fill_q7(q7_t value, q7_t *pDst, uint32_t blockSize)
Fills a constant value into a Q7 vector.
void arm_lms_q31(const arm_lms_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
Processing function for Q31 LMS filter.
CMSIS Cortex-M0 Core Peripheral Access Layer Header File.
void arm_q15_to_float(q15_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to floating-point vector.
void arm_copy_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Copies the elements of a Q15 vector.
const arm_cfft_instance_q15 * pCfft
void arm_q31_to_q7(q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q7 vector.
static __INLINE void arm_inv_clarke_f32(float32_t Ialpha, float32_t Ibeta, float32_t *pIa, float32_t *pIb)
Floating-point Inverse Clarke transform.
void arm_cmplx_mult_real_f32(float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
Instance structure for the Q31 bilinear interpolation function.
void arm_cmplx_mag_squared_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude squared.
arm_status arm_fir_interpolate_init_q31(arm_fir_interpolate_instance_q31 *S, uint8_t L, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR interpolator.
void arm_cfft_radix4_q15(const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)
void arm_power_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Sum of the squares of the elements of a floating-point vector.
void arm_rfft_q31(const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
void arm_max_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Maximum value of a floating-point vector.
arm_status arm_conv_partial_f32(float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of floating-point sequences.
Instance structure for the floating-point IIR lattice filter.
void arm_q15_to_q7(q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to Q7 vector.
void arm_abs_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Q7 vector absolute value.
void arm_cfft_radix4_f32(const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
void arm_conv_opt_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Convolution of Q7 sequences.
Instance structure for the Q7 FIR filter.
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_lms_norm_init_f32(arm_lms_norm_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
Initialization function for floating-point normalized LMS filter.
void arm_var_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Variance of the elements of a floating-point vector.
uint16_t twidCoefModifier
Instance structure for the Q15 bilinear interpolation function.
Instance structure for the floating-point FIR lattice filter.
void arm_fir_f32(const arm_fir_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR filter.
void arm_cmplx_mult_cmplx_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
Floating-point complex-by-complex multiplication.
static __INLINE void arm_circularWrite_f32(int32_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const int32_t *src, int32_t srcInc, uint32_t blockSize)
floating-point Circular write function.
arm_status arm_dct4_init_q31(arm_dct4_instance_q31 *S, arm_rfft_instance_q31 *S_RFFT, arm_cfft_radix4_instance_q31 *S_CFFT, uint16_t N, uint16_t Nby2, q31_t normalize)
Initialization function for the Q31 DCT4/IDCT4.
Instance structure for the floating-point DCT4/IDCT4 function.
void arm_iir_lattice_init_f32(arm_iir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pkCoeffs, float32_t *pvCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point IIR lattice filter.
arm_status arm_mat_scale_q15(const arm_matrix_instance_q15 *pSrc, q15_t scaleFract, int32_t shift, arm_matrix_instance_q15 *pDst)
Q15 matrix scaling.
void arm_var_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Variance of the elements of a Q31 vector.
void arm_fir_sparse_f32(arm_fir_sparse_instance_f32 *S, float32_t *pSrc, float32_t *pDst, float32_t *pScratchIn, uint32_t blockSize)
Processing function for the floating-point sparse FIR filter.
void arm_abs_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Floating-point vector absolute value.
arm_status arm_mat_trans_f32(const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
Floating-point matrix transpose.
void arm_scale_q15(q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
Multiplies a Q15 vector by a scalar.
void arm_q31_to_q15(q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q15 vector.
void arm_lms_q15(const arm_lms_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 LMS filter.
void arm_biquad_cascade_df2T_init_f64(arm_biquad_cascade_df2T_instance_f64 *S, uint8_t numStages, float64_t *pCoeffs, float64_t *pState)
Initialization function for the floating-point transposed direct form II Biquad cascade filter...
void arm_cmplx_mag_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude.
Instance structure for the Q15 sparse FIR filter.
uint16_t twidCoefModifier
CMSIS Cortex-M4 Core Peripheral Access Layer Header File.
const float32_t * pTwiddle
arm_status arm_cfft_radix2_init_q15(arm_cfft_radix2_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
arm_status arm_cfft_radix4_init_q15(arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Instance structure for the floating-point PID Control.
arm_status arm_sqrt_q31(q31_t in, q31_t *pOut)
Q31 square root function.
void arm_cmplx_mag_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude.
void arm_lms_norm_init_q31(arm_lms_norm_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint8_t postShift)
Initialization function for Q31 normalized LMS filter.
arm_status arm_mat_cmplx_mult_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst, q15_t *pScratch)
Q15, complex, matrix multiplication.
void arm_rms_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Root Mean Square of the elements of a Q15 vector.
void arm_max_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
Maximum value of a Q31 vector.
const arm_cfft_instance_q31 * pCfft
arm_status arm_mat_sub_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31 matrix subtraction.
void arm_sin_cos_q31(q31_t theta, q31_t *pSinVal, q31_t *pCosVal)
float32_t arm_sin_f32(float32_t x)
Fast approximation to the trigonometric sine function for floating-point data.
Instance structure for the floating-point FIR filter.
uint16_t twidCoefModifier
void arm_min_q7(q7_t *pSrc, uint32_t blockSize, q7_t *result, uint32_t *index)
Minimum value of a Q7 vector.
arm_status arm_dct4_init_f32(arm_dct4_instance_f32 *S, arm_rfft_instance_f32 *S_RFFT, arm_cfft_radix4_instance_f32 *S_CFFT, uint16_t N, uint16_t Nby2, float32_t normalize)
Initialization function for the floating-point DCT4/IDCT4.
arm_status arm_mat_inverse_f32(const arm_matrix_instance_f32 *src, arm_matrix_instance_f32 *dst)
Floating-point matrix inverse.
void arm_negate_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Negates the elements of a Q7 vector.
static __INLINE q7_t clip_q31_to_q7(q31_t x)
Clips Q31 to Q7 values.
Instance structure for the fixed-point CFFT/CIFFT function.
void arm_add_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector addition.
const uint16_t * pBitRevTable
void arm_cfft_radix2_f32(const arm_cfft_radix2_instance_f32 *S, float32_t *pSrc)
uint16_t twidCoefModifier
static __INLINE void arm_circularRead_f32(int32_t *circBuffer, int32_t L, int32_t *readOffset, int32_t bufferInc, int32_t *dst, int32_t *dst_base, int32_t dst_length, int32_t dstInc, uint32_t blockSize)
floating-point Circular Read function.
void arm_fir_init_f32(arm_fir_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR filter.
void arm_pid_reset_q31(arm_pid_instance_q31 *S)
Reset function for the Q31 PID Control.
void arm_dot_prod_f32(float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
Dot product of floating-point vectors.
void arm_lms_init_f32(arm_lms_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, float32_t mu, uint32_t blockSize)
Initialization function for floating-point LMS filter.
#define __SIMD32_CONST(addr)
Instance structure for the Q31 LMS filter.
Instance structure for the floating-point transposed direct form II Biquad cascade filter...
arm_status arm_mat_mult_fast_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4.
void arm_copy_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Copies the elements of a floating-point vector.
void arm_correlate_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Correlation of Q15 sequences.
arm_status arm_rfft_init_f32(arm_rfft_instance_f32 *S, arm_cfft_radix4_instance_f32 *S_CFFT, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
Instance structure for the floating-point RFFT/RIFFT function.
static __INLINE void arm_inv_clarke_q31(q31_t Ialpha, q31_t Ibeta, q31_t *pIa, q31_t *pIb)
Inverse Clarke transform for Q31 version.
arm_status arm_conv_partial_opt_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
Partial convolution of Q7 sequences.
void arm_cmplx_mult_real_q15(q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
Q15 complex-by-real multiplication.
void arm_add_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector addition.
void arm_fir_interpolate_q31(const arm_fir_interpolate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR interpolator.
void arm_lms_init_q15(arm_lms_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint32_t postShift)
Initialization function for the Q15 LMS filter.
void arm_cfft_q31(const arm_cfft_instance_q31 *S, q31_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
arm_status arm_conv_partial_fast_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.
static __INLINE void arm_inv_park_f32(float32_t Id, float32_t Iq, float32_t *pIalpha, float32_t *pIbeta, float32_t sinVal, float32_t cosVal)
Floating-point Inverse Park transform.
void arm_cfft_radix2_q31(const arm_cfft_radix2_instance_q31 *S, q31_t *pSrc)
void arm_cmplx_dot_prod_q15(q15_t *pSrcA, q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult)
Q15 complex dot product.
Instance structure for the Q15 bilinear interpolation function.
arm_status arm_mat_sub_f32(const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
Floating-point matrix subtraction.
Instance structure for the Q31 CFFT/CIFFT function.
void arm_fir_fast_q31(const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4.
void arm_mat_init_q31(arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
Q31 matrix initialization.
void arm_iir_lattice_init_q31(arm_iir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pkCoeffs, q31_t *pvCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 IIR lattice filter.
CMSIS Cortex-M7 Core Peripheral Access Layer Header File.
void arm_lms_f32(const arm_lms_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
Processing function for floating-point LMS filter.
static __INLINE uint32_t arm_recip_q15(q15_t in, q15_t *dst, q15_t *pRecipTable)
Function to Calculates 1/in (reciprocal) value of Q15 Data type.
q31_t arm_cos_q31(q31_t x)
Fast approximation to the trigonometric cosine function for Q31 data.
q15_t arm_sin_q15(q15_t x)
Fast approximation to the trigonometric sine function for Q15 data.
arm_status arm_mat_trans_q15(const arm_matrix_instance_q15 *pSrc, arm_matrix_instance_q15 *pDst)
Q15 matrix transpose.
Instance structure for the Q7 sparse FIR filter.
Instance structure for the floating-point transposed direct form II Biquad cascade filter...
arm_status arm_cfft_radix2_init_f32(arm_cfft_radix2_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_fir_q31(const arm_fir_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR filter.
void arm_q7_to_q15(q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to Q15 vector.
Instance structure for the floating-point RFFT/RIFFT function.
arm_status arm_mat_add_f32(const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
Floating-point matrix addition.
void arm_rfft_fast_f32(arm_rfft_fast_instance_f32 *S, float32_t *p, float32_t *pOut, uint8_t ifftFlag)
Instance structure for the floating-point CFFT/CIFFT function.
void arm_cmplx_dot_prod_q31(q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
Q31 complex dot product.
arm_status arm_rfft_init_q15(arm_rfft_instance_q15 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_fir_decimate_fast_q31(arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
void arm_shift_q7(q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
Shifts the elements of a Q7 vector a specified number of bits.
Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
static __INLINE void arm_inv_park_q31(q31_t Id, q31_t Iq, q31_t *pIalpha, q31_t *pIbeta, q31_t sinVal, q31_t cosVal)
Inverse Park transform for Q31 version.
void arm_negate_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Negates the elements of a Q31 vector.
Instance structure for the Q31 sparse FIR filter.
arm_status arm_mat_scale_q31(const arm_matrix_instance_q31 *pSrc, q31_t scaleFract, int32_t shift, arm_matrix_instance_q31 *pDst)
Q31 matrix scaling.
void arm_mean_q7(q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
Mean value of a Q7 vector.
static __INLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q15 Linear Interpolation Function.
arm_status arm_sqrt_q15(q15_t in, q15_t *pOut)
Q15 square root function.
void arm_conv_fast_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
void arm_fir_lattice_q31(const arm_fir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR lattice filter.
void arm_dot_prod_q15(q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q15 vectors.
void arm_fir_sparse_q15(arm_fir_sparse_instance_q15 *S, q15_t *pSrc, q15_t *pDst, q15_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
Processing function for the Q15 sparse FIR filter.
void arm_abs_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Q31 vector absolute value.
Instance structure for the floating-point LMS filter.
void arm_conv_fast_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.
void arm_mean_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Mean value of a floating-point vector.
void arm_cmplx_dot_prod_f32(float32_t *pSrcA, float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult)
Floating-point complex dot product.
Instance structure for the floating-point FIR decimator.
static __INLINE q31_t clip_q63_to_q31(q63_t x)
Clips Q63 to Q31 values.
double float64_t
64-bit floating-point type definition.
static __INLINE float32_t arm_bilinear_interp_f32(const arm_bilinear_interp_instance_f32 *S, float32_t X, float32_t Y)
Floating-point bilinear interpolation.
arm_status arm_mat_cmplx_mult_f32(const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
Floating-point, complex, matrix multiplication.
Instance structure for the Q31 DCT4/IDCT4 function.
void arm_cmplx_mult_cmplx_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
Q31 complex-by-complex multiplication.
void arm_conv_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Convolution of Q15 sequences.
void arm_correlate_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Correlation of Q31 sequences.
float32_t * pTwiddleAReal
void arm_biquad_cascade_df1_q31(const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 Biquad cascade filter.
CMSIS Cortex-M0+ Core Peripheral Access Layer Header File.
Instance structure for the Q31 FIR filter.
void arm_fir_sparse_init_q31(arm_fir_sparse_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
Initialization function for the Q31 sparse FIR filter.
void arm_negate_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Negates the elements of a floating-point vector.
void arm_copy_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Copies the elements of a Q31 vector.
arm_cfft_radix4_instance_q15 * pCfft
Instance structure for the Q15 FIR lattice filter.
int16_t q15_t
16-bit fractional data type in 1.15 format.
void arm_lms_init_q31(arm_lms_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, q31_t mu, uint32_t blockSize, uint32_t postShift)
Initialization function for Q31 LMS filter.
Instance structure for the floating-point CFFT/CIFFT function.
arm_status arm_conv_partial_fast_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
Instance structure for the Q15 IIR lattice filter.
void arm_std_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Standard deviation of the elements of a Q31 vector.
Instance structure for the Q31 normalized LMS filter.
void arm_negate_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Negates the elements of a Q15 vector.
void arm_fir_interpolate_q15(const arm_fir_interpolate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR interpolator.
Instance structure for the Q15 FIR decimator.
void arm_conv_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Convolution of Q31 sequences.
arm_status arm_mat_add_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31 matrix addition.
void arm_float_to_q31(float32_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q31 vector.
void arm_pid_init_f32(arm_pid_instance_f32 *S, int32_t resetStateFlag)
Initialization function for the floating-point PID Control.
q31_t arm_sin_q31(q31_t x)
Fast approximation to the trigonometric sine function for Q31 data.
void arm_biquad_cas_df1_32x64_q31(const arm_biquad_cas_df1_32x64_ins_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
void arm_pid_reset_f32(arm_pid_instance_f32 *S)
Reset function for the floating-point PID Control.
void arm_cmplx_mag_squared_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude squared.
arm_status arm_conv_partial_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q7 sequences.
void arm_fill_q15(q15_t value, q15_t *pDst, uint32_t blockSize)
Fills a constant value into a Q15 vector.
void arm_fir_lattice_init_q15(arm_fir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pCoeffs, q15_t *pState)
Initialization function for the Q15 FIR lattice filter.
static __INLINE q63_t mult32x64(q63_t x, q31_t y)
Multiplies 32 X 64 and returns 32 bit result in 2.30 format.
void arm_min_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
Minimum value of a Q15 vector.
arm_rfft_instance_f32 * pRfft
arm_status arm_conv_partial_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q15 sequences.
arm_status arm_fir_decimate_init_f32(arm_fir_decimate_instance_f32 *S, uint16_t numTaps, uint8_t M, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR decimator.
Instance structure for the Q15 normalized LMS filter.
void arm_dot_prod_q31(q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q31 vectors.
void arm_min_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
Minimum value of a Q31 vector.
void arm_fir_lattice_init_f32(arm_fir_lattice_instance_f32 *S, uint16_t numStages, float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point FIR lattice filter.
void arm_biquad_cascade_df2T_f64(const arm_biquad_cascade_df2T_instance_f64 *S, float64_t *pSrc, float64_t *pDst, uint32_t blockSize)
Processing function for the floating-point transposed direct form II Biquad cascade filter...
Instance structure for the Q15 matrix structure.
uint16_t twidCoefModifier
void arm_fir_q15(const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR filter.
arm_status arm_fir_interpolate_init_q15(arm_fir_interpolate_instance_q15 *S, uint8_t L, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR interpolator.
void arm_offset_q31(q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q31 vector.
Instance structure for the floating-point sparse FIR filter.
void arm_fir_decimate_f32(const arm_fir_decimate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR decimator.
Instance structure for the Q15 Biquad cascade filter.
arm_rfft_instance_q15 * pRfft
void arm_fir_lattice_init_q31(arm_fir_lattice_instance_q31 *S, uint16_t numStages, q31_t *pCoeffs, q31_t *pState)
Initialization function for the Q31 FIR lattice filter.
static __INLINE float32_t arm_linear_interp_f32(arm_linear_interp_instance_f32 *S, float32_t x)
Process function for the floating-point Linear Interpolation Function.
void arm_biquad_cascade_df1_f32(const arm_biquad_casd_df1_inst_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point Biquad cascade filter.
arm_cfft_radix4_instance_f32 * pCfft
void arm_mult_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector multiplication.
void arm_mat_init_q15(arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
Q15 matrix initialization.
void arm_fir_lattice_f32(const arm_fir_lattice_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR lattice filter.
void arm_std_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Standard deviation of the elements of a Q15 vector.
void arm_dot_prod_q7(q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize, q31_t *result)
Dot product of Q7 vectors.
void arm_fir_decimate_q31(const arm_fir_decimate_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR decimator.
void arm_offset_f32(float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
Adds a constant offset to a floating-point vector.
void arm_rfft_f32(const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
static __INLINE void arm_park_f32(float32_t Ialpha, float32_t Ibeta, float32_t *pId, float32_t *pIq, float32_t sinVal, float32_t cosVal)
Floating-point Park transform.
Instance structure for the Q15 LMS filter.
void arm_max_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
Maximum value of a Q15 vector.
Instance structure for the Q31 FIR interpolator.
uint16_t twidCoefModifier
void arm_var_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Variance of the elements of a Q15 vector.
void arm_biquad_cascade_df2T_f32(const arm_biquad_cascade_df2T_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point transposed direct form II Biquad cascade filter...
void arm_q7_to_q31(q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to Q31 vector.
Instance structure for the Q31 Biquad cascade filter.
void arm_shift_q31(q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
Shifts the elements of a Q31 vector a specified number of bits.
arm_status arm_cfft_radix2_init_q31(arm_cfft_radix2_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
arm_status arm_mat_cmplx_mult_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31, complex, matrix multiplication.
arm_status arm_rfft_init_q31(arm_rfft_instance_q31 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
void arm_biquad_cascade_stereo_df2T_init_f32(arm_biquad_cascade_stereo_df2T_instance_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point transposed direct form II Biquad cascade filter...
const uint16_t * pBitRevTable
static __INLINE void arm_park_q31(q31_t Ialpha, q31_t Ibeta, q31_t *pId, q31_t *pIq, q31_t sinVal, q31_t cosVal)
Park transform for Q31 version.
arm_status arm_fir_decimate_init_q15(arm_fir_decimate_instance_q15 *S, uint16_t numTaps, uint8_t M, q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR decimator.
arm_rfft_instance_q31 * pRfft
void arm_mult_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector multiplication.
Instance structure for the floating-point CFFT/CIFFT function.
void arm_rfft_q15(const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)
void arm_correlate_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch)
Correlation of Q15 sequences.
static __INLINE void arm_clarke_f32(float32_t Ia, float32_t Ib, float32_t *pIalpha, float32_t *pIbeta)
Floating-point Clarke transform.
void arm_fir_sparse_init_f32(arm_fir_sparse_instance_f32 *S, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
Initialization function for the floating-point sparse FIR filter.
Instance structure for the Q15 FIR interpolator.
void arm_lms_norm_q31(arm_lms_norm_instance_q31 *S, q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
Processing function for Q31 normalized LMS filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.
void arm_conv_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Convolution of Q15 sequences.
void arm_fir_lattice_q15(const arm_fir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR lattice filter.
Instance structure for the Q15 CFFT/CIFFT function.
Instance structure for the Q15 PID Control.
Instance structure for the Q15 DCT4/IDCT4 function.
Instance structure for the floating-point normalized LMS filter.
static __INLINE q31_t arm_bilinear_interp_q31(arm_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)
Q31 bilinear interpolation.
Instance structure for the Q31 RFFT/RIFFT function.
void arm_add_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector addition.
float32_t arm_cos_f32(float32_t x)
Fast approximation to the trigonometric cosine function for floating-point data.
static __INLINE void arm_circularWrite_q7(q7_t *circBuffer, int32_t L, uint16_t *writeOffset, int32_t bufferInc, const q7_t *src, int32_t srcInc, uint32_t blockSize)
Q7 Circular write function.
uint32_t twidCoefRModifier
void arm_rms_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Root Mean Square of the elements of a floating-point vector.
void arm_lms_norm_f32(arm_lms_norm_instance_f32 *S, float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
Processing function for floating-point normalized LMS filter.
void arm_cmplx_mag_squared_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude squared.
void arm_cmplx_mult_cmplx_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
Q15 complex-by-complex multiplication.
void arm_biquad_cascade_df1_init_q15(arm_biquad_casd_df1_inst_q15 *S, uint8_t numStages, q15_t *pCoeffs, q15_t *pState, int8_t postShift)
Initialization function for the Q15 Biquad cascade filter.
static __INLINE q15_t clip_q63_to_q15(q63_t x)
Clips Q63 to Q15 values.
arm_status arm_mat_inverse_f64(const arm_matrix_instance_f64 *src, arm_matrix_instance_f64 *dst)
Floating-point matrix inverse.
arm_status arm_mat_trans_q31(const arm_matrix_instance_q31 *pSrc, arm_matrix_instance_q31 *pDst)
Q31 matrix transpose.
void arm_fir_sparse_init_q7(arm_fir_sparse_instance_q7 *S, uint16_t numTaps, q7_t *pCoeffs, q7_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
Initialization function for the Q7 sparse FIR filter.
void arm_lms_norm_q15(arm_lms_norm_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 normalized LMS filter.
arm_status arm_cfft_radix4_init_f32(arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Instance structure for the high precision Q31 Biquad cascade filter.
void arm_biquad_cascade_df2T_init_f32(arm_biquad_cascade_df2T_instance_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point transposed direct form II Biquad cascade filter...
void arm_correlate_f32(float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
Correlation of floating-point sequences.
void arm_fir_sparse_init_q15(arm_fir_sparse_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, int32_t *pTapDelay, uint16_t maxDelay, uint32_t blockSize)
Initialization function for the Q15 sparse FIR filter.
Instance structure for the Q15 RFFT/RIFFT function.
static __INLINE q15_t arm_pid_q15(arm_pid_instance_q15 *S, q15_t in)
Process function for the Q15 PID Control.
Instance structure for the floating-point matrix structure.
arm_status arm_conv_partial_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q31 sequences.
Instance structure for the Q15 CFFT/CIFFT function.
Instance structure for the floating-point matrix structure.
void arm_float_to_q7(float32_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q7 vector.
void arm_q15_to_q31(q15_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to Q31 vector.
void arm_fir_fast_q15(const arm_fir_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4.
const uint16_t * pBitRevTable
static __INLINE void arm_clarke_q31(q31_t Ia, q31_t Ib, q31_t *pIalpha, q31_t *pIbeta)
Clarke transform for Q31 version.
arm_status arm_mat_mult_f32(const arm_matrix_instance_f32 *pSrcA, const arm_matrix_instance_f32 *pSrcB, arm_matrix_instance_f32 *pDst)
Floating-point matrix multiplication.
void arm_biquad_cas_df1_32x64_init_q31(arm_biquad_cas_df1_32x64_ins_q31 *S, uint8_t numStages, q31_t *pCoeffs, q63_t *pState, uint8_t postShift)
Instance structure for the Q31 FIR decimator.
void arm_cfft_radix4_q31(const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
uint32_t twidCoefRModifier
void arm_correlate_opt_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Correlation of Q7 sequences.
void arm_float_to_q15(float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q15 vector.
Instance structure for the fixed-point CFFT/CIFFT function.
void arm_max_q7(q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
Maximum value of a Q7 vector.
void arm_conv_f32(float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
Convolution of floating-point sequences.
static __INLINE uint32_t arm_recip_q31(q31_t in, q31_t *dst, q31_t *pRecipTable)
Function to Calculates 1/in (reciprocal) value of Q31 Data type.
void arm_biquad_cascade_df1_init_f32(arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point Biquad cascade filter.
static __INLINE float32_t arm_pid_f32(arm_pid_instance_f32 *S, float32_t in)
Process function for the floating-point PID Control.
void arm_q7_to_float(q7_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to floating-point vector.
arm_status arm_conv_partial_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
Partial convolution of Q15 sequences.
arm_status arm_mat_scale_f32(const arm_matrix_instance_f32 *pSrc, float32_t scale, arm_matrix_instance_f32 *pDst)
Floating-point matrix scaling.
void arm_cmplx_conj_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex conjugate.
void arm_correlate_fast_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
static __INLINE q15_t arm_bilinear_interp_q15(arm_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)
Q15 bilinear interpolation.
void arm_lms_norm_init_q15(arm_lms_norm_instance_q15 *S, uint16_t numTaps, q15_t *pCoeffs, q15_t *pState, q15_t mu, uint32_t blockSize, uint8_t postShift)
Initialization function for Q15 normalized LMS filter.
void arm_fir_sparse_q7(arm_fir_sparse_instance_q7 *S, q7_t *pSrc, q7_t *pDst, q7_t *pScratchIn, q31_t *pScratchOut, uint32_t blockSize)
Processing function for the Q7 sparse FIR filter.
void arm_correlate_fast_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.
void arm_offset_q7(q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q7 vector.
uint32_t twidCoefRModifier
arm_status arm_mat_sub_q15(const arm_matrix_instance_q15 *pSrcA, const arm_matrix_instance_q15 *pSrcB, arm_matrix_instance_q15 *pDst)
Q15 matrix subtraction.
void arm_dct4_q31(const arm_dct4_instance_q31 *S, q31_t *pState, q31_t *pInlineBuffer)
Processing function for the Q31 DCT4/IDCT4.
void arm_dct4_q15(const arm_dct4_instance_q15 *S, q15_t *pState, q15_t *pInlineBuffer)
Processing function for the Q15 DCT4/IDCT4.
void arm_cfft_radix2_q15(const arm_cfft_radix2_instance_q15 *S, q15_t *pSrc)
static __INLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q7 Linear Interpolation Function.
static __INLINE q31_t arm_linear_interp_q31(q31_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q31 Linear Interpolation Function.
void arm_correlate_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
Correlation of Q7 sequences.
void arm_sub_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector subtraction.
void arm_fill_f32(float32_t value, float32_t *pDst, uint32_t blockSize)
Fills a constant value into a floating-point vector.
void arm_mult_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector multiplication.
void arm_power_q15(q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q15 vector.
void arm_biquad_cascade_df1_fast_q31(const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-...
Instance structure for the floating-point Linear Interpolate function.
void arm_iir_lattice_q31(const arm_iir_lattice_instance_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 IIR lattice filter.
void arm_fir_q7(const arm_fir_instance_q7 *S, q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Processing function for the Q7 FIR filter.
arm_status arm_conv_partial_fast_opt_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
void arm_mult_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector multiplication.
void arm_sub_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector subtraction.
Instance structure for the floating-point Biquad cascade filter.
void arm_mean_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Mean value of a Q15 vector.
arm_status
Error status returned by some functions in the library.
void arm_biquad_cascade_df1_init_q31(arm_biquad_casd_df1_inst_q31 *S, uint8_t numStages, q31_t *pCoeffs, q31_t *pState, int8_t postShift)
Initialization function for the Q31 Biquad cascade filter.
void arm_cmplx_mult_real_q31(q31_t *pSrcCmplx, q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples)
Q31 complex-by-real multiplication.
void arm_conv_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
Convolution of Q7 sequences.
Instance structure for the floating-point bilinear interpolation function.
void arm_iir_lattice_q15(const arm_iir_lattice_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 IIR lattice filter.
arm_cfft_instance_f32 Sint
Instance structure for the Q31 matrix structure.
void arm_shift_q15(q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize)
Shifts the elements of a Q15 vector a specified number of bits.
arm_status arm_cfft_radix4_init_q31(arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_min_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Minimum value of a floating-point vector.
void arm_iir_lattice_init_q15(arm_iir_lattice_instance_q15 *S, uint16_t numStages, q15_t *pkCoeffs, q15_t *pvCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 IIR lattice filter.
q15_t arm_cos_q15(q15_t x)
Fast approximation to the trigonometric cosine function for Q15 data.
void arm_fir_decimate_q15(const arm_fir_decimate_instance_q15 *S, q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR decimator.
void arm_fir_interpolate_f32(const arm_fir_interpolate_instance_f32 *S, float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR interpolator.
void arm_cmplx_conj_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex conjugate.
arm_status arm_fir_interpolate_init_f32(arm_fir_interpolate_instance_f32 *S, uint8_t L, uint16_t numTaps, float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR interpolator.
void arm_fir_init_q31(arm_fir_instance_q31 *S, uint16_t numTaps, q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR filter.
void arm_sin_cos_f32(float32_t theta, float32_t *pSinVal, float32_t *pCcosVal)
void arm_power_q31(q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q31 vector.
Instance structure for the Q31 PID Control.