Go to the documentation of this file.
283 #if defined ( __CC_ARM )
285 #elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
287 #elif defined ( __GNUC__ )
288 #pragma GCC diagnostic push
289 #pragma GCC diagnostic ignored "-Wsign-conversion"
290 #pragma GCC diagnostic ignored "-Wconversion"
291 #pragma GCC diagnostic ignored "-Wunused-parameter"
293 #elif defined ( __ICCARM__ )
295 #elif defined ( __TI_ARM__ )
297 #elif defined ( __CSMC__ )
299 #elif defined ( __TASKING__ )
301 #elif defined ( _MSC_VER )
304 #error Unknown compiler
309 #if !defined ( _MSC_VER )
313 #define __STATIC_FORCEINLINE static __forceinline
314 #define __ALIGNED(x) __declspec(align(x))
315 #define LOW_OPTIMIZATION_ENTER
316 #define LOW_OPTIMIZATION_EXIT
317 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
318 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
326 #if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
327 #define ARM_MATH_DSP 1
330 #if defined(__ARM_NEON)
331 #include <arm_neon.h>
345 #define DELTA_Q31 (0x100)
346 #define DELTA_Q15 0x5
347 #define INDEX_MASK 0x0000003F
349 #define PI 3.14159265358979f
356 #define FAST_MATH_TABLE_SIZE 512
357 #define FAST_MATH_Q31_SHIFT (32 - 10)
358 #define FAST_MATH_Q15_SHIFT (16 - 10)
359 #define CONTROLLER_Q31_SHIFT (32 - 9)
360 #define TABLE_SPACING_Q31 0x400000
361 #define TABLE_SPACING_Q15 0x80
368 #define INPUT_SPACING 0xB60B61
421 #if defined ( __CC_ARM )
422 #define __SIMD32_TYPE int32_t __packed
423 #elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
424 #define __SIMD32_TYPE int32_t
425 #elif defined ( __GNUC__ )
426 #define __SIMD32_TYPE int32_t
427 #elif defined ( __ICCARM__ )
428 #define __SIMD32_TYPE int32_t __packed
429 #elif defined ( __TI_ARM__ )
430 #define __SIMD32_TYPE int32_t
431 #elif defined ( __CSMC__ )
432 #define __SIMD32_TYPE int32_t
433 #elif defined ( __TASKING__ )
434 #define __SIMD32_TYPE __un(aligned) int32_t
435 #elif defined(_MSC_VER )
436 #define __SIMD32_TYPE int32_t
438 #error Unknown compiler
441 #define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr))
442 #define __SIMD32_CONST(addr) ( (__SIMD32_TYPE * ) (addr))
443 #define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE * ) (addr))
444 #define __SIMD64(addr) (*( int64_t **) & (addr))
459 memcpy (&val, pQ15, 4);
474 memcpy (&val, *pQ15, 4);
490 memcpy (&val, *pQ15, 4);
508 memcpy (*pQ15, &val, 4);
524 memcpy (pQ15, &val, 4);
538 memcpy (&val, *pQ7, 4);
554 memcpy (&val, *pQ7, 4);
572 memcpy (*pQ7, &val, 4);
589 #if defined ( _MSC_VER )
592 if (data == 0U) {
return 32U; }
595 uint32_t mask = 0x80000000U;
597 while ((data & mask) == 0U)
607 if ((
sat >= 1U) && (
sat <= 32U))
609 const int32_t max = (int32_t)((1U << (
sat - 1U)) - 1U);
610 const int32_t
min = -1 - max ;
627 const uint32_t max = ((1U <<
sat) - 1U);
628 if (val > (int32_t)max)
637 return (uint32_t)val;
645 #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \
646 (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) )
647 #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \
648 (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) )
654 #ifndef ARM_MATH_BIG_ENDIAN
655 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \
656 (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \
657 (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \
658 (((int32_t)(v3) << 24) & (int32_t)0xFF000000) )
660 #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \
661 (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \
662 (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \
663 (((int32_t)(v0) << 24) & (int32_t)0xFF000000) )
673 return ((
q31_t) (x >> 32) != ((
q31_t) x >> 31)) ?
674 ((0x7FFFFFFF ^ ((
q31_t) (x >> 63)))) : (
q31_t) x;
683 return ((
q31_t) (x >> 32) != ((
q31_t) x >> 31)) ?
684 ((0x7FFF ^ ((
q15_t) (x >> 63)))) : (
q15_t) (x >> 15);
693 return ((
q31_t) (x >> 24) != ((
q31_t) x >> 23)) ?
694 ((0x7F ^ ((
q7_t) (x >> 31)))) : (
q7_t) x;
703 return ((
q31_t) (x >> 16) != ((
q31_t) x >> 15)) ?
714 return ((((
q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) +
715 (((
q63_t) (x >> 32) * y) ) );
724 const q31_t * pRecipTable)
733 signBits = ((uint32_t) (
__CLZ( in) - 1));
737 signBits = ((uint32_t) (
__CLZ(-in) - 1));
741 in = (in << signBits);
744 index = (uint32_t)(in >> 24);
748 out = pRecipTable[index];
752 for (i = 0U; i < 2U; i++)
754 tempVal = (uint32_t) (((
q63_t) in * out) >> 31);
755 tempVal = 0x7FFFFFFFu - tempVal;
765 return (signBits + 1U);
775 const q15_t * pRecipTable)
778 uint32_t tempVal = 0;
779 uint32_t index = 0, i = 0;
780 uint32_t signBits = 0;
784 signBits = ((uint32_t)(
__CLZ( in) - 17));
788 signBits = ((uint32_t)(
__CLZ(-in) - 17));
792 in = (in << signBits);
795 index = (uint32_t)(in >> 8);
799 out = pRecipTable[index];
803 for (i = 0U; i < 2U; i++)
805 tempVal = (uint32_t) (((
q31_t) in * out) >> 15);
806 tempVal = 0x7FFFu - tempVal;
808 out = (
q15_t) (((
q31_t) out * tempVal) >> 14);
816 return (signBits + 1);
819 #if defined(ARM_MATH_NEON)
821 static inline float32x4_t __arm_vec_sqrt_f32_neon(float32x4_t x)
823 float32x4_t x1 = vmaxq_f32(x, vdupq_n_f32(FLT_MIN));
824 float32x4_t e = vrsqrteq_f32(x1);
825 e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e);
826 e = vmulq_f32(vrsqrtsq_f32(vmulq_f32(x1, e), e), e);
827 return vmulq_f32(x, e);
830 static inline int16x8_t __arm_vec_sqrt_q15_neon(int16x8_t vec)
833 int32x4_t tempHI,tempLO;
835 tempLO = vmovl_s16(vget_low_s16(vec));
836 tempF = vcvtq_n_f32_s32(tempLO,15);
837 tempF = __arm_vec_sqrt_f32_neon(tempF);
838 tempLO = vcvtq_n_s32_f32(tempF,15);
840 tempHI = vmovl_s16(vget_high_s16(vec));
841 tempF = vcvtq_n_f32_s32(tempHI,15);
842 tempF = __arm_vec_sqrt_f32_neon(tempF);
843 tempHI = vcvtq_n_s32_f32(tempF,15);
845 return(vcombine_s16(vqmovn_s32(tempLO),vqmovn_s32(tempHI)));
848 static inline int32x4_t __arm_vec_sqrt_q31_neon(int32x4_t vec)
852 temp = vcvtq_n_f32_s32(vec,31);
853 temp = __arm_vec_sqrt_f32_neon(temp);
854 return(vcvtq_n_s32_f32(temp,31));
862 #if !defined (ARM_MATH_DSP)
873 r =
__SSAT(((((
q31_t)x << 24) >> 24) + (((
q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
874 s =
__SSAT(((((
q31_t)x << 16) >> 24) + (((
q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
875 t =
__SSAT(((((
q31_t)x << 8) >> 24) + (((
q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
876 u =
__SSAT(((((
q31_t)x ) >> 24) + (((
q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
878 return ((uint32_t)((u << 24) | (t << 16) | (
s << 8) | (r )));
891 r =
__SSAT(((((
q31_t)x << 24) >> 24) - (((
q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF;
892 s =
__SSAT(((((
q31_t)x << 16) >> 24) - (((
q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF;
893 t =
__SSAT(((((
q31_t)x << 8) >> 24) - (((
q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF;
894 u =
__SSAT(((((
q31_t)x ) >> 24) - (((
q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF;
896 return ((uint32_t)((u << 24) | (t << 16) | (
s << 8) | (r )));
910 r =
__SSAT(((((
q31_t)x << 16) >> 16) + (((
q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
911 s =
__SSAT(((((
q31_t)x ) >> 16) + (((
q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
913 return ((uint32_t)((
s << 16) | (r )));
926 r = (((((
q31_t)x << 16) >> 16) + (((
q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
927 s = (((((
q31_t)x ) >> 16) + (((
q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
929 return ((uint32_t)((
s << 16) | (r )));
942 r =
__SSAT(((((
q31_t)x << 16) >> 16) - (((
q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
943 s =
__SSAT(((((
q31_t)x ) >> 16) - (((
q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
945 return ((uint32_t)((
s << 16) | (r )));
958 r = (((((
q31_t)x << 16) >> 16) - (((
q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
959 s = (((((
q31_t)x ) >> 16) - (((
q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
961 return ((uint32_t)((
s << 16) | (r )));
974 r =
__SSAT(((((
q31_t)x << 16) >> 16) - (((
q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
975 s =
__SSAT(((((
q31_t)x ) >> 16) + (((
q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
977 return ((uint32_t)((
s << 16) | (r )));
990 r = (((((
q31_t)x << 16) >> 16) - (((
q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
991 s = (((((
q31_t)x ) >> 16) + (((
q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
993 return ((uint32_t)((
s << 16) | (r )));
1006 r =
__SSAT(((((
q31_t)x << 16) >> 16) + (((
q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF;
1007 s =
__SSAT(((((
q31_t)x ) >> 16) - (((
q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF;
1009 return ((uint32_t)((
s << 16) | (r )));
1022 r = (((((
q31_t)x << 16) >> 16) + (((
q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF;
1023 s = (((((
q31_t)x ) >> 16) - (((
q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF;
1025 return ((uint32_t)((
s << 16) | (r )));
1036 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y ) >> 16)) -
1037 ((((
q31_t)x ) >> 16) * (((
q31_t)y << 16) >> 16)) ));
1047 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y ) >> 16)) +
1048 ((((
q31_t)x ) >> 16) * (((
q31_t)y << 16) >> 16)) ));
1082 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y << 16) >> 16)) +
1083 ((((
q31_t)x ) >> 16) * (((
q31_t)y ) >> 16)) +
1084 ( ((
q31_t)sum ) ) ));
1096 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y ) >> 16)) +
1097 ((((
q31_t)x ) >> 16) * (((
q31_t)y << 16) >> 16)) +
1098 ( ((
q31_t)sum ) ) ));
1110 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y ) >> 16)) -
1111 ((((
q31_t)x ) >> 16) * (((
q31_t)y << 16) >> 16)) +
1112 ( ((
q31_t)sum ) ) ));
1125 return ((uint64_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y << 16) >> 16)) +
1126 ((((
q31_t)x ) >> 16) * (((
q31_t)y ) >> 16)) +
1127 ( ((
q63_t)sum ) ) ));
1140 return ((uint64_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y ) >> 16)) +
1141 ((((
q31_t)x ) >> 16) * (((
q31_t)y << 16) >> 16)) +
1142 ( ((
q63_t)sum ) ) ));
1153 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y << 16) >> 16)) +
1154 ((((
q31_t)x ) >> 16) * (((
q31_t)y ) >> 16)) ));
1165 return ((uint32_t)(((((
q31_t)x << 16) >> 16) * (((
q31_t)y << 16) >> 16)) -
1166 ((((
q31_t)x ) >> 16) * (((
q31_t)y ) >> 16)) ));
1176 return ((uint32_t)(((((
q31_t)x << 24) >> 24) & (
q31_t)0x0000FFFF) |
1177 ((((
q31_t)x << 8) >> 8) & (
q31_t)0xFFFF0000) ));
1188 return (sum + (int32_t) (((int64_t) x * y) >> 32));
1245 uint32_t blockSize);
1258 const q7_t * pCoeffs,
1260 uint32_t blockSize);
1273 uint32_t blockSize);
1286 uint32_t blockSize);
1302 const q15_t * pCoeffs,
1304 uint32_t blockSize);
1317 uint32_t blockSize);
1330 uint32_t blockSize);
1343 const q31_t * pCoeffs,
1345 uint32_t blockSize);
1358 uint32_t blockSize);
1373 uint32_t blockSize);
1418 uint32_t blockSize);
1431 const q15_t * pCoeffs,
1446 uint32_t blockSize);
1459 uint32_t blockSize);
1472 uint32_t blockSize);
1485 const q31_t * pCoeffs,
1500 uint32_t blockSize);
1865 #if !defined (ARM_MATH_DSP)
1914 int32_t resetStateFlag);
1932 int32_t resetStateFlag);
1951 int32_t resetStateFlag);
2025 uint32_t blockSize);
2036 const q15_t * pSrcA,
2037 const q15_t * pSrcB,
2039 uint32_t blockSize);
2050 const q31_t * pSrcA,
2051 const q31_t * pSrcB,
2053 uint32_t blockSize);
2067 uint32_t blockSize);
2089 uint8_t bitReverseFlag);
2116 uint8_t bitReverseFlag);
2142 uint8_t bitReverseFlag);
2173 uint8_t bitReverseFlag);
2195 uint8_t bitReverseFlag);
2222 uint8_t bitReverseFlag);
2244 uint8_t bitReverseFlag);
2261 uint8_t bitReverseFlag);
2278 uint8_t bitReverseFlag);
2296 uint32_t fftLenReal,
2298 uint32_t bitReverseFlag);
2321 uint32_t fftLenReal,
2323 uint32_t bitReverseFlag);
2348 uint32_t fftLenReal,
2350 uint32_t bitReverseFlag);
2482 q31_t * pInlineBuffer);
2528 q15_t * pInlineBuffer);
2542 uint32_t blockSize);
2556 uint32_t blockSize);
2567 const q15_t * pSrcA,
2568 const q15_t * pSrcB,
2570 uint32_t blockSize);
2581 const q31_t * pSrcA,
2582 const q31_t * pSrcB,
2584 uint32_t blockSize);
2598 uint32_t blockSize);
2612 uint32_t blockSize);
2623 const q15_t * pSrcA,
2624 const q15_t * pSrcB,
2626 uint32_t blockSize);
2637 const q31_t * pSrcA,
2638 const q31_t * pSrcB,
2640 uint32_t blockSize);
2654 uint32_t blockSize);
2670 uint32_t blockSize);
2686 uint32_t blockSize);
2702 uint32_t blockSize);
2714 uint32_t blockSize);
2726 uint32_t blockSize);
2738 uint32_t blockSize);
2750 uint32_t blockSize);
2789 const q15_t * pSrcA,
2790 const q15_t * pSrcB,
2803 const q31_t * pSrcA,
2804 const q31_t * pSrcB,
2820 uint32_t blockSize);
2834 uint32_t blockSize);
2848 uint32_t blockSize);
2862 uint32_t blockSize);
2876 uint32_t blockSize);
2890 uint32_t blockSize);
2904 uint32_t blockSize);
2916 uint32_t blockSize);
2928 uint32_t blockSize);
2940 uint32_t blockSize);
2952 uint32_t blockSize);
2964 uint32_t blockSize);
2976 uint32_t blockSize);
2988 uint32_t blockSize);
3000 uint32_t blockSize);
3012 uint32_t blockSize);
3024 uint32_t blockSize);
3036 uint32_t blockSize);
3048 uint32_t blockSize);
3078 const q15_t * pSrcA,
3080 const q15_t * pSrcB,
3096 const q15_t * pSrcA,
3098 const q15_t * pSrcB,
3112 const q15_t * pSrcA,
3114 const q15_t * pSrcB,
3130 const q15_t * pSrcA,
3132 const q15_t * pSrcB,
3148 const q31_t * pSrcA,
3150 const q31_t * pSrcB,
3164 const q31_t * pSrcA,
3166 const q31_t * pSrcB,
3224 uint32_t firstIndex,
3225 uint32_t numPoints);
3242 const q15_t * pSrcA,
3244 const q15_t * pSrcB,
3247 uint32_t firstIndex,
3265 const q15_t * pSrcA,
3267 const q15_t * pSrcB,
3270 uint32_t firstIndex,
3271 uint32_t numPoints);
3286 const q15_t * pSrcA,
3288 const q15_t * pSrcB,
3291 uint32_t firstIndex,
3292 uint32_t numPoints);
3309 const q15_t * pSrcA,
3311 const q15_t * pSrcB,
3314 uint32_t firstIndex,
3332 const q31_t * pSrcA,
3334 const q31_t * pSrcB,
3337 uint32_t firstIndex,
3338 uint32_t numPoints);
3353 const q31_t * pSrcA,
3355 const q31_t * pSrcB,
3358 uint32_t firstIndex,
3359 uint32_t numPoints);
3381 uint32_t firstIndex,
3404 uint32_t firstIndex,
3405 uint32_t numPoints);
3453 uint32_t blockSize);
3474 uint32_t blockSize);
3488 uint32_t blockSize);
3502 uint32_t blockSize);
3520 const q15_t * pCoeffs,
3522 uint32_t blockSize);
3536 uint32_t blockSize);
3549 uint32_t blockSize);
3567 const q31_t * pCoeffs,
3569 uint32_t blockSize);
3617 uint32_t blockSize);
3635 const q15_t * pCoeffs,
3637 uint32_t blockSize);
3651 uint32_t blockSize);
3669 const q31_t * pCoeffs,
3671 uint32_t blockSize);
3685 uint32_t blockSize);
3705 uint32_t blockSize);
3730 uint32_t blockSize);
3743 const q31_t * pCoeffs,
3790 uint32_t blockSize);
3804 uint32_t blockSize);
3818 uint32_t blockSize);
3821 #if defined(ARM_MATH_NEON)
3822 void arm_biquad_cascade_df2T_compute_coefs_f32(
3910 const q15_t * pCoeffs,
3925 uint32_t blockSize);
3938 const q31_t * pCoeffs,
3953 uint32_t blockSize);
3981 uint32_t blockSize);
4029 uint32_t blockSize);
4047 uint32_t blockSize);
4061 uint32_t blockSize);
4079 uint32_t blockSize);
4093 uint32_t blockSize);
4111 uint32_t blockSize);
4141 uint32_t blockSize);
4159 uint32_t blockSize);
4192 uint32_t postShift);
4210 uint32_t blockSize);
4241 uint32_t blockSize);
4261 uint32_t postShift);
4293 uint32_t blockSize);
4311 uint32_t blockSize);
4345 uint32_t blockSize);
4399 uint32_t blockSize);
4448 const q15_t * pSrcA,
4450 const q15_t * pSrcB,
4465 const q15_t * pSrcA,
4467 const q15_t * pSrcB,
4482 const q15_t * pSrcA,
4484 const q15_t * pSrcB,
4499 const q15_t * pSrcA,
4501 const q15_t * pSrcB,
4516 const q31_t * pSrcA,
4518 const q31_t * pSrcB,
4532 const q31_t * pSrcA,
4534 const q31_t * pSrcB,
4641 uint32_t blockSize);
4659 int32_t * pTapDelay,
4661 uint32_t blockSize);
4677 uint32_t blockSize);
4693 const q31_t * pCoeffs,
4695 int32_t * pTapDelay,
4697 uint32_t blockSize);
4714 q31_t * pScratchOut,
4715 uint32_t blockSize);
4731 const q15_t * pCoeffs,
4733 int32_t * pTapDelay,
4735 uint32_t blockSize);
4752 q31_t * pScratchOut,
4753 uint32_t blockSize);
4769 const q7_t * pCoeffs,
4771 int32_t * pTapDelay,
4773 uint32_t blockSize);
4809 uint32_t numSamples);
4820 uint32_t numSamples);
4832 uint32_t numSamples);
4844 uint32_t numSamples);
4856 uint32_t numSamples);
4868 uint32_t numSamples);
4951 out = (S->
A0 * in) +
4994 out = (
q31_t) (acc >> 31U);
5030 #if defined (ARM_MATH_DSP)
5165 q31_t product1, product2;
5171 product1 = (
q31_t) (((
q63_t) Ia * 0x24F34E8B) >> 30);
5174 product2 = (
q31_t) (((
q63_t) Ib * 0x49E69D16) >> 30);
5177 *pIbeta =
__QADD(product1, product2);
5228 *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta;
5251 q31_t product1, product2;
5257 product1 = (
q31_t) (((
q63_t) (Ialpha) * (0x40000000)) >> 31);
5260 product2 = (
q31_t) (((
q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31);
5263 *pIb =
__QSUB(product2, product1);
5327 *pId = Ialpha * cosVal + Ibeta * sinVal;
5330 *pIq = -Ialpha * sinVal + Ibeta * cosVal;
5357 q31_t product1, product2;
5358 q31_t product3, product4;
5361 product1 = (
q31_t) (((
q63_t) (Ialpha) * (cosVal)) >> 31);
5364 product2 = (
q31_t) (((
q63_t) (Ibeta) * (sinVal)) >> 31);
5368 product3 = (
q31_t) (((
q63_t) (Ialpha) * (sinVal)) >> 31);
5371 product4 = (
q31_t) (((
q63_t) (Ibeta) * (cosVal)) >> 31);
5374 *pId =
__QADD(product1, product2);
5377 *pIq =
__QSUB(product4, product3);
5430 *pIalpha = Id * cosVal - Iq * sinVal;
5433 *pIbeta = Id * sinVal + Iq * cosVal;
5460 q31_t product1, product2;
5461 q31_t product3, product4;
5464 product1 = (
q31_t) (((
q63_t) (Id) * (cosVal)) >> 31);
5467 product2 = (
q31_t) (((
q63_t) (Iq) * (sinVal)) >> 31);
5471 product3 = (
q31_t) (((
q63_t) (Id) * (sinVal)) >> 31);
5474 product4 = (
q31_t) (((
q63_t) (Iq) * (cosVal)) >> 31);
5477 *pIalpha =
__QSUB(product1, product2);
5480 *pIbeta =
__QADD(product4, product3);
5548 i = (int32_t) ((x - S->
x1) / xSpacing);
5555 else if ((uint32_t)i >= S->
nValues)
5563 x0 = S->
x1 + i * xSpacing;
5564 x1 = S->
x1 + (i + 1) * xSpacing;
5571 y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0));
5606 index = ((x & (
q31_t)0xFFF00000) >> 20);
5608 if (index >= (int32_t)(nValues - 1))
5610 return (pYData[nValues - 1]);
5620 fract = (x & 0x000FFFFF) << 11;
5624 y1 = pYData[index + 1];
5627 y = ((
q31_t) ((
q63_t) y0 * (0x7FFFFFFF - fract) >> 32));
5664 index = ((x & (int32_t)0xFFF00000) >> 20);
5666 if (index >= (int32_t)(nValues - 1))
5668 return (pYData[nValues - 1]);
5678 fract = (x & 0x000FFFFF);
5682 y1 = pYData[index + 1];
5685 y = ((
q63_t) y0 * (0xFFFFF - fract));
5688 y += ((
q63_t) y1 * (fract));
5691 return (
q15_t) (y >> 20);
5725 index = (x >> 20) & 0xfff;
5727 if (index >= (nValues - 1))
5729 return (pYData[nValues - 1]);
5735 fract = (x & 0x000FFFFF);
5739 y1 = pYData[index + 1];
5742 y = ((y0 * (0xFFFFF - fract)));
5748 return (
q7_t) (y >> 20);
5855 #if defined ( __CC_ARM )
5856 #if defined __TARGET_FPU_VFP
5857 *pOut = __sqrtf(in);
5862 #elif defined ( __ICCARM__ )
5863 #if defined __ARMVFP__
5864 __ASM(
"VSQRT.F32 %0,%1" :
"=t"(*pOut) :
"t"(in));
5940 int32_t * circBuffer,
5942 uint16_t * writeOffset,
5944 const int32_t * src,
5953 wOffset = *writeOffset;
5961 circBuffer[wOffset] = *src;
5967 wOffset += bufferInc;
5976 *writeOffset = (uint16_t)wOffset;
5985 int32_t * circBuffer,
5987 int32_t * readOffset,
6001 rOffset = *readOffset;
6002 dst_end = dst_base + dst_length;
6010 *dst = circBuffer[rOffset];
6021 rOffset += bufferInc;
6033 *readOffset = rOffset;
6043 uint16_t * writeOffset,
6054 wOffset = *writeOffset;
6062 circBuffer[wOffset] = *src;
6068 wOffset += bufferInc;
6077 *writeOffset = (uint16_t)wOffset;
6087 int32_t * readOffset,
6101 rOffset = *readOffset;
6103 dst_end = dst_base + dst_length;
6111 *dst = circBuffer[rOffset];
6122 rOffset += bufferInc;
6134 *readOffset = rOffset;
6144 uint16_t * writeOffset,
6155 wOffset = *writeOffset;
6163 circBuffer[wOffset] = *src;
6169 wOffset += bufferInc;
6178 *writeOffset = (uint16_t)wOffset;
6188 int32_t * readOffset,
6202 rOffset = *readOffset;
6204 dst_end = dst_base + dst_length;
6212 *dst = circBuffer[rOffset];
6223 rOffset += bufferInc;
6235 *readOffset = rOffset;
6452 uint32_t numSamples);
6464 uint32_t numSamples);
6476 uint32_t numSamples);
6488 const q15_t * pSrcA,
6489 const q15_t * pSrcB,
6490 uint32_t numSamples,
6492 q31_t * imagResult);
6504 const q31_t * pSrcA,
6505 const q31_t * pSrcB,
6506 uint32_t numSamples,
6508 q63_t * imagResult);
6522 uint32_t numSamples,
6535 const q15_t * pSrcCmplx,
6536 const q15_t * pSrcReal,
6538 uint32_t numSamples);
6549 const q31_t * pSrcCmplx,
6550 const q31_t * pSrcReal,
6552 uint32_t numSamples);
6566 uint32_t numSamples);
6689 const q15_t * pSrcA,
6690 const q15_t * pSrcB,
6692 uint32_t numSamples);
6703 const q31_t * pSrcA,
6704 const q31_t * pSrcB,
6706 uint32_t numSamples);
6720 uint32_t numSamples);
6732 uint32_t blockSize);
6744 uint32_t blockSize);
6756 uint32_t blockSize);
6768 uint32_t blockSize);
6780 uint32_t blockSize);
6792 uint32_t blockSize);
6804 uint32_t blockSize);
6816 uint32_t blockSize);
6828 uint32_t blockSize);
6840 uint32_t blockSize);
6852 uint32_t blockSize);
6864 uint32_t blockSize);
6944 int32_t xIndex, yIndex, index;
6948 xIndex = (int32_t) X;
6949 yIndex = (int32_t) Y;
6953 if (xIndex < 0 || xIndex > (S->
numRows - 1) || yIndex < 0 || yIndex > (S->
numCols - 1))
6959 index = (xIndex - 1) + (yIndex - 1) * S->
numCols;
6964 f01 = pData[index + 1];
6967 index = (xIndex - 1) + (yIndex) * S->
numCols;
6972 f11 = pData[index + 1];
6978 b4 = f00 - f01 - f10 + f11;
6987 out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff;
7008 q31_t xfract, yfract;
7009 q31_t x1, x2, y1, y2;
7017 rI = ((X & (
q31_t)0xFFF00000) >> 20);
7022 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
7026 if (rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7033 xfract = (X & 0x000FFFFF) << 11U;
7036 x1 = pYData[(rI) + (int32_t)nCols * (cI) ];
7037 x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1];
7041 yfract = (Y & 0x000FFFFF) << 11U;
7044 y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ];
7045 y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1];
7048 out = ((
q31_t) (((
q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32));
7049 acc = ((
q31_t) (((
q63_t) out * (0x7FFFFFFF - yfract)) >> 32));
7052 out = ((
q31_t) ((
q63_t) x2 * (0x7FFFFFFF - yfract) >> 32));
7053 acc += ((
q31_t) ((
q63_t) out * (xfract) >> 32));
7056 out = ((
q31_t) ((
q63_t) y1 * (0x7FFFFFFF - xfract) >> 32));
7057 acc += ((
q31_t) ((
q63_t) out * (yfract) >> 32));
7060 out = ((
q31_t) ((
q63_t) y2 * (xfract) >> 32));
7061 acc += ((
q31_t) ((
q63_t) out * (yfract) >> 32));
7064 return ((
q31_t)(acc << 2));
7082 q15_t x1, x2, y1, y2;
7083 q31_t xfract, yfract;
7091 rI = ((X & (
q31_t)0xFFF00000) >> 20);
7096 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
7100 if (rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7107 xfract = (X & 0x000FFFFF);
7110 x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
7111 x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
7115 yfract = (Y & 0x000FFFFF);
7118 y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
7119 y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
7125 out = (
q31_t) (((
q63_t) x1 * (0xFFFFF - xfract)) >> 4U);
7126 acc = ((
q63_t) out * (0xFFFFF - yfract));
7129 out = (
q31_t) (((
q63_t) x2 * (0xFFFFF - yfract)) >> 4U);
7130 acc += ((
q63_t) out * (xfract));
7133 out = (
q31_t) (((
q63_t) y1 * (0xFFFFF - xfract)) >> 4U);
7134 acc += ((
q63_t) out * (yfract));
7137 out = (
q31_t) (((
q63_t) y2 * (xfract)) >> 4U);
7138 acc += ((
q63_t) out * (yfract));
7142 return ((
q15_t)(acc >> 36));
7160 q31_t xfract, yfract;
7161 q7_t x1, x2, y1, y2;
7169 rI = ((X & (
q31_t)0xFFF00000) >> 20);
7174 cI = ((Y & (
q31_t)0xFFF00000) >> 20);
7178 if (rI < 0 || rI > (S->
numRows - 1) || cI < 0 || cI > (S->
numCols - 1))
7185 xfract = (X & (
q31_t)0x000FFFFF);
7188 x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ];
7189 x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1];
7193 yfract = (Y & (
q31_t)0x000FFFFF);
7196 y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ];
7197 y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1];
7200 out = ((x1 * (0xFFFFF - xfract)));
7201 acc = (((
q63_t) out * (0xFFFFF - yfract)));
7204 out = ((x2 * (0xFFFFF - yfract)));
7205 acc += (((
q63_t) out * (xfract)));
7208 out = ((y1 * (0xFFFFF - xfract)));
7209 acc += (((
q63_t) out * (yfract)));
7212 out = ((y2 * (yfract)));
7213 acc += (((
q63_t) out * (xfract)));
7216 return ((
q7_t)(acc >> 40));
7225 #define multAcc_32x32_keep32_R(a, x, y) \
7226 a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32)
7229 #define multSub_32x32_keep32_R(a, x, y) \
7230 a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32)
7233 #define mult_32x32_keep32_R(a, x, y) \
7234 a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32)
7237 #define multAcc_32x32_keep32(a, x, y) \
7238 a += (q31_t) (((q63_t) x * y) >> 32)
7241 #define multSub_32x32_keep32(a, x, y) \
7242 a -= (q31_t) (((q63_t) x * y) >> 32)
7245 #define mult_32x32_keep32(a, x, y) \
7246 a = (q31_t) (((q63_t) x * y ) >> 32)
7249 #if defined ( __CC_ARM )
7251 #if defined( __ARM_ARCH_7EM__ )
7252 #define LOW_OPTIMIZATION_ENTER \
7256 #define LOW_OPTIMIZATION_ENTER
7260 #if defined ( __ARM_ARCH_7EM__ )
7261 #define LOW_OPTIMIZATION_EXIT \
7264 #define LOW_OPTIMIZATION_EXIT
7268 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7271 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7273 #elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
7274 #define LOW_OPTIMIZATION_ENTER
7275 #define LOW_OPTIMIZATION_EXIT
7276 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7277 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7279 #elif defined ( __GNUC__ )
7280 #define LOW_OPTIMIZATION_ENTER \
7281 __attribute__(( optimize("-O1") ))
7282 #define LOW_OPTIMIZATION_EXIT
7283 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7284 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7286 #elif defined ( __ICCARM__ )
7288 #if defined ( __ARM_ARCH_7EM__ )
7289 #define LOW_OPTIMIZATION_ENTER \
7290 _Pragma ("optimize=low")
7292 #define LOW_OPTIMIZATION_ENTER
7296 #define LOW_OPTIMIZATION_EXIT
7299 #if defined ( __ARM_ARCH_7EM__ )
7300 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \
7301 _Pragma ("optimize=low")
7303 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7307 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7309 #elif defined ( __TI_ARM__ )
7310 #define LOW_OPTIMIZATION_ENTER
7311 #define LOW_OPTIMIZATION_EXIT
7312 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7313 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7315 #elif defined ( __CSMC__ )
7316 #define LOW_OPTIMIZATION_ENTER
7317 #define LOW_OPTIMIZATION_EXIT
7318 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7319 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7321 #elif defined ( __TASKING__ )
7322 #define LOW_OPTIMIZATION_ENTER
7323 #define LOW_OPTIMIZATION_EXIT
7324 #define IAR_ONLY_LOW_OPTIMIZATION_ENTER
7325 #define IAR_ONLY_LOW_OPTIMIZATION_EXIT
7335 #if defined ( __CC_ARM )
7337 #elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 )
7339 #elif defined ( __GNUC__ )
7340 #pragma GCC diagnostic pop
7342 #elif defined ( __ICCARM__ )
7344 #elif defined ( __TI_ARM__ )
7346 #elif defined ( __CSMC__ )
7348 #elif defined ( __TASKING__ )
7350 #elif defined ( _MSC_VER )
7353 #error Unknown compiler
const uint16_t * pBitRevTable
Instance structure for the Q31 FIR filter.
void arm_scale_q15(const q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
Multiplies a Q15 vector by a scalar.
void arm_fir_decimate_q15(const arm_fir_decimate_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR decimator.
__STATIC_FORCEINLINE 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_negate_q15(const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Negates the elements of a Q15 vector.
Instance structure for the Q31 FIR interpolator.
void arm_lms_norm_f32(arm_lms_norm_instance_f32 *S, const 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_fir_lattice_init_f32(arm_fir_lattice_instance_f32 *S, uint16_t numStages, const float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point FIR lattice filter.
void arm_offset_q7(const q7_t *pSrc, q7_t offset, q7_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q7 vector.
void arm_cfft_radix2_f32(const arm_cfft_radix2_instance_f32 *S, float32_t *pSrc)
const uint16_t * pBitRevTable
arm_status arm_fir_interpolate_init_q31(arm_fir_interpolate_instance_q31 *S, uint8_t L, uint16_t numTaps, const q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR interpolator.
void arm_fill_f32(float32_t value, float32_t *pDst, uint32_t blockSize)
Fills a constant value into a floating-point vector.
double float64_t
64-bit floating-point type definition.
void arm_q31_to_q15(const q31_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q15 vector.
void arm_fir_interpolate_q31(const arm_fir_interpolate_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR interpolator.
const float32_t * pTwiddleBReal
arm_cfft_radix4_instance_q15 * pCfft
arm_status arm_rfft_32_fast_init_f32(arm_rfft_fast_instance_f32 *S)
float float32_t
32-bit floating-point type definition.
void arm_correlate_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Correlation of Q15 sequences.
void arm_max_q7(const q7_t *pSrc, uint32_t blockSize, q7_t *pResult, uint32_t *pIndex)
Maximum value of a Q7 vector.
Instance structure for the floating-point LMS filter.
arm_status arm_conv_partial_fast_q15(const q15_t *pSrcA, uint32_t srcALen, const 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_rms_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Root Mean Square of the elements of a floating-point vector.
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_dot_prod_q7(const q7_t *pSrcA, const q7_t *pSrcB, uint32_t blockSize, q31_t *result)
Dot product of Q7 vectors.
__STATIC_FORCEINLINE uint32_t arm_recip_q31(q31_t in, q31_t *dst, const q31_t *pRecipTable)
Function to Calculates 1/in (reciprocal) value of Q31 Data type.
const uint16_t * pBitRevTable
void arm_mean_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Mean value of a floating-point vector.
__STATIC_FORCEINLINE uint64_t __SMLALDX(uint32_t x, uint32_t y, uint64_t sum)
void arm_pid_init_q31(arm_pid_instance_q31 *S, int32_t resetStateFlag)
Initialization function for the Q31 PID Control.
void arm_vsqrt_f32(float32_t *pIn, float32_t *pOut, uint16_t len)
Vector Floating-point square root function.
void arm_fir_sparse_q15(arm_fir_sparse_instance_q15 *S, const 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_cmplx_mult_cmplx_q15(const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
Q15 complex-by-complex multiplication.
int64_t q63_t
64-bit fractional data type in 1.63 format.
Instance structure for the floating-point FIR lattice filter.
void arm_biquad_cascade_df1_f32(const arm_biquad_casd_df1_inst_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point Biquad cascade filter.
__STATIC_FORCEINLINE 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.
Instance structure for the floating-point IIR lattice filter.
void arm_lms_f32(const arm_lms_instance_f32 *S, const float32_t *pSrc, float32_t *pRef, float32_t *pOut, float32_t *pErr, uint32_t blockSize)
Processing function for floating-point LMS filter.
Instance structure for the fixed-point CFFT/CIFFT function.
void arm_correlate_fast_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Correlation of Q15 sequences (fast version).
void arm_max_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
Maximum value of a Q15 vector.
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_mult_f32(const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector multiplication.
Instance structure for the Q15 sparse FIR filter.
CMSIS compiler generic header file.
__STATIC_FORCEINLINE uint32_t __SMUADX(uint32_t x, uint32_t y)
q31_t arm_sin_q31(q31_t x)
Fast approximation to the trigonometric sine function for Q31 data.
void arm_cfft_radix4_q31(const arm_cfft_radix4_instance_q31 *S, q31_t *pSrc)
const uint16_t * pBitRevTable
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.
arm_status arm_rfft_1024_fast_init_f32(arm_rfft_fast_instance_f32 *S)
void arm_fir_fast_q31(const arm_fir_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the fast Q31 FIR filter (fast version).
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.
__STATIC_FORCEINLINE uint32_t arm_recip_q15(q15_t in, q15_t *dst, const q15_t *pRecipTable)
Function to Calculates 1/in (reciprocal) value of Q15 Data type.
__STATIC_FORCEINLINE uint32_t __SMUSD(uint32_t x, uint32_t y)
Instance structure for the Q15 PID Control.
void arm_fir_decimate_fast_q15(const arm_fir_decimate_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
__STATIC_FORCEINLINE void write_q15x2(q15_t *pQ15, q31_t value)
Write 2 Q15 to Q15 pointer.
arm_status arm_mat_trans_q15(const arm_matrix_instance_q15 *pSrc, arm_matrix_instance_q15 *pDst)
Q15 matrix transpose.
arm_status arm_cfft_radix2_init_q15(arm_cfft_radix2_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
__STATIC_FORCEINLINE 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.
void arm_mat_init_f32(arm_matrix_instance_f32 *S, uint16_t nRows, uint16_t nColumns, float32_t *pData)
Floating-point matrix initialization.
arm_status arm_rfft_128_fast_init_f32(arm_rfft_fast_instance_f32 *S)
__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
Count leading zeros.
void arm_fir_init_q7(arm_fir_instance_q7 *S, uint16_t numTaps, const q7_t *pCoeffs, q7_t *pState, uint32_t blockSize)
Initialization function for the Q7 FIR filter.
__STATIC_FORCEINLINE q7_t arm_bilinear_interp_q7(arm_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)
Q7 bilinear interpolation.
__STATIC_FORCEINLINE void arm_inv_clarke_q31(q31_t Ialpha, q31_t Ibeta, q31_t *pIa, q31_t *pIb)
Inverse Clarke transform for Q31 version.
void arm_shift_q31(const q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize)
Shifts the elements of a Q31 vector a specified number of bits.
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.
__STATIC_FORCEINLINE uint32_t __QASX(uint32_t x, uint32_t y)
__STATIC_FORCEINLINE float32_t arm_pid_f32(arm_pid_instance_f32 *S, float32_t in)
Process function for the floating-point PID Control.
void arm_conv_fast_q31(const q31_t *pSrcA, uint32_t srcALen, const q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4.
const q31_t * pTwiddleAReal
__STATIC_FORCEINLINE q31_t arm_linear_interp_q31(q31_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q31 Linear Interpolation 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.
const float32_t * pTwiddleRFFT
const float32_t * pCoeffs
void arm_q7_to_q15(const 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_q31(const arm_matrix_instance_q31 *pSrcA, const arm_matrix_instance_q31 *pSrcB, arm_matrix_instance_q31 *pDst)
Q31, complex, matrix multiplication.
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_cmplx_dot_prod_q31(const q31_t *pSrcA, const q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult)
Q31 complex dot product.
void arm_biquad_cascade_df2T_init_f32(arm_biquad_cascade_df2T_instance_f32 *S, uint8_t numStages, const float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point transposed direct form II Biquad cascade filter.
arm_status arm_mat_inverse_f32(const arm_matrix_instance_f32 *src, arm_matrix_instance_f32 *dst)
Floating-point matrix inverse.
void arm_fir_fast_q15(const arm_fir_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the fast Q15 FIR filter (fast version).
void arm_rfft_f32(const arm_rfft_instance_f32 *S, float32_t *pSrc, float32_t *pDst)
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_lms_q31(const arm_lms_instance_q31 *S, const 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 floating-point RFFT/RIFFT function.
Instance structure for the Q15 matrix structure.
void arm_shift_q7(const q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize)
Shifts the elements of a Q7 vector a specified number of bits.
__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t x, uint32_t y)
void arm_mult_q7(const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector multiplication.
arm_status arm_sqrt_q15(q15_t in, q15_t *pOut)
Q15 square root function.
void arm_cfft_radix2_q15(const arm_cfft_radix2_instance_q15 *S, q15_t *pSrc)
Instance structure for the floating-point Biquad cascade filter.
void arm_rfft_q15(const arm_rfft_instance_q15 *S, q15_t *pSrc, q15_t *pDst)
const q31_t * pTwiddleBReal
void arm_power_q7(const q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
Sum of the squares of the elements of a Q7 vector.
arm_status arm_cfft_radix2_init_q31(arm_cfft_radix2_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_fir_lattice_q15(const arm_fir_lattice_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR lattice filter.
void arm_std_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Standard deviation of the elements of a Q15 vector.
Instance structure for the floating-point transposed direct form II Biquad cascade filter.
void arm_scale_q7(const q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
Multiplies a Q7 vector by a scalar.
Instance structure for the Q15 FIR interpolator.
__STATIC_FORCEINLINE uint32_t __SMLADX(uint32_t x, uint32_t y, uint32_t sum)
void arm_abs_f32(const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Floating-point vector absolute value.
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_rfft_4096_fast_init_f32(arm_rfft_fast_instance_f32 *S)
__STATIC_FORCEINLINE q7_t arm_linear_interp_q7(q7_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q7 Linear Interpolation Function.
void arm_cmplx_mult_cmplx_q31(const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
Q31 complex-by-complex multiplication.
const float32_t * pCoeffs
__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t x, uint32_t y)
void arm_cmplx_mult_real_f32(const float32_t *pSrcCmplx, const float32_t *pSrcReal, float32_t *pCmplxDst, uint32_t numSamples)
Floating-point complex-by-real multiplication.
void arm_fir_lattice_q31(const arm_fir_lattice_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR lattice filter.
__STATIC_FORCEINLINE void arm_clarke_f32(float32_t Ia, float32_t Ib, float32_t *pIalpha, float32_t *pIbeta)
Floating-point Clarke transform.
Instance structure for the floating-point matrix structure.
void arm_biquad_cascade_df2T_f32(const arm_biquad_cascade_df2T_instance_f32 *S, const 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 floating-point matrix structure.
#define __STATIC_FORCEINLINE
void arm_fill_q7(q7_t value, q7_t *pDst, uint32_t blockSize)
Fills a constant value into a Q7 vector.
const float32_t * pTwiddle
Instance structure for the Q15 IIR lattice filter.
arm_status arm_fir_interpolate_init_q15(arm_fir_interpolate_instance_q15 *S, uint8_t L, uint16_t numTaps, const q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR interpolator.
Instance structure for the Q15 FIR lattice filter.
Instance structure for the floating-point transposed direct form II Biquad cascade filter.
void arm_float_to_q31(const float32_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q31 vector.
__STATIC_FORCEINLINE q31_t read_q7x4_ia(q7_t **pQ7)
Read 4 Q7 from Q7 pointer and increment pointer afterwards.
__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t x)
arm_cfft_instance_f32 Sint
__STATIC_FORCEINLINE 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.
arm_status arm_fir_decimate_init_q15(arm_fir_decimate_instance_q15 *S, uint16_t numTaps, uint8_t M, const q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR decimator.
void arm_mean_q7(const q7_t *pSrc, uint32_t blockSize, q7_t *pResult)
Mean value of a Q7 vector.
arm_status arm_sqrt_q31(q31_t in, q31_t *pOut)
Q31 square root function.
void arm_pid_init_f32(arm_pid_instance_f32 *S, int32_t resetStateFlag)
Initialization function for the floating-point PID Control.
arm_status arm_mat_inverse_f64(const arm_matrix_instance_f64 *src, arm_matrix_instance_f64 *dst)
Floating-point matrix inverse.
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_var_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Variance of the elements of a Q15 vector.
void arm_conv_q31(const q31_t *pSrcA, uint32_t srcALen, const q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Convolution of Q31 sequences.
Instance structure for the Q31 CFFT/CIFFT function.
void arm_pid_reset_f32(arm_pid_instance_f32 *S)
Reset function for the floating-point PID Control.
__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t x, uint32_t y)
const float32_t * pCosFactor
void arm_fir_lattice_init_q31(arm_fir_lattice_instance_q31 *S, uint16_t numStages, const q31_t *pCoeffs, q31_t *pState)
Initialization function for the Q31 FIR lattice filter.
void arm_sub_f32(const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector subtraction.
__STATIC_FORCEINLINE uint64_t __SMLALD(uint32_t x, uint32_t y, uint64_t sum)
arm_status arm_mat_trans_f32(const arm_matrix_instance_f32 *pSrc, arm_matrix_instance_f32 *pDst)
Floating-point matrix transpose.
Instance structure for the Q15 bilinear interpolation function.
void arm_max_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Maximum value of a floating-point vector.
void arm_correlate_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch)
Correlation of Q15 sequences.
void arm_cmplx_mult_real_q15(const q15_t *pSrcCmplx, const q15_t *pSrcReal, q15_t *pCmplxDst, uint32_t numSamples)
Q15 complex-by-real multiplication.
void arm_scale_q31(const q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
Multiplies a Q31 vector by a scalar.
Instance structure for the Q15 normalized LMS filter.
void arm_conv_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Convolution of Q15 sequences.
const uint16_t * pBitRevTable
void arm_biquad_cascade_df1_fast_q15(const arm_biquad_casd_df1_inst_q15 *S, const 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_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_cfft_radix4_f32(const arm_cfft_radix4_instance_f32 *S, float32_t *pSrc)
Instance structure for the floating-point Linear Interpolate function.
Instance structure for the Q31 sparse FIR filter.
void arm_fir_decimate_q31(const arm_fir_decimate_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR decimator.
arm_rfft_instance_q31 * pRfft
void arm_std_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Standard deviation of the elements of a Q31 vector.
__STATIC_FORCEINLINE int32_t __QSUB(int32_t x, int32_t y)
void arm_vsqrt_q31(q31_t *pIn, q31_t *pOut, uint16_t len)
__STATIC_FORCEINLINE q31_t arm_bilinear_interp_q31(arm_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)
Q31 bilinear interpolation.
arm_rfft_instance_f32 * pRfft
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.
arm_status arm_rfft_256_fast_init_f32(arm_rfft_fast_instance_f32 *S)
Instance structure for the Q31 PID Control.
void arm_copy_q31(const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Copies the elements of a Q31 vector.
__STATIC_FORCEINLINE void arm_inv_clarke_f32(float32_t Ialpha, float32_t Ibeta, float32_t *pIa, float32_t *pIb)
Floating-point Inverse Clarke transform.
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_cmplx_mag_q15(const q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude.
void arm_cmplx_mag_q31(const q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude.
void arm_dct4_f32(const arm_dct4_instance_f32 *S, float32_t *pState, float32_t *pInlineBuffer)
Processing function for the floating-point DCT4/IDCT4.
__STATIC_FORCEINLINE int32_t __SMMLA(int32_t x, int32_t y, int32_t sum)
void arm_power_q31(const q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q31 vector.
Instance structure for the floating-point 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_negate_f32(const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Negates the elements of a floating-point vector.
void arm_min_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult, uint32_t *pIndex)
Minimum value of a Q15 vector.
void arm_cmplx_mag_squared_f32(const float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude squared.
void arm_fir_lattice_init_q15(arm_fir_lattice_instance_q15 *S, uint16_t numStages, const q15_t *pCoeffs, q15_t *pState)
Initialization function for the Q15 FIR lattice filter.
void arm_mult_q15(const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector multiplication.
float32_t arm_sin_f32(float32_t x)
Fast approximation to the trigonometric sine function for floating-point data.
int32_t q31_t
32-bit fractional data type in 1.31 format.
Instance structure for floating-point FIR decimator.
void arm_dot_prod_f32(const float32_t *pSrcA, const float32_t *pSrcB, uint32_t blockSize, float32_t *result)
Dot product of floating-point vectors.
uint16_t twidCoefModifier
__STATIC_FORCEINLINE q31_t clip_q63_to_q31(q63_t x)
Clips Q63 to Q31 values.
const arm_cfft_instance_q15 * pCfft
const float32_t * pCoeffs
__STATIC_FORCEINLINE q31_t read_q7x4_da(q7_t **pQ7)
Read 4 Q7 from Q7 pointer and decrement pointer afterwards.
const float32_t * pTwiddle
void arm_fir_interpolate_q15(const arm_fir_interpolate_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR interpolator.
void arm_abs_q7(const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Q7 vector absolute value.
void arm_q31_to_float(const q31_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to floating-point vector.
__STATIC_FORCEINLINE 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.
arm_status arm_conv_partial_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q15 sequences.
void arm_biquad_cascade_df1_q15(const arm_biquad_casd_df1_inst_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 Biquad cascade filter.
uint32_t twidCoefRModifier
arm_status arm_cfft_radix4_init_q31(arm_cfft_radix4_instance_q31 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
Instance structure for the Q15 FIR decimator.
const arm_cfft_instance_q31 * pCfft
arm_status
Error status returned by some functions in the library.
Instance structure for the Q7 FIR filter.
float32_t arm_cos_f32(float32_t x)
Fast approximation to the trigonometric cosine function for floating-point data.
void arm_sub_q31(const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector subtraction.
void arm_var_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Variance of the elements of a floating-point vector.
arm_status arm_fir_init_q15(arm_fir_instance_q15 *S, uint16_t numTaps, const q15_t *pCoeffs, q15_t *pState, uint32_t blockSize)
Initialization function for the Q15 FIR filter.
void arm_iir_lattice_f32(const arm_iir_lattice_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point IIR lattice filter.
Instance structure for the Radix-2 Q31 CFFT/CIFFT function.
uint16_t twidCoefModifier
arm_status arm_cfft_radix4_init_f32(arm_cfft_radix4_instance_f32 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t x, uint32_t y)
void arm_iir_lattice_q31(const arm_iir_lattice_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 IIR lattice filter.
void arm_fir_init_f32(arm_fir_instance_f32 *S, uint16_t numTaps, const float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR filter.
const float32_t * pTwiddleAReal
void arm_conv_f32(const float32_t *pSrcA, uint32_t srcALen, const float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
Convolution of floating-point sequences.
const uint16_t * pBitRevTable
__STATIC_FORCEINLINE q31_t read_q15x2(q15_t *pQ15)
Read 2 Q15 from Q15 pointer.
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_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.
void arm_dot_prod_q31(const q31_t *pSrcA, const q31_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q31 vectors.
void arm_fir_f32(const arm_fir_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR filter.
Instance structure for the floating-point CFFT/CIFFT function.
void arm_cmplx_dot_prod_q15(const q15_t *pSrcA, const q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult)
Q15 complex dot product.
__STATIC_FORCEINLINE uint32_t __SMUSDX(uint32_t x, uint32_t y)
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.
Instance structure for the Q31 matrix structure.
void arm_rfft_q31(const arm_rfft_instance_q31 *S, q31_t *pSrc, q31_t *pDst)
void arm_fir_sparse_init_q31(arm_fir_sparse_instance_q31 *S, uint16_t numTaps, const 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_sparse_f32(arm_fir_sparse_instance_f32 *S, const 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)
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.
const float32_t * pCoeffs
void arm_copy_f32(const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Copies the elements of a floating-point vector.
void arm_iir_lattice_q15(const arm_iir_lattice_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 IIR lattice filter.
arm_rfft_instance_q15 * pRfft
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_fir_q15(const arm_fir_instance_q15 *S, const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Processing function for the Q15 FIR filter.
void arm_conv_fast_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4.
const q15_t * pTwiddleAReal
void arm_cmplx_conj_f32(const float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex conjugate.
void arm_fir_sparse_q7(arm_fir_sparse_instance_q7 *S, const 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_mag_squared_q15(const q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex magnitude squared.
void arm_q15_to_q7(const q15_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to Q7 vector.
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.
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_power_q15(const q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
Sum of the squares of the elements of a Q15 vector.
void arm_mult_q31(const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector multiplication.
__STATIC_FORCEINLINE 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.
const float32_t * pCoeffs
const uint16_t * pBitRevTable
void arm_fir_sparse_init_q15(arm_fir_sparse_instance_q15 *S, uint16_t numTaps, const 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_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.
__STATIC_FORCEINLINE void write_q7x4_ia(q7_t **pQ7, q31_t value)
Write 4 Q7 to Q7 pointer and increment pointer afterwards.
Instance structure for the Q31 DCT4/IDCT4 function.
arm_cfft_radix4_instance_f32 * pCfft
__STATIC_FORCEINLINE 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_conv_q7(const q7_t *pSrcA, uint32_t srcALen, const q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
Convolution of Q7 sequences.
__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t x, uint32_t y)
__STATIC_FORCEINLINE uint32_t __SMLAD(uint32_t x, uint32_t y, uint32_t sum)
void arm_conv_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst)
Convolution of Q15 sequences.
void arm_sin_cos_q31(q31_t theta, q31_t *pSinVal, q31_t *pCosVal)
Q31 sin_cos function.
void arm_correlate_q31(const q31_t *pSrcA, uint32_t srcALen, const q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Correlation of Q31 sequences.
void arm_lms_q15(const arm_lms_instance_q15 *S, const q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 LMS filter.
__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t x, uint32_t y)
Instance structure for the Q15 CFFT/CIFFT function.
void arm_min_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
Minimum value of a Q31 vector.
void arm_add_q15(const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector addition.
void arm_fir_sparse_q31(arm_fir_sparse_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, q31_t *pScratchIn, uint32_t blockSize)
Processing function for the Q31 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.
void arm_offset_f32(const float32_t *pSrc, float32_t offset, float32_t *pDst, uint32_t blockSize)
Adds a constant offset to a floating-point vector.
@ ARM_MATH_ARGUMENT_ERROR
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 Q15 DCT4/IDCT4 function.
void arm_fir_q31(const arm_fir_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR filter.
void arm_sin_cos_f32(float32_t theta, float32_t *pSinVal, float32_t *pCosVal)
Floating-point sin_cos function.
void arm_copy_q7(const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Copies the elements of a Q7 vector.
Instance structure for the Q31 normalized LMS filter.
Instance structure for the floating-point PID Control.
const float32_t * pCoeffs
Instance structure for the floating-point sparse FIR filter.
const uint16_t * pBitRevTable
Instance structure for the Q7 sparse FIR filter.
__STATIC_FORCEINLINE q31_t read_q15x2_ia(q15_t **pQ15)
Read 2 Q15 from Q15 pointer and increment pointer afterwards.
void arm_cfft_radix4_q15(const arm_cfft_radix4_instance_q15 *S, q15_t *pSrc)
Instance structure for the Q31 FIR decimator.
arm_status arm_mat_trans_q31(const arm_matrix_instance_q31 *pSrc, arm_matrix_instance_q31 *pDst)
Q31 matrix transpose.
void arm_biquad_cascade_df1_init_q31(arm_biquad_casd_df1_inst_q31 *S, uint8_t numStages, const q31_t *pCoeffs, q31_t *pState, int8_t postShift)
Initialization function for the Q31 Biquad cascade filter.
void arm_fir_sparse_init_q7(arm_fir_sparse_instance_q7 *S, uint16_t numTaps, const 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 bilinear interpolation function.
void arm_float_to_q7(const float32_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q7 vector.
int16_t q15_t
16-bit fractional data type in 1.15 format.
void arm_biquad_cascade_df1_init_q15(arm_biquad_casd_df1_inst_q15 *S, uint8_t numStages, const q15_t *pCoeffs, q15_t *pState, int8_t postShift)
Initialization function for the Q15 Biquad cascade filter.
const q15_t * pTwiddleBReal
arm_status arm_rfft_fast_init_f32(arm_rfft_fast_instance_f32 *S, uint16_t fftLen)
void arm_pid_reset_q15(arm_pid_instance_q15 *S)
Reset function for the Q15 PID Control.
void arm_max_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult, uint32_t *pIndex)
Maximum value of a Q31 vector.
const float32_t * pCoeffs
void arm_correlate_f32(const float32_t *pSrcA, uint32_t srcALen, const float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst)
Correlation of floating-point sequences.
Instance structure for the floating-point transposed direct form II Biquad cascade filter.
arm_cfft_radix4_instance_f32 * pCfft
void arm_cmplx_mag_squared_q31(const q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex magnitude squared.
Instance structure for the Q15 LMS filter.
const uint16_t * pBitRevTable
uint32_t twidCoefRModifier
arm_status arm_fir_interpolate_init_f32(arm_fir_interpolate_instance_f32 *S, uint8_t L, uint16_t numTaps, const float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR interpolator.
void arm_cmplx_mag_f32(const float32_t *pSrc, float32_t *pDst, uint32_t numSamples)
Floating-point complex magnitude.
void arm_std_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Standard deviation of the elements of a floating-point vector.
void arm_lms_norm_q31(arm_lms_norm_instance_q31 *S, const q31_t *pSrc, q31_t *pRef, q31_t *pOut, q31_t *pErr, uint32_t blockSize)
Processing function for Q31 normalized LMS filter.
uint16_t twidCoefModifier
void arm_cfft_radix2_q31(const arm_cfft_radix2_instance_q31 *S, q31_t *pSrc)
const float32_t * pTwiddle
void arm_cmplx_mult_cmplx_f32(const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
Floating-point complex-by-complex multiplication.
void arm_biquad_cascade_stereo_df2T_f32(const arm_biquad_cascade_stereo_df2T_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point transposed direct form II Biquad cascade filter....
void arm_biquad_cascade_stereo_df2T_init_f32(arm_biquad_cascade_stereo_df2T_instance_f32 *S, uint8_t numStages, const float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point transposed direct form II Biquad cascade filter.
__STATIC_FORCEINLINE 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.
void arm_biquad_cascade_df1_init_f32(arm_biquad_casd_df1_inst_f32 *S, uint8_t numStages, const float32_t *pCoeffs, float32_t *pState)
Initialization function for the floating-point Biquad cascade filter.
void arm_q15_to_float(const q15_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to floating-point vector.
Instance structure for the Q15 RFFT/RIFFT function.
void arm_dot_prod_q15(const q15_t *pSrcA, const q15_t *pSrcB, uint32_t blockSize, q63_t *result)
Dot product of Q15 vectors.
void arm_cfft_q15(const arm_cfft_instance_q15 *S, q15_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
Instance structure for the floating-point DCT4/IDCT4 function.
void arm_offset_q31(const q31_t *pSrc, q31_t offset, q31_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q31 vector.
uint16_t twidCoefModifier
Instance structure for the floating-point FIR filter.
void arm_min_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult, uint32_t *pIndex)
Minimum value of a floating-point vector.
__STATIC_FORCEINLINE q63_t mult32x64(q63_t x, q31_t y)
Multiplies 32 X 64 and returns 32 bit result in 2.30 format.
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.
arm_status arm_conv_partial_f32(const float32_t *pSrcA, uint32_t srcALen, const float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of floating-point sequences.
void arm_cmplx_dot_prod_f32(const float32_t *pSrcA, const float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult)
Floating-point complex dot product.
void arm_correlate_fast_q31(const q31_t *pSrcA, uint32_t srcALen, const q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst)
Correlation of Q31 sequences (fast version).
__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t x, uint32_t y)
Instance structure for the floating-point CFFT/CIFFT function.
const float32_t * pCoeffs
Instance structure for the Q15 FIR filter.
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.
__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t x, uint32_t y)
__STATIC_FORCEINLINE int32_t __QADD(int32_t x, int32_t y)
Instance structure for the high precision Q31 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)
__STATIC_FORCEINLINE q15_t arm_linear_interp_q15(q15_t *pYData, q31_t x, uint32_t nValues)
Process function for the Q15 Linear Interpolation Function.
void arm_var_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Variance of the elements of a Q31 vector.
q31_t arm_cos_q31(q31_t x)
Fast approximation to the trigonometric cosine function for Q31 data.
void arm_rfft_fast_f32(arm_rfft_fast_instance_f32 *S, float32_t *p, float32_t *pOut, uint8_t ifftFlag)
__STATIC_FORCEINLINE q15_t clip_q63_to_q15(q63_t x)
Clips Q63 to Q15 values.
Instance structure for the Q15 CFFT/CIFFT function.
void arm_rms_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Root Mean Square of the elements of a Q31 vector.
void arm_mean_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Mean value of a Q15 vector.
Instance structure for the Q31 RFFT/RIFFT function.
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.
arm_cfft_radix4_instance_q31 * pCfft
Instance structure for the Q31 IIR lattice filter.
Instance structure for the Q31 FIR lattice filter.
q15_t arm_sin_q15(q15_t x)
Fast approximation to the trigonometric sine function for Q15 data.
arm_status arm_fir_decimate_init_f32(arm_fir_decimate_instance_f32 *S, uint16_t numTaps, uint8_t M, const float32_t *pCoeffs, float32_t *pState, uint32_t blockSize)
Initialization function for the floating-point FIR decimator.
__STATIC_FORCEINLINE uint32_t __SMUAD(uint32_t x, uint32_t y)
__STATIC_FORCEINLINE q15_t arm_pid_q15(arm_pid_instance_q15 *S, q15_t in)
Process function for the Q15 PID Control.
void arm_abs_q31(const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Q31 vector absolute value.
void arm_add_f32(const float32_t *pSrcA, const float32_t *pSrcB, float32_t *pDst, uint32_t blockSize)
Floating-point vector addition.
__STATIC_FORCEINLINE q15_t arm_bilinear_interp_q15(arm_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)
Q15 bilinear interpolation.
void arm_biquad_cascade_df1_q31(const arm_biquad_casd_df1_inst_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 Biquad cascade filter.
void arm_fir_sparse_init_f32(arm_fir_sparse_instance_f32 *S, uint16_t numTaps, const 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_fir_q7(const arm_fir_instance_q7 *S, const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Processing function for the Q7 FIR filter.
void arm_negate_q31(const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Negates the elements of a Q31 vector.
arm_status arm_rfft_init_q15(arm_rfft_instance_q15 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
__STATIC_FORCEINLINE 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_scale_q31(const arm_matrix_instance_q31 *pSrc, q31_t scaleFract, int32_t shift, arm_matrix_instance_q31 *pDst)
Q31 matrix scaling.
arm_status arm_rfft_init_q31(arm_rfft_instance_q31 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag)
Instance structure for the floating-point CFFT/CIFFT function.
void arm_copy_q15(const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Copies the elements of a Q15 vector.
void arm_q7_to_q31(const q7_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to Q31 vector.
__STATIC_FORCEINLINE 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.
uint32_t twidCoefRModifier
arm_status arm_rfft_2048_fast_init_f32(arm_rfft_fast_instance_f32 *S)
void arm_correlate_opt_q7(const q7_t *pSrcA, uint32_t srcALen, const q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Correlation of Q7 sequences.
const float32_t * pTwiddle
q15_t arm_cos_q15(q15_t x)
Fast approximation to the trigonometric cosine function for Q15 data.
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_negate_q7(const q7_t *pSrc, q7_t *pDst, uint32_t blockSize)
Negates the elements of a Q7 vector.
__STATIC_FORCEINLINE void arm_clarke_q31(q31_t Ia, q31_t Ib, q31_t *pIalpha, q31_t *pIbeta)
Clarke transform for Q31 version.
arm_status arm_conv_partial_fast_q31(const q31_t *pSrcA, uint32_t srcALen, const 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_scale_f32(const float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
Multiplies a floating-point vector by a scalar.
arm_status arm_rfft_512_fast_init_f32(arm_rfft_fast_instance_f32 *S)
arm_status arm_rfft_64_fast_init_f32(arm_rfft_fast_instance_f32 *S)
void arm_q7_to_float(const q7_t *pSrc, float32_t *pDst, uint32_t blockSize)
Converts the elements of the Q7 vector to floating-point vector.
uint16_t twidCoefModifier
arm_status arm_conv_partial_opt_q7(const q7_t *pSrcA, uint32_t srcALen, const 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.
Instance structure for the floating-point bilinear interpolation function.
void arm_correlate_q7(const q7_t *pSrcA, uint32_t srcALen, const q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst)
Correlation of Q7 sequences.
void arm_sub_q15(const q15_t *pSrcA, const q15_t *pSrcB, q15_t *pDst, uint32_t blockSize)
Q15 vector subtraction.
void arm_float_to_q15(const float32_t *pSrc, q15_t *pDst, uint32_t blockSize)
Converts the elements of the floating-point vector to Q15 vector.
void arm_cmplx_conj_q31(const q31_t *pSrc, q31_t *pDst, uint32_t numSamples)
Q31 complex conjugate.
Instance structure for the fixed-point CFFT/CIFFT function.
void arm_pid_reset_q31(arm_pid_instance_q31 *S)
Reset function for the Q31 PID Control.
void arm_add_q31(const q31_t *pSrcA, const q31_t *pSrcB, q31_t *pDst, uint32_t blockSize)
Q31 vector addition.
void arm_conv_opt_q7(const q7_t *pSrcA, uint32_t srcALen, const q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, q15_t *pScratch1, q15_t *pScratch2)
Convolution of Q7 sequences.
__STATIC_FORCEINLINE 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.
Instance structure for the floating-point FIR interpolator.
void arm_rms_q15(const q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
Root Mean Square of the elements of a Q15 vector.
void arm_biquad_cascade_df1_fast_q31(const arm_biquad_casd_df1_inst_q31 *S, const 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-...
void arm_cmplx_conj_q15(const q15_t *pSrc, q15_t *pDst, uint32_t numSamples)
Q15 complex conjugate.
void arm_fir_decimate_f32(const arm_fir_decimate_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for floating-point FIR decimator.
void arm_fir_interpolate_f32(const arm_fir_interpolate_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR interpolator.
void arm_sub_q7(const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector subtraction.
void arm_abs_q15(const q15_t *pSrc, q15_t *pDst, uint32_t blockSize)
Q15 vector absolute value.
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.
arm_status arm_conv_partial_fast_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const 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.
Instance structure for the Q15 Biquad cascade filter.
void arm_q31_to_q7(const q31_t *pSrc, q7_t *pDst, uint32_t blockSize)
Converts the elements of the Q31 vector to Q7 vector.
void arm_correlate_fast_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, q15_t *pScratch)
Correlation of Q15 sequences (fast version).
__STATIC_FORCEINLINE q7_t clip_q31_to_q7(q31_t x)
Clips Q31 to Q7 values.
void arm_lms_norm_q15(arm_lms_norm_instance_q15 *S, const q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 normalized LMS filter.
__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
Signed Saturate.
void arm_q15_to_q31(const q15_t *pSrc, q31_t *pDst, uint32_t blockSize)
Converts the elements of the Q15 vector to Q31 vector.
int8_t q7_t
8-bit fractional data type in 1.7 format.
arm_status arm_fir_decimate_init_q31(arm_fir_decimate_instance_q31 *S, uint16_t numTaps, uint8_t M, const q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR decimator.
arm_status arm_conv_partial_q7(const q7_t *pSrcA, uint32_t srcALen, const q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q7 sequences.
void arm_cfft_q31(const arm_cfft_instance_q31 *S, q31_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_fir_init_q31(arm_fir_instance_q31 *S, uint16_t numTaps, const q31_t *pCoeffs, q31_t *pState, uint32_t blockSize)
Initialization function for the Q31 FIR filter.
Instance structure for the Q15 bilinear interpolation function.
void arm_fir_decimate_fast_q31(const arm_fir_decimate_instance_q31 *S, const q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4.
arm_status arm_conv_partial_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const 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.
Instance structure for the floating-point RFFT/RIFFT function.
void arm_fill_q15(q15_t value, q15_t *pDst, uint32_t blockSize)
Fills a constant value into a Q15 vector.
void arm_pid_init_q15(arm_pid_instance_q15 *S, int32_t resetStateFlag)
Initialization function for the Q15 PID Control.
void arm_mean_q31(const q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
Mean value of a Q31 vector.
void arm_biquad_cas_df1_32x64_init_q31(arm_biquad_cas_df1_32x64_ins_q31 *S, uint8_t numStages, const q31_t *pCoeffs, q63_t *pState, uint8_t postShift)
Instance structure for the Q31 Biquad cascade filter.
__STATIC_FORCEINLINE q31_t read_q15x2_da(q15_t **pQ15)
Read 2 Q15 from Q15 pointer and decrement pointer afterwards.
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_add_q7(const q7_t *pSrcA, const q7_t *pSrcB, q7_t *pDst, uint32_t blockSize)
Q7 vector addition.
void arm_offset_q15(const q15_t *pSrc, q15_t offset, q15_t *pDst, uint32_t blockSize)
Adds a constant offset to a Q15 vector.
void arm_vsqrt_q15(q15_t *pIn, q15_t *pOut, uint16_t len)
Instance structure for the Q31 LMS filter.
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_cfft_f32(const arm_cfft_instance_f32 *S, float32_t *p1, uint8_t ifftFlag, uint8_t bitReverseFlag)
void arm_mat_init_q31(arm_matrix_instance_q31 *S, uint16_t nRows, uint16_t nColumns, q31_t *pData)
Q31 matrix initialization.
__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
Unsigned Saturate.
void arm_cmplx_mult_real_q31(const q31_t *pSrcCmplx, const q31_t *pSrcReal, q31_t *pCmplxDst, uint32_t numSamples)
Q31 complex-by-real multiplication.
__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t x, uint32_t y)
void arm_power_f32(const float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
Sum of the squares of the elements of a floating-point vector.
arm_status arm_cfft_radix4_init_q15(arm_cfft_radix4_instance_q15 *S, uint16_t fftLen, uint8_t ifftFlag, uint8_t bitReverseFlag)
__STATIC_FORCEINLINE 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.
__STATIC_FORCEINLINE uint32_t __SMLSDX(uint32_t x, uint32_t y, uint32_t sum)
void arm_fir_lattice_f32(const arm_fir_lattice_instance_f32 *S, const float32_t *pSrc, float32_t *pDst, uint32_t blockSize)
Processing function for the floating-point FIR lattice filter.
__STATIC_FORCEINLINE void write_q15x2_ia(q15_t **pQ15, q31_t value)
Write 2 Q15 to Q15 pointer and increment pointer afterwards.
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_mat_init_q15(arm_matrix_instance_q15 *S, uint16_t nRows, uint16_t nColumns, q15_t *pData)
Q15 matrix initialization.
uint16_t twidCoefModifier
void arm_conv_fast_opt_q15(const q15_t *pSrcA, uint32_t srcALen, const 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.
__STATIC_FORCEINLINE q15_t clip_q31_to_q15(q31_t x)
Clips Q31 to Q15 values.
__STATIC_FORCEINLINE q31_t arm_pid_q31(arm_pid_instance_q31 *S, q31_t in)
Process function for the Q31 PID Control.
__STATIC_FORCEINLINE arm_status arm_sqrt_f32(float32_t in, float32_t *pOut)
Floating-point square root function.
void arm_fill_q31(q31_t value, q31_t *pDst, uint32_t blockSize)
Fills a constant value into a Q31 vector.
void arm_shift_q15(const 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_min_q7(const q7_t *pSrc, uint32_t blockSize, q7_t *result, uint32_t *index)
Minimum value of a Q7 vector.
arm_status arm_conv_partial_q31(const q31_t *pSrcA, uint32_t srcALen, const q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
Partial convolution of Q31 sequences.