292 #if defined ( __GNUC__ ) 293 #pragma GCC diagnostic push 294 #pragma GCC diagnostic ignored "-Wsign-conversion" 295 #pragma GCC diagnostic ignored "-Wconversion" 296 #pragma GCC diagnostic ignored "-Wunused-parameter" 299 #define __CMSIS_GENERIC 301 #if defined(ARM_MATH_CM7) 303 #elif defined (ARM_MATH_CM4) 305 #elif defined (ARM_MATH_CM3) 307 #elif defined (ARM_MATH_CM0) 309 #define ARM_MATH_CM0_FAMILY 310 #elif defined (ARM_MATH_CM0PLUS) 312 #define ARM_MATH_CM0_FAMILY 314 #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0" 317 #undef __CMSIS_GENERIC 330 #define DELTA_Q31 (0x100) 331 #define DELTA_Q15 0x5 332 #define INDEX_MASK 0x0000003F 334 #define PI 3.14159265358979f 341 #define FAST_MATH_TABLE_SIZE 512 342 #define FAST_MATH_Q31_SHIFT (32 - 10) 343 #define FAST_MATH_Q15_SHIFT (16 - 10) 344 #define CONTROLLER_Q31_SHIFT (32 - 9) 345 #define TABLE_SIZE 256 346 #define TABLE_SPACING_Q31 0x400000 347 #define TABLE_SPACING_Q15 0x80 354 #define INPUT_SPACING 0xB60B61 359 #ifndef UNALIGNED_SUPPORT_DISABLE 362 #if defined (__GNUC__) 363 #define ALIGN4 __attribute__((aligned(4))) 365 #define ALIGN4 __align(4) 418 #define __SIMD32_TYPE int32_t __packed 419 #define CMSIS_UNUSED __attribute__((unused)) 421 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 422 #define __SIMD32_TYPE int32_t 423 #define CMSIS_UNUSED __attribute__((unused)) 425 #elif defined __GNUC__ 426 #define __SIMD32_TYPE int32_t 427 #define CMSIS_UNUSED __attribute__((unused)) 429 #elif defined __ICCARM__ 430 #define __SIMD32_TYPE int32_t __packed 433 #elif defined __CSMC__ 434 #define __SIMD32_TYPE int32_t 437 #elif defined __TASKING__ 438 #define __SIMD32_TYPE __unaligned int32_t 442 #error Unknown compiler 445 #define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) 446 #define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) 447 #define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) 448 #define __SIMD64(addr) (*(int64_t **) & (addr)) 450 #if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) 454 #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ 455 (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) 456 #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ 457 (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) 465 #ifndef ARM_MATH_BIG_ENDIAN 467 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ 468 (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ 469 (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ 470 (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) 473 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ 474 (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ 475 (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ 476 (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) 484 static __INLINE q31_t clip_q63_to_q31(
487 return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
488 ((0x7FFFFFFF ^ ((
q31_t) (x >> 63)))) : (q31_t) x;
494 static __INLINE q15_t clip_q63_to_q15(
497 return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ?
498 ((0x7FFF ^ ((
q15_t) (x >> 63)))) : (q15_t) (x >> 15);
504 static __INLINE q7_t clip_q31_to_q7(
507 return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ?
508 ((0x7F ^ ((
q7_t) (x >> 31)))) : (q7_t) x;
514 static __INLINE q15_t clip_q31_to_q15(
517 return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ?
518 ((0x7FFF ^ ((
q15_t) (x >> 31)))) : (q15_t) x;
525 static __INLINE q63_t mult32x64(
529 return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
530 (((q63_t) (x >> 32) * y)));
539 #if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ) 540 static __INLINE uint32_t
__CLZ(
543 static __INLINE uint32_t
__CLZ(
547 uint32_t mask = 0x80000000;
549 while((data & mask) == 0)
563 static __INLINE uint32_t arm_recip_q31(
575 signBits = ((uint32_t) (
__CLZ( in) - 1));
579 signBits = ((uint32_t) (
__CLZ(-in) - 1));
583 in = (in << signBits);
586 index = (uint32_t)(in >> 24);
590 out = pRecipTable[index];
594 for (i = 0u; i < 2u; i++)
596 tempVal = (uint32_t) (((q63_t) in * out) >> 31);
597 tempVal = 0x7FFFFFFFu - tempVal;
600 out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30);
607 return (signBits + 1u);
614 static __INLINE uint32_t arm_recip_q15(
620 uint32_t tempVal = 0;
621 uint32_t index = 0, i = 0;
622 uint32_t signBits = 0;
626 signBits = ((uint32_t)(
__CLZ( in) - 17));
630 signBits = ((uint32_t)(
__CLZ(-in) - 17));
634 in = (in << signBits);
637 index = (uint32_t)(in >> 8);
641 out = pRecipTable[index];
645 for (i = 0u; i < 2u; i++)
647 tempVal = (uint32_t) (((q31_t) in * out) >> 15);
648 tempVal = 0x7FFFu - tempVal;
650 out = (
q15_t) (((q31_t) out * tempVal) >> 14);
658 return (signBits + 1);
665 #if defined(ARM_MATH_CM0_FAMILY) 666 static __INLINE q31_t __SSAT(
670 int32_t posMax, negMin;
674 for (i = 0; i < (y - 1); i++)
681 posMax = (posMax - 1);
705 #if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) 710 static __INLINE uint32_t __QADD8(
716 r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
717 s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
718 t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
719 u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
721 return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r )));
728 static __INLINE uint32_t __QSUB8(
734 r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
735 s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
736 t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
737 u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
739 return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r )));
746 static __INLINE uint32_t __QADD16(
753 r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
754 s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
756 return ((uint32_t)((s << 16) | (r )));
763 static __INLINE uint32_t __SHADD16(
769 r = (((((
q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
770 s = (((((
q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
772 return ((uint32_t)((s << 16) | (r )));
779 static __INLINE uint32_t __QSUB16(
785 r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
786 s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
788 return ((uint32_t)((s << 16) | (r )));
795 static __INLINE uint32_t __SHSUB16(
801 r = (((((
q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
802 s = (((((
q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
804 return ((uint32_t)((s << 16) | (r )));
811 static __INLINE uint32_t __QASX(
817 r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
818 s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
820 return ((uint32_t)((s << 16) | (r )));
827 static __INLINE uint32_t __SHASX(
833 r = (((((
q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
834 s = (((((
q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
836 return ((uint32_t)((s << 16) | (r )));
843 static __INLINE uint32_t __QSAX(
849 r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
850 s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
852 return ((uint32_t)((s << 16) | (r )));
859 static __INLINE uint32_t __SHSAX(
865 r = (((((
q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
866 s = (((((
q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
868 return ((uint32_t)((s << 16) | (r )));
875 static __INLINE uint32_t __SMUSDX(
879 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) -
880 ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) ));
886 static __INLINE uint32_t __SMUADX(
890 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
891 ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) ));
898 static __INLINE int32_t __QADD(
902 return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y)));
909 static __INLINE int32_t __QSUB(
913 return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y)));
920 static __INLINE uint32_t __SMLAD(
925 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
926 ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) +
927 ( ((q31_t)sum ) ) ));
934 static __INLINE uint32_t __SMLADX(
939 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
940 ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
941 ( ((q31_t)sum ) ) ));
948 static __INLINE uint32_t __SMLSDX(
953 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) -
954 ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
955 ( ((q31_t)sum ) ) ));
962 static __INLINE uint64_t __SMLALD(
968 return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
969 ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) +
970 ( ((q63_t)sum ) ) ));
977 static __INLINE uint64_t __SMLALDX(
983 return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) +
984 ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) +
985 ( ((q63_t)sum ) ) ));
992 static __INLINE uint32_t __SMUAD(
996 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) +
997 ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) ));
1004 static __INLINE uint32_t __SMUSD(
1008 return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) -
1009 ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) ));
1016 static __INLINE uint32_t __SXTB16(
1019 return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) |
1020 ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) ));
1078 uint32_t blockSize);
1094 uint32_t blockSize);
1108 uint32_t blockSize);
1122 uint32_t blockSize);
1140 uint32_t blockSize);
1154 uint32_t blockSize);
1168 uint32_t blockSize);
1184 uint32_t blockSize);
1198 uint32_t blockSize);
1212 float32_t * pCoeffs,
1214 uint32_t blockSize);
1261 uint32_t blockSize);
1291 uint32_t blockSize);
1305 uint32_t blockSize);
1319 uint32_t blockSize);
1349 uint32_t blockSize);
1362 float32_t * pCoeffs,
1363 float32_t * pState);
1740 #ifdef ARM_MATH_CM0_FAMILY 1789 int32_t resetStateFlag);
1807 int32_t resetStateFlag);
1826 int32_t resetStateFlag);
1900 uint32_t blockSize);
1914 uint32_t blockSize);
1928 uint32_t blockSize);
1942 uint32_t blockSize);
1964 uint8_t bitReverseFlag);
1991 uint8_t bitReverseFlag);
2017 uint8_t bitReverseFlag);
2048 uint8_t bitReverseFlag);
2070 uint8_t bitReverseFlag);
2097 uint8_t bitReverseFlag);
2119 uint8_t bitReverseFlag);
2136 uint8_t bitReverseFlag);
2153 uint8_t bitReverseFlag);
2171 uint32_t fftLenReal,
2173 uint32_t bitReverseFlag);
2196 uint32_t fftLenReal,
2198 uint32_t bitReverseFlag);
2223 uint32_t fftLenReal,
2225 uint32_t bitReverseFlag);
2248 float32_t * p, float32_t * pOut,
2282 float32_t normalize);
2294 float32_t * pInlineBuffer);
2340 q31_t * pInlineBuffer);
2386 q15_t * pInlineBuffer);
2400 uint32_t blockSize);
2414 uint32_t blockSize);
2428 uint32_t blockSize);
2442 uint32_t blockSize);
2456 uint32_t blockSize);
2470 uint32_t blockSize);
2484 uint32_t blockSize);
2498 uint32_t blockSize);
2512 uint32_t blockSize);
2528 uint32_t blockSize);
2544 uint32_t blockSize);
2560 uint32_t blockSize);
2572 uint32_t blockSize);
2584 uint32_t blockSize);
2596 uint32_t blockSize);
2608 uint32_t blockSize);
2622 float32_t * result);
2678 uint32_t blockSize);
2692 uint32_t blockSize);
2706 uint32_t blockSize);
2720 uint32_t blockSize);
2734 uint32_t blockSize);
2748 uint32_t blockSize);
2762 uint32_t blockSize);
2774 uint32_t blockSize);
2786 uint32_t blockSize);
2798 uint32_t blockSize);
2810 uint32_t blockSize);
2822 uint32_t blockSize);
2834 uint32_t blockSize);
2846 uint32_t blockSize);
2858 uint32_t blockSize);
2870 uint32_t blockSize);
2882 uint32_t blockSize);
2894 uint32_t blockSize);
2906 uint32_t blockSize);
3082 uint32_t firstIndex,
3083 uint32_t numPoints);
3105 uint32_t firstIndex,
3128 uint32_t firstIndex,
3129 uint32_t numPoints);
3149 uint32_t firstIndex,
3150 uint32_t numPoints);
3172 uint32_t firstIndex,
3195 uint32_t firstIndex,
3196 uint32_t numPoints);
3216 uint32_t firstIndex,
3217 uint32_t numPoints);
3239 uint32_t firstIndex,
3262 uint32_t firstIndex,
3263 uint32_t numPoints);
3311 uint32_t blockSize);
3329 float32_t * pCoeffs,
3331 uint32_t blockSize);
3345 uint32_t blockSize);
3359 uint32_t blockSize);
3379 uint32_t blockSize);
3393 uint32_t blockSize);
3406 uint32_t blockSize);
3426 uint32_t blockSize);
3474 uint32_t blockSize);
3494 uint32_t blockSize);
3508 uint32_t blockSize);
3528 uint32_t blockSize);
3542 uint32_t blockSize);
3560 float32_t * pCoeffs,
3562 uint32_t blockSize);
3587 uint32_t blockSize);
3647 uint32_t blockSize);
3661 uint32_t blockSize);
3675 uint32_t blockSize);
3688 float32_t * pCoeffs,
3689 float32_t * pState);
3702 float32_t * pCoeffs,
3703 float32_t * pState);
3716 float64_t * pCoeffs,
3717 float64_t * pState);
3776 uint32_t blockSize);
3804 uint32_t blockSize);
3817 float32_t * pCoeffs,
3818 float32_t * pState);
3832 uint32_t blockSize);
3880 uint32_t blockSize);
3895 float32_t * pkCoeffs,
3896 float32_t * pvCoeffs,
3898 uint32_t blockSize);
3912 uint32_t blockSize);
3930 uint32_t blockSize);
3944 uint32_t blockSize);
3962 uint32_t blockSize);
3992 uint32_t blockSize);
4007 float32_t * pCoeffs,
4010 uint32_t blockSize);
4043 uint32_t postShift);
4061 uint32_t blockSize);
4092 uint32_t blockSize);
4112 uint32_t postShift);
4144 uint32_t blockSize);
4159 float32_t * pCoeffs,
4162 uint32_t blockSize);
4196 uint32_t blockSize);
4250 uint32_t blockSize);
4492 float32_t * pScratchIn,
4493 uint32_t blockSize);
4509 float32_t * pCoeffs,
4511 int32_t * pTapDelay,
4513 uint32_t blockSize);
4529 uint32_t blockSize);
4547 int32_t * pTapDelay,
4549 uint32_t blockSize);
4566 q31_t * pScratchOut,
4567 uint32_t blockSize);
4585 int32_t * pTapDelay,
4587 uint32_t blockSize);
4604 q31_t * pScratchOut,
4605 uint32_t blockSize);
4623 int32_t * pTapDelay,
4625 uint32_t blockSize);
4636 float32_t * pSinVal,
4637 float32_t * pCosVal);
4661 uint32_t numSamples);
4672 uint32_t numSamples);
4684 uint32_t numSamples);
4696 uint32_t numSamples);
4708 uint32_t numSamples);
4720 uint32_t numSamples);
4795 static __INLINE float32_t arm_pid_f32(
4802 out = (S->
A0 * in) +
4829 static __INLINE q31_t arm_pid_q31(
4840 acc += (q63_t) S->
A1 * S->
state[0];
4846 out = (q31_t) (acc >> 31u);
4876 static __INLINE q15_t arm_pid_q15(
4883 #ifndef ARM_MATH_CM0_FAMILY 4884 __SIMD32_TYPE *vstate;
4889 acc = (
q31_t) __SMUAD((uint32_t)S->
A0, (uint32_t)in);
4893 acc = (
q63_t)__SMLALD((uint32_t)S->
A1, (uint32_t)*vstate, (uint64_t)acc);
4900 acc += (q31_t) S->A2 * S->
state[1];
4907 out = (q15_t) (__SSAT((acc >> 15), 16));
4987 static __INLINE
void arm_clarke_f32(
4990 float32_t * pIalpha,
4997 *pIbeta = ((
float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib);
5014 static __INLINE
void arm_clarke_q31(
5020 q31_t product1, product2;
5026 product1 = (
q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30);
5029 product2 = (
q31_t) (((q63_t) Ib * 0x49E69D16) >> 30);
5032 *pIbeta = __QADD(product1, product2);
5048 uint32_t blockSize);
5084 static __INLINE
void arm_inv_clarke_f32(
5094 *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
5111 static __INLINE
void arm_inv_clarke_q31(
5117 q31_t product1, product2;
5123 product1 = (
q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31);
5126 product2 = (
q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
5129 *pIb = __QSUB(product2, product1);
5145 uint32_t blockSize);
5194 static __INLINE
void arm_park_f32(
5203 *pId = Ialpha * cosVal + Ibeta * sinVal;
5206 *pIq = -Ialpha * sinVal + Ibeta * cosVal;
5225 static __INLINE
void arm_park_q31(
5233 q31_t product1, product2;
5234 q31_t product3, product4;
5237 product1 = (
q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31);
5240 product2 = (
q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31);
5244 product3 = (
q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31);
5247 product4 = (
q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31);
5250 *pId = __QADD(product1, product2);
5253 *pIq = __QSUB(product4, product3);
5269 uint32_t blockSize);
5307 static __INLINE
void arm_inv_park_f32(
5310 float32_t * pIalpha,
5316 *pIalpha = Id * cosVal - Iq * sinVal;
5319 *pIbeta = Id * sinVal + Iq * cosVal;
5338 static __INLINE
void arm_inv_park_q31(
5346 q31_t product1, product2;
5347 q31_t product3, product4;
5350 product1 = (
q31_t) (((q63_t) (Id) * (cosVal)) >> 31);
5353 product2 = (
q31_t) (((q63_t) (Iq) * (sinVal)) >> 31);
5357 product3 = (
q31_t) (((q63_t) (Id) * (sinVal)) >> 31);
5360 product4 = (
q31_t) (((q63_t) (Iq) * (cosVal)) >> 31);
5363 *pIalpha = __QSUB(product1, product2);
5366 *pIbeta = __QADD(product4, product3);
5383 uint32_t blockSize);
5433 static __INLINE float32_t arm_linear_interp_f32(
5442 float32_t *pYData = S->
pYData;
5445 i = (int32_t) ((x - S->
x1) / xSpacing);
5452 else if((uint32_t)i >= S->
nValues)
5460 x0 = S->
x1 + i * xSpacing;
5461 x1 = S->
x1 + (i + 1) * xSpacing;
5468 y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
5490 static __INLINE q31_t arm_linear_interp_q31(
5503 index = ((x & (
q31_t)0xFFF00000) >> 20);
5505 if(index >= (int32_t)(nValues - 1))
5507 return (pYData[nValues - 1]);
5517 fract = (x & 0x000FFFFF) << 11;
5521 y1 = pYData[index + 1];
5524 y = ((
q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
5527 y += ((
q31_t) (((q63_t) y1 * fract) >> 32));
5548 static __INLINE q15_t arm_linear_interp_q15(
5561 index = ((x & (int32_t)0xFFF00000) >> 20);
5563 if(index >= (int32_t)(nValues - 1))
5565 return (pYData[nValues - 1]);
5575 fract = (x & 0x000FFFFF);
5579 y1 = pYData[index + 1];
5582 y = ((
q63_t) y0 * (0xFFFFF - fract));
5585 y += ((
q63_t) y1 * (fract));
5588 return (q15_t) (y >> 20);
5605 static __INLINE q7_t arm_linear_interp_q7(
5622 index = (x >> 20) & 0xfff;
5624 if(index >= (nValues - 1))
5626 return (pYData[nValues - 1]);
5632 fract = (x & 0x000FFFFF);
5636 y1 = pYData[index + 1];
5639 y = ((y0 * (0xFFFFF - fract)));
5645 return (q7_t) (y >> 20);
5752 #if (__FPU_USED == 1) && defined ( __CC_ARM ) 5753 *pOut = __sqrtf(in);
5754 #elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) 5755 *pOut = __builtin_sqrtf(in);
5756 #elif (__FPU_USED == 1) && defined(__GNUC__) 5757 *pOut = __builtin_sqrtf(in);
5758 #elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000) 5759 __ASM(
"VSQRT.F32 %0,%1" :
"=t"(*pOut) :
"t"(in));
5805 static __INLINE
void arm_circularWrite_f32(
5806 int32_t * circBuffer,
5808 uint16_t * writeOffset,
5810 const int32_t * src,
5819 wOffset = *writeOffset;
5827 circBuffer[wOffset] = *src;
5833 wOffset += bufferInc;
5842 *writeOffset = (uint16_t)wOffset;
5850 static __INLINE
void arm_circularRead_f32(
5851 int32_t * circBuffer,
5853 int32_t * readOffset,
5862 int32_t rOffset, dst_end;
5866 rOffset = *readOffset;
5867 dst_end = (int32_t) (dst_base + dst_length);
5875 *dst = circBuffer[rOffset];
5880 if(dst == (int32_t *) dst_end)
5886 rOffset += bufferInc;
5898 *readOffset = rOffset;
5905 static __INLINE
void arm_circularWrite_q15(
5908 uint16_t * writeOffset,
5919 wOffset = *writeOffset;
5927 circBuffer[wOffset] = *src;
5933 wOffset += bufferInc;
5942 *writeOffset = (uint16_t)wOffset;
5949 static __INLINE
void arm_circularRead_q15(
5952 int32_t * readOffset,
5961 int32_t rOffset, dst_end;
5965 rOffset = *readOffset;
5967 dst_end = (int32_t) (dst_base + dst_length);
5975 *dst = circBuffer[rOffset];
5980 if(dst == (q15_t *) dst_end)
5986 rOffset += bufferInc;
5998 *readOffset = rOffset;
6005 static __INLINE
void arm_circularWrite_q7(
6008 uint16_t * writeOffset,
6019 wOffset = *writeOffset;
6027 circBuffer[wOffset] = *src;
6033 wOffset += bufferInc;
6042 *writeOffset = (uint16_t)wOffset;
6049 static __INLINE
void arm_circularRead_q7(
6052 int32_t * readOffset,
6061 int32_t rOffset, dst_end;
6065 rOffset = *readOffset;
6067 dst_end = (int32_t) (dst_base + dst_length);
6075 *dst = circBuffer[rOffset];
6080 if(dst == (q7_t *) dst_end)
6086 rOffset += bufferInc;
6098 *readOffset = rOffset;
6123 float32_t * pResult);
6195 float32_t * pResult);
6207 float32_t * pResult);
6243 float32_t * pResult);
6279 float32_t * pResult);
6315 uint32_t numSamples);
6327 uint32_t numSamples);
6339 uint32_t numSamples);
6353 uint32_t numSamples,
6355 q31_t * imagResult);
6369 uint32_t numSamples,
6371 q63_t * imagResult);
6385 uint32_t numSamples,
6386 float32_t * realResult,
6387 float32_t * imagResult);
6401 uint32_t numSamples);
6415 uint32_t numSamples);
6426 float32_t * pSrcCmplx,
6427 float32_t * pSrcReal,
6428 float32_t * pCmplxDst,
6429 uint32_t numSamples);
6484 float32_t * pResult,
6540 float32_t * pResult,
6555 uint32_t numSamples);
6569 uint32_t numSamples);
6583 uint32_t numSamples);
6595 uint32_t blockSize);
6607 uint32_t blockSize);
6619 uint32_t blockSize);
6631 uint32_t blockSize);
6643 uint32_t blockSize);
6655 uint32_t blockSize);
6667 uint32_t blockSize);
6679 uint32_t blockSize);
6752 static __INLINE float32_t arm_bilinear_interp_f32(
6758 float32_t f00, f01, f10, f11;
6759 float32_t *pData = S->
pData;
6760 int32_t xIndex, yIndex, index;
6761 float32_t xdiff, ydiff;
6762 float32_t b1, b2, b3, b4;
6764 xIndex = (int32_t) X;
6765 yIndex = (int32_t) Y;
6769 if(xIndex < 0 || xIndex > (S->
numRows - 1) || yIndex < 0 || yIndex > (S->
numCols - 1))
6775 index = (xIndex - 1) + (yIndex - 1) * S->
numCols;
6780 f01 = pData[index + 1];
6783 index = (xIndex - 1) + (yIndex) * S->
numCols;
6788 f11 = pData[index + 1];
6794 b4 = f00 - f01 - f10 + f11;
6803 out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
6818 static __INLINE q31_t arm_bilinear_interp_q31(
6825 q31_t xfract, yfract;
6826 q31_t x1, x2, y1, y2;
6828 q31_t *pYData = S->
pData;
6834 rI = ((X & (
q31_t)0xFFF00000) >> 20);
6839 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
6843 if(rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
6850 xfract = (X & 0x000FFFFF) << 11u;
6853 x1 = pYData[(rI) + (int32_t)nCols * (cI) ];
6854 x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
6858 yfract = (Y & 0x000FFFFF) << 11u;
6861 y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ];
6862 y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
6865 out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));
6866 acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
6869 out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
6870 acc += ((q31_t) ((q63_t) out * (xfract) >> 32));
6873 out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
6874 acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
6877 out = ((q31_t) ((q63_t) y2 * (xfract) >> 32));
6878 acc += ((q31_t) ((q63_t) out * (yfract) >> 32));
6881 return ((q31_t)(acc << 2));
6892 static __INLINE q15_t arm_bilinear_interp_q15(
6899 q15_t x1, x2, y1, y2;
6900 q31_t xfract, yfract;
6902 q15_t *pYData = S->pData;
6903 uint32_t nCols = S->numCols;
6908 rI = ((X & (
q31_t)0xFFF00000) >> 20);
6913 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
6917 if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1))
6924 xfract = (X & 0x000FFFFF);
6927 x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
6928 x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
6932 yfract = (Y & 0x000FFFFF);
6935 y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
6936 y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
6942 out = (
q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u);
6943 acc = ((
q63_t) out * (0xFFFFF - yfract));
6946 out = (
q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u);
6947 acc += ((
q63_t) out * (xfract));
6950 out = (
q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u);
6951 acc += ((
q63_t) out * (yfract));
6954 out = (
q31_t) (((q63_t) y2 * (xfract)) >> 4u);
6955 acc += ((
q63_t) out * (yfract));
6959 return ((q15_t)(acc >> 36));
6970 static __INLINE q7_t arm_bilinear_interp_q7(
6977 q31_t xfract, yfract;
6978 q7_t x1, x2, y1, y2;
6980 q7_t *pYData = S->
pData;
6986 rI = ((X & (
q31_t)0xFFF00000) >> 20);
6991 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
6995 if(rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7002 xfract = (X & (
q31_t)0x000FFFFF);
7005 x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
7006 x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
7010 yfract = (Y & (
q31_t)0x000FFFFF);
7013 y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
7014 y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
7017 out = ((x1 * (0xFFFFF - xfract)));
7018 acc = (((
q63_t) out * (0xFFFFF - yfract)));
7021 out = ((x2 * (0xFFFFF - yfract)));
7022 acc += (((
q63_t) out * (xfract)));
7025 out = ((y1 * (0xFFFFF - xfract)));
7026 acc += (((
q63_t) out * (yfract)));
7029 out = ((y2 * (yfract)));
7030 acc += (((
q63_t) out * (xfract)));
7033 return ((q7_t)(acc >> 40));
7042 #define multAcc_32x32_keep32_R(a, x, y) \ 7043 a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) 7046 #define multSub_32x32_keep32_R(a, x, y) \ 7047 a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) 7050 #define mult_32x32_keep32_R(a, x, y) \ 7051 a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) 7054 #define multAcc_32x32_keep32(a, x, y) \ 7055 a += (q31_t) (((q63_t) x * y) >> 32) 7058 #define multSub_32x32_keep32(a, x, y) \ 7059 a -= (q31_t) (((q63_t) x * y) >> 32) 7062 #define mult_32x32_keep32(a, x, y) \ 7063 a = (q31_t) (((q63_t) x * y ) >> 32) 7066 #if defined ( __CC_ARM ) 7068 #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) 7069 #define LOW_OPTIMIZATION_ENTER \ 7073 #define LOW_OPTIMIZATION_ENTER 7077 #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) 7078 #define LOW_OPTIMIZATION_EXIT \ 7081 #define LOW_OPTIMIZATION_EXIT 7085 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7088 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7090 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 7091 #define LOW_OPTIMIZATION_ENTER 7092 #define LOW_OPTIMIZATION_EXIT 7093 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7094 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7096 #elif defined(__GNUC__) 7097 #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") )) 7098 #define LOW_OPTIMIZATION_EXIT 7099 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7100 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7102 #elif defined(__ICCARM__) 7104 #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) 7105 #define LOW_OPTIMIZATION_ENTER \ 7106 _Pragma ("optimize=low") 7108 #define LOW_OPTIMIZATION_ENTER 7112 #define LOW_OPTIMIZATION_EXIT 7115 #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) 7116 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ 7117 _Pragma ("optimize=low") 7119 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7123 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7125 #elif defined(__CSMC__) 7126 #define LOW_OPTIMIZATION_ENTER 7127 #define LOW_OPTIMIZATION_EXIT 7128 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7129 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7131 #elif defined(__TASKING__) 7132 #define LOW_OPTIMIZATION_ENTER 7133 #define LOW_OPTIMIZATION_EXIT 7134 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER 7135 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT 7145 #if defined ( __GNUC__ ) 7146 #pragma GCC diagnostic pop
void arm_rms_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Root Mean Square of the elements of a Q31 vector.
Instance structure for the floating-point FIR interpolator.
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_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.
void arm_cmplx_conj_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex conjugate.
void arm_negate_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Negates the elements of a Q31 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_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.
arm_status arm_rfft_init_q15(arm_rfft_instance_q15 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
Initialization function for the Q15 RFFT/RIFFT.
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.
arm_status arm_rfft_init_q31(arm_rfft_instance_q31 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
Initialization function for the Q31 RFFT/RIFFT.
int8_t q7_t
8-bit fractional data type in 1.7 format.
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.
Instance structure for the Q15 FIR filter.
void arm_sin_cos_f32(float32_t theta, float32_t *pSinVal, float32_t *pCosVal)
Floating-point sin_cos function.
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_sub_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector subtraction.
q31_t arm_cos_q31(q31_t x)
Fast approximation to the trigonometric cosine function for Q31 data.
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_copy_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Copies the elements of a Q31 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_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.
void arm_cfft_f32(const arm_cfft_instance_f32 *S, float32_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
Processing function for the floating-point complex FFT.
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_cmplx_mult_cmplx_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
Q15 complex-by-complex multiplication.
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.
Instance structure for the Q31 IIR lattice filter.
arm_status arm_mat_trans_f32(const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
Floating-point matrix transpose.
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.
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_pid_reset_q15(arm_pid_instance_q15 *S)
Reset function for the Q15 PID Control.
void arm_cmplx_conj_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex conjugate.
q31_t arm_sin_q31(q31_t x)
Fast approximation to the trigonometric sine function for Q31 data.
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)
void arm_conv_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Convolution of Q31 sequences.
void arm_rfft_q31(const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
Processing function for the Q31 RFFT/RIFFT.
arm_status arm_cfft_radix2_init_q15(arm_cfft_radix2_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the Q15 CFFT/CIFFT.
arm_status arm_rfft_fast_init_f32(arm_rfft_fast_instance_f32 *S, uint16_t fftLen)
Initialization function for the floating-point real FFT.
void arm_dot_prod_q31(q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q31 vectors.
void arm_copy_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Copies the elements of a Q7 vector.
arm_status arm_mat_inverse_f32(const arm_matrix_instance_f32 *src, arm_matrix_instance_f32 *dst)
Floating-point matrix inverse.
void arm_dot_prod_f32(float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
Dot product of floating-point vectors.
float float32_t
32-bit floating-point type definition.
void arm_mult_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector multiplication.
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.
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.
CMSIS Cortex-M0 Core Peripheral Access Layer Header File.
const arm_cfft_instance_q15 * pCfft
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.
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_status arm_mat_trans_q31(const arm_matrix_instance_q31 *pSrc, arm_matrix_instance_q31 *pDst)
Q31 matrix transpose.
void arm_cfft_q31(const arm_cfft_instance_q31 *S, q31_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
Processing function for the fixed-point complex FFT in Q31 format.
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.
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.
Instance structure for the Q31 bilinear interpolation function.
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.
uint16_t twidCoefModifier
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.
Instance structure for the floating-point IIR lattice filter.
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.
void arm_mean_q7(q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
Mean value of a Q7 vector.
Instance structure for the Q7 FIR filter.
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.
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_negate_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Negates the elements of a Q15 vector.
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.
Instance structure for the Q15 bilinear interpolation function.
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 lattice filter.
uint16_t twidCoefModifier
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.
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)
Initialization function for the floating-point RFFT/RIFFT.
Instance structure for the floating-point DCT4/IDCT4 function.
void arm_cmplx_mag_squared_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude squared.
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_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.
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_pid_init_q15(arm_pid_instance_q15 *S, int32_t resetStateFlag)
Initialization function for the Q15 PID Control.
arm_cfft_instance_f32 Sint
Instance structure for the Q15 sparse FIR filter.
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_cfft_radix4_init_f32(arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the floating-point CFFT/CIFFT.
CMSIS Cortex-M4 Core Peripheral Access Layer Header File.
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...
void arm_sin_cos_q31(q31_t theta, q31_t *pSinVal, q31_t *pCosVal)
Q31 sin_cos function.
Instance structure for the floating-point PID Control.
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.
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_copy_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Copies the elements of a Q15 vector.
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_float_to_q15(float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q15 vector.
uint16_t twidCoefModifier
Instance structure for the floating-point FIR filter.
void arm_pid_init_q31(arm_pid_instance_q31 *S, int32_t resetStateFlag)
Initialization function for the Q31 PID Control.
void arm_q7_to_q15(q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to Q15 vector.
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_rfft_f32(const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
Processing function for the floating-point RFFT/RIFFT.
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_cmplx_dot_prod_q31(q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
Q31 complex dot product.
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.
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.
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.
uint32_t twidCoefRModifier
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_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_mean_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Mean value of a Q31 vector.
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...
Instance structure for the fixed-point CFFT/CIFFT function.
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.
CMSIS Cortex-M3 Core Peripheral Access Layer Header File.
void arm_correlate_q31(q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Correlation of Q31 sequences.
void arm_q15_to_q7(q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to Q7 vector.
#define __SIMD32_CONST(addr)
Instance structure for the Q31 LMS filter.
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_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.
void arm_cmplx_mag_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude.
arm_cfft_radix4_instance_f32 * pCfft
void arm_abs_q15(q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Q15 vector absolute value.
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.
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_min_q7(q7_t *pSrc, uint32_t blockSize, q7_t *result, uint32_t *index)
Minimum value of a Q7 vector.
void arm_cmplx_mag_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude.
void arm_var_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Variance of the elements of a Q15 vector.
Instance structure for the floating-point RFFT/RIFFT function.
void arm_min_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Minimum value of a floating-point vector.
const uint16_t * pBitRevTable
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.
void arm_sub_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector subtraction.
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_cfft_radix2_q15(const arm_cfft_radix2_instance_q15 *S, q15_t *pSrc)
Processing function for the fixed-point CFFT/CIFFT.
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_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-...
arm_status arm_sqrt_q31(q31_t in, q31_t *pOut)
Q31 square root function.
void arm_sub_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector subtraction.
void arm_std_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Standard deviation of the elements of a Q31 vector.
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.
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.
Instance structure for the Q15 bilinear interpolation function.
Instance structure for the Q31 CFFT/CIFFT function.
void arm_cfft_radix4_q15(const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)
Processing function for the Q15 CFFT/CIFFT.
void arm_add_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector addition.
arm_status arm_mat_trans_q15(const arm_matrix_instance_q15 *pSrc, arm_matrix_instance_q15 *pDst)
Q15 matrix transpose.
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_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Standard deviation of the elements of a Q15 vector.
void arm_abs_q31(q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Q31 vector absolute value.
arm_status arm_cfft_radix4_init_q31(arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the Q31 CFFT/CIFFT.
CMSIS Cortex-M7 Core Peripheral Access Layer Header File.
void arm_cmplx_mult_real_f32(float32_t *pSrcCmplx, float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
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.
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_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_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_mat_scale_q15(const arm_matrix_instance_q15 *pSrc, q15_t scaleFract, int32_t shift, arm_matrix_instance_q15 *pDst)
Q15 matrix scaling.
Instance structure for the Q7 sparse FIR filter.
Instance structure for the floating-point transposed direct form II Biquad cascade filter...
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 floating-point RFFT/RIFFT function.
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-...
const uint16_t * pBitRevTable
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_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.
Instance structure for the floating-point CFFT/CIFFT function.
void arm_cfft_q15(const arm_cfft_instance_q15 *S, q15_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
Processing function for the Q15 complex FFT.
arm_status arm_cfft_radix4_init_q15(arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the Q15 CFFT/CIFFT.
Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
Instance structure for the Q31 sparse FIR filter.
void arm_sub_q31(q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector subtraction.
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.
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_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.
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 floating-point LMS filter.
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.
arm_status arm_mat_scale_f32(const arm_matrix_instance_f32 *pSrc, float32_t scale, arm_matrix_instance_f32 *pDst)
Floating-point matrix scaling.
Instance structure for the floating-point FIR decimator.
double float64_t
64-bit floating-point type definition.
void arm_q7_to_q31(q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to Q31 vector.
arm_status arm_cfft_radix2_init_f32(arm_cfft_radix2_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the floating-point CFFT/CIFFT.
Instance structure for the Q31 DCT4/IDCT4 function.
void arm_var_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Variance of the elements of a floating-point vector.
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.
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_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_cmplx_mult_real_q15(q15_t *pSrcCmplx, q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
Q15 complex-by-real multiplication.
CMSIS Cortex-M0+ Core Peripheral Access Layer Header File.
void arm_fill_q7(q7_t value, q7_t *pDst, uint32_t blockSize)
Fills a constant value into a Q7 vector.
Instance structure for the Q31 FIR filter.
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.
void arm_cfft_radix4_q31(const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
Processing function for the Q31 CFFT/CIFFT.
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.
Instance structure for the Q15 FIR lattice filter.
int16_t q15_t
16-bit fractional data type in 1.15 format.
uint16_t twidCoefModifier
uint16_t twidCoefModifier
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.
const uint16_t * pBitRevTable
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.
Instance structure for the floating-point CFFT/CIFFT function.
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 Q15 IIR lattice filter.
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_cmplx_mag_squared_q31(q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude squared.
void arm_cfft_radix2_f32(const arm_cfft_radix2_instance_f32 *S, float32_t *pSrc)
Radix-2 CFFT/CIFFT.
Instance structure for the Q31 normalized LMS filter.
Instance structure for the Q15 FIR decimator.
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.
void arm_mult_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector multiplication.
void arm_min_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
Minimum value of a Q15 vector.
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_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.
void arm_pid_init_f32(arm_pid_instance_f32 *S, int32_t resetStateFlag)
Initialization function for the floating-point PID Control.
void arm_abs_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Floating-point vector absolute value.
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.
void arm_fill_q31(q31_t value, q31_t *pDst, uint32_t blockSize)
Fills a constant value into a Q31 vector.
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.
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_q31_to_q15(q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q15 vector.
void arm_fill_f32(float32_t value, float32_t *pDst, uint32_t blockSize)
Fills a constant value into a floating-point vector.
void arm_copy_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Copies the elements of a floating-point vector.
Instance structure for the Q15 normalized LMS filter.
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.
void arm_pid_reset_f32(arm_pid_instance_f32 *S)
Reset function for the floating-point PID Control.
void arm_cfft_radix2_q31(const arm_cfft_radix2_instance_q31 *S, q31_t *pSrc)
Processing function for the fixed-point CFFT/CIFFT.
void arm_abs_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Q7 vector absolute value.
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.
void arm_q31_to_q7(q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q7 vector.
arm_rfft_instance_q15 * pRfft
Instance structure for the Q15 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.
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_rfft_q15(const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)
Processing function for the Q15 RFFT/RIFFT.
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.
Instance structure for the floating-point sparse FIR filter.
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_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_power_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Sum of the squares of the elements of a floating-point vector.
uint16_t twidCoefModifier
Instance structure for the Q15 Biquad cascade filter.
void arm_mean_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Mean value of a Q15 vector.
void arm_add_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector addition.
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.
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.
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.
uint32_t twidCoefRModifier
void arm_power_q7(q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
Sum of the squares of the elements of a Q7 vector.
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.
q15_t arm_sin_q15(q15_t x)
Fast approximation to the trigonometric sine function for Q15 data.
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_dot_prod_q15(q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q15 vectors.
void arm_negate_q7(q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Negates the elements of a Q7 vector.
void arm_cmplx_conj_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex conjugate.
Instance structure for the Q15 LMS filter.
void arm_cfft_radix4_f32(const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
Processing function for the floating-point Radix-4 CFFT/CIFFT.
void arm_mult_q15(q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector multiplication.
Instance structure for the Q31 FIR interpolator.
void arm_correlate_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Correlation of Q15 sequences.
void arm_negate_f32(float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Negates the elements of a floating-point vector.
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.
Instance structure for the Q31 Biquad cascade filter.
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_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_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_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_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.
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_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_power_q15(q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q15 vector.
const arm_cfft_instance_q31 * pCfft
void arm_pid_reset_q31(arm_pid_instance_q31 *S)
Reset function for the Q31 PID Control.
void arm_rms_q15(q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Root Mean Square of the elements of a Q15 vector.
Instance structure for the floating-point CFFT/CIFFT function.
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.
Instance structure for the Q15 FIR interpolator.
int32_t q31_t
32-bit fractional data type in 1.31 format.
void arm_mat_init_q15(arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
Q15 matrix initialization.
arm_status arm_sqrt_q15(q15_t in, q15_t *pOut)
Q15 square root function.
arm_cfft_radix4_instance_f32 * pCfft
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.
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.
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_add_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector addition.
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.
Instance structure for the Q15 CFFT/CIFFT function.
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 Q15 PID Control.
void arm_offset_q7(q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q7 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 Q15 DCT4/IDCT4 function.
arm_cfft_radix4_instance_q31 * pCfft
Instance structure for the floating-point normalized LMS filter.
Instance structure for the Q31 RFFT/RIFFT function.
float32_t * pTwiddleBReal
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_max_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
Maximum value of a Q31 vector.
Instance structure for the floating-point transposed direct form II Biquad cascade filter...
void arm_cmplx_mag_f32(float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude.
void arm_conv_f32(float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
Convolution of floating-point sequences.
void arm_conv_q7(q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
Convolution of Q7 sequences.
void arm_var_q31(q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Variance of the elements of a Q31 vector.
Instance structure for the high precision Q31 Biquad cascade filter.
arm_cfft_radix4_instance_q15 * pCfft
Instance structure for the Q15 RFFT/RIFFT function.
const float32_t * pTwiddle
Instance structure for the floating-point matrix structure.
Instance structure for the Q15 CFFT/CIFFT function.
Instance structure for the floating-point matrix structure.
float32_t arm_cos_f32(float32_t x)
Fast approximation to the trigonometric cosine function for floating-point data.
void arm_offset_q31(q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q31 vector.
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.
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_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.
Instance structure for the Q31 FIR decimator.
arm_status arm_cfft_radix2_init_q31(arm_cfft_radix2_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Initialization function for the Q31 CFFT/CIFFT.
#define __CLZ
Count leading zeros.
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 fixed-point CFFT/CIFFT function.
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_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_max_q7(q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
Maximum value of a Q7 vector.
void arm_rfft_fast_f32(arm_rfft_fast_instance_f32 *S, float32_t *p, float32_t *pOut, uint8_t ifftFlag)
Processing function for the floating-point real FFT.
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.
uint32_t twidCoefRModifier
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.
void arm_power_q31(q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q31 vector.
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.
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.
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 floating-point transposed direct form II Biquad cascade filter...
arm_status arm_mat_inverse_f64(const arm_matrix_instance_f64 *src, arm_matrix_instance_f64 *dst)
Floating-point matrix inverse.
void arm_max_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Maximum value of a floating-point 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_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.
q15_t arm_cos_q15(q15_t x)
Fast approximation to the trigonometric cosine function for Q15 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_cmplx_mag_squared_q15(q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude squared.
void arm_mat_init_q31(arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
Q31 matrix initialization.
float32_t arm_sin_f32(float32_t x)
Fast approximation to the trigonometric sine function for floating-point data.
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.
void arm_mult_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector multiplication.
float32_t * pTwiddleAReal
void arm_fill_q15(q15_t value, q15_t *pDst, uint32_t blockSize)
Fills a constant value into a Q15 vector.
Instance structure for the floating-point Linear Interpolate function.
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_add_q7(q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector addition.
arm_rfft_instance_q31 * pRfft
Instance structure for the floating-point Biquad cascade filter.
arm_status
Error status returned by some functions in the library.
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.
Instance structure for the floating-point bilinear interpolation function.
arm_rfft_instance_f32 * pRfft
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_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.
Instance structure for the Q31 matrix structure.
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.
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_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_conv_q15(q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Convolution of Q15 sequences.
void arm_mean_f32(float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Mean value of a floating-point vector.
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_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.
void arm_cmplx_mult_cmplx_f32(float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
Floating-point complex-by-complex multiplication.
void arm_scale_f32(float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
Multiplies a floating-point vector by a scalar.
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...
Instance structure for the Q31 PID Control.