Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 56 | mjames | 1 | |
| 2 | #ifndef _REF_H |
||
| 3 | #define _REF_H |
||
| 4 | |||
| 5 | #include <math.h> |
||
| 6 | #include <stdint.h> |
||
| 7 | #include "arm_math.h" |
||
| 8 | |||
| 9 | #ifdef __cplusplus |
||
| 10 | extern "C" |
||
| 11 | { |
||
| 12 | #endif |
||
| 13 | |||
| 14 | #ifndef PI |
||
| 15 | #define PI 3.14159265358979f |
||
| 16 | #endif |
||
| 17 | |||
| 18 | /** |
||
| 19 | * @brief 8-bit fractional data type in 1.7 format. |
||
| 20 | */ |
||
| 21 | // typedef int8_t q7_t; |
||
| 22 | |||
| 23 | /** |
||
| 24 | * @brief 16-bit fractional data type in 1.15 format. |
||
| 25 | */ |
||
| 26 | // typedef int16_t q15_t; |
||
| 27 | |||
| 28 | /** |
||
| 29 | * @brief 32-bit fractional data type in 1.31 format. |
||
| 30 | */ |
||
| 31 | // typedef int32_t q31_t; |
||
| 32 | |||
| 33 | /** |
||
| 34 | * @brief 64-bit fractional data type in 1.63 format. |
||
| 35 | */ |
||
| 36 | // typedef int64_t q63_t; |
||
| 37 | |||
| 38 | /** |
||
| 39 | * @brief 32-bit floating-point type definition. |
||
| 40 | */ |
||
| 41 | // typedef float float32_t; |
||
| 42 | |||
| 43 | /** |
||
| 44 | * @brief 64-bit floating-point type definition. |
||
| 45 | */ |
||
| 46 | // typedef double float64_t; |
||
| 47 | |||
| 48 | |||
| 49 | /** |
||
| 50 | * @brief Error status returned by some functions in the library. |
||
| 51 | */ |
||
| 52 | |||
| 53 | typedef enum |
||
| 54 | { |
||
| 55 | REF_Q7 = 0, |
||
| 56 | REF_Q15, |
||
| 57 | REF_Q31, |
||
| 58 | REF_F32, |
||
| 59 | } dataType; |
||
| 60 | |||
| 61 | |||
| 62 | #define FLT_MAX 3.40282347e+38F |
||
| 63 | #define DBL_MAX 1.79769313486231571e+308 |
||
| 64 | |||
| 65 | #define FLT_MIN 1.175494351e-38F |
||
| 66 | #define DBL_MIN 2.22507385850720138e-308 |
||
| 67 | |||
| 68 | #define SCHAR_MIN (-128) |
||
| 69 | /* mimimum value for an object of type signed char */ |
||
| 70 | #define SCHAR_MAX 127 |
||
| 71 | /* maximum value for an object of type signed char */ |
||
| 72 | #define UCHAR_MAX 255 |
||
| 73 | /* maximum value for an object of type unsigned char */ |
||
| 74 | #define SHRT_MIN (-0x8000) |
||
| 75 | /* minimum value for an object of type short int */ |
||
| 76 | #define SHRT_MAX 0x7fff |
||
| 77 | /* maximum value for an object of type short int */ |
||
| 78 | #define USHRT_MAX 65535 |
||
| 79 | /* maximum value for an object of type unsigned short int */ |
||
| 80 | #define INT_MIN (~0x7fffffff) /* -2147483648 and 0x80000000 are unsigned */ |
||
| 81 | /* minimum value for an object of type int */ |
||
| 82 | #define INT_MAX 0x7fffffff |
||
| 83 | /* maximum value for an object of type int */ |
||
| 84 | #define UINT_MAX 0xffffffffU |
||
| 85 | /* maximum value for an object of type unsigned int */ |
||
| 86 | #define LONG_MIN (~0x7fffffffL) |
||
| 87 | /* minimum value for an object of type long int */ |
||
| 88 | #define LONG_MAX 0x7fffffffL |
||
| 89 | /* maximum value for an object of type long int */ |
||
| 90 | #define ULONG_MAX 0xffffffffUL |
||
| 91 | /* maximum value for an object of type unsigned long int */ |
||
| 92 | |||
| 93 | /* |
||
| 94 | * Ref Lib Global Variables |
||
| 95 | */ |
||
| 96 | extern float32_t scratchArray[]; |
||
| 97 | extern arm_cfft_instance_f32 ref_cfft_sR_f32_len8192; |
||
| 98 | |||
| 99 | /* |
||
| 100 | * Ref Lib Functions |
||
| 101 | */ |
||
| 102 | |||
| 103 | /* |
||
| 104 | * Helper Functions |
||
| 105 | */ |
||
| 106 | q31_t ref_sat_n(q31_t num, uint32_t bits); |
||
| 107 | |||
| 108 | q31_t ref_sat_q31(q63_t num); |
||
| 109 | |||
| 110 | q15_t ref_sat_q15(q31_t num); |
||
| 111 | |||
| 112 | q7_t ref_sat_q7(q15_t num); |
||
| 113 | |||
| 114 | float32_t ref_pow(float32_t a, uint32_t b); |
||
| 115 | |||
| 116 | extern float32_t tempMatrixArray[]; |
||
| 117 | |||
| 118 | float32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size); |
||
| 119 | |||
| 120 | void ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size); |
||
| 121 | |||
| 122 | float64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size); |
||
| 123 | |||
| 124 | void ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size); |
||
| 125 | |||
| 126 | /* |
||
| 127 | * Basic Math Functions |
||
| 128 | */ |
||
| 129 | void ref_abs_f32( |
||
| 130 | float32_t * pSrc, |
||
| 131 | float32_t * pDst, |
||
| 132 | uint32_t blockSize); |
||
| 133 | |||
| 134 | void ref_abs_q31( |
||
| 135 | q31_t * pSrc, |
||
| 136 | q31_t * pDst, |
||
| 137 | uint32_t blockSize); |
||
| 138 | |||
| 139 | void ref_abs_q15( |
||
| 140 | q15_t * pSrc, |
||
| 141 | q15_t * pDst, |
||
| 142 | uint32_t blockSize); |
||
| 143 | |||
| 144 | void ref_abs_q7( |
||
| 145 | q7_t * pSrc, |
||
| 146 | q7_t * pDst, |
||
| 147 | uint32_t blockSize); |
||
| 148 | |||
| 149 | void ref_add_f32( |
||
| 150 | float32_t * pSrcA, |
||
| 151 | float32_t * pSrcB, |
||
| 152 | float32_t * pDst, |
||
| 153 | uint32_t blockSize); |
||
| 154 | |||
| 155 | void ref_add_q31( |
||
| 156 | q31_t * pSrcA, |
||
| 157 | q31_t * pSrcB, |
||
| 158 | q31_t * pDst, |
||
| 159 | uint32_t blockSize); |
||
| 160 | |||
| 161 | void ref_add_q15( |
||
| 162 | q15_t * pSrcA, |
||
| 163 | q15_t * pSrcB, |
||
| 164 | q15_t * pDst, |
||
| 165 | uint32_t blockSize); |
||
| 166 | |||
| 167 | void ref_add_q7( |
||
| 168 | q7_t * pSrcA, |
||
| 169 | q7_t * pSrcB, |
||
| 170 | q7_t * pDst, |
||
| 171 | uint32_t blockSize); |
||
| 172 | |||
| 173 | void ref_dot_prod_f32( |
||
| 174 | float32_t * pSrcA, |
||
| 175 | float32_t * pSrcB, |
||
| 176 | uint32_t blockSize, |
||
| 177 | float32_t * result); |
||
| 178 | |||
| 179 | void ref_dot_prod_q31( |
||
| 180 | q31_t * pSrcA, |
||
| 181 | q31_t * pSrcB, |
||
| 182 | uint32_t blockSize, |
||
| 183 | q63_t * result); |
||
| 184 | |||
| 185 | void ref_dot_prod_q15( |
||
| 186 | q15_t * pSrcA, |
||
| 187 | q15_t * pSrcB, |
||
| 188 | uint32_t blockSize, |
||
| 189 | q63_t * result); |
||
| 190 | |||
| 191 | void ref_dot_prod_q7( |
||
| 192 | q7_t * pSrcA, |
||
| 193 | q7_t * pSrcB, |
||
| 194 | uint32_t blockSize, |
||
| 195 | q31_t * result); |
||
| 196 | |||
| 197 | void ref_mult_f32( |
||
| 198 | float32_t * pSrcA, |
||
| 199 | float32_t * pSrcB, |
||
| 200 | float32_t * pDst, |
||
| 201 | uint32_t blockSize); |
||
| 202 | |||
| 203 | void ref_mult_q31( |
||
| 204 | q31_t * pSrcA, |
||
| 205 | q31_t * pSrcB, |
||
| 206 | q31_t * pDst, |
||
| 207 | uint32_t blockSize); |
||
| 208 | |||
| 209 | void ref_mult_q15( |
||
| 210 | q15_t * pSrcA, |
||
| 211 | q15_t * pSrcB, |
||
| 212 | q15_t * pDst, |
||
| 213 | uint32_t blockSize); |
||
| 214 | |||
| 215 | void ref_mult_q7( |
||
| 216 | q7_t * pSrcA, |
||
| 217 | q7_t * pSrcB, |
||
| 218 | q7_t * pDst, |
||
| 219 | uint32_t blockSize); |
||
| 220 | |||
| 221 | void ref_negate_f32( |
||
| 222 | float32_t * pSrc, |
||
| 223 | float32_t * pDst, |
||
| 224 | uint32_t blockSize); |
||
| 225 | |||
| 226 | void ref_negate_q31( |
||
| 227 | q31_t * pSrc, |
||
| 228 | q31_t * pDst, |
||
| 229 | uint32_t blockSize); |
||
| 230 | |||
| 231 | void ref_negate_q15( |
||
| 232 | q15_t * pSrc, |
||
| 233 | q15_t * pDst, |
||
| 234 | uint32_t blockSize); |
||
| 235 | |||
| 236 | void ref_negate_q7( |
||
| 237 | q7_t * pSrc, |
||
| 238 | q7_t * pDst, |
||
| 239 | uint32_t blockSize); |
||
| 240 | |||
| 241 | void ref_offset_f32( |
||
| 242 | float32_t * pSrc, |
||
| 243 | float32_t offset, |
||
| 244 | float32_t * pDst, |
||
| 245 | uint32_t blockSize); |
||
| 246 | |||
| 247 | void ref_offset_q31( |
||
| 248 | q31_t * pSrc, |
||
| 249 | q31_t offset, |
||
| 250 | q31_t * pDst, |
||
| 251 | uint32_t blockSize); |
||
| 252 | |||
| 253 | void ref_offset_q15( |
||
| 254 | q15_t * pSrc, |
||
| 255 | q15_t offset, |
||
| 256 | q15_t * pDst, |
||
| 257 | uint32_t blockSize); |
||
| 258 | |||
| 259 | void ref_offset_q7( |
||
| 260 | q7_t * pSrc, |
||
| 261 | q7_t offset, |
||
| 262 | q7_t * pDst, |
||
| 263 | uint32_t blockSize); |
||
| 264 | |||
| 265 | void ref_scale_f32( |
||
| 266 | float32_t * pSrc, |
||
| 267 | float32_t scale, |
||
| 268 | float32_t * pDst, |
||
| 269 | uint32_t blockSize); |
||
| 270 | |||
| 271 | void ref_scale_q31( |
||
| 272 | q31_t * pSrc, |
||
| 273 | q31_t scaleFract, |
||
| 274 | int8_t shift, |
||
| 275 | q31_t * pDst, |
||
| 276 | uint32_t blockSize); |
||
| 277 | |||
| 278 | void ref_scale_q15( |
||
| 279 | q15_t * pSrc, |
||
| 280 | q15_t scaleFract, |
||
| 281 | int8_t shift, |
||
| 282 | q15_t * pDst, |
||
| 283 | uint32_t blockSize); |
||
| 284 | |||
| 285 | void ref_scale_q7( |
||
| 286 | q7_t * pSrc, |
||
| 287 | q7_t scaleFract, |
||
| 288 | int8_t shift, |
||
| 289 | q7_t * pDst, |
||
| 290 | uint32_t blockSize); |
||
| 291 | |||
| 292 | void ref_shift_q31( |
||
| 293 | q31_t * pSrc, |
||
| 294 | int8_t shiftBits, |
||
| 295 | q31_t * pDst, |
||
| 296 | uint32_t blockSize); |
||
| 297 | |||
| 298 | void ref_shift_q15( |
||
| 299 | q15_t * pSrc, |
||
| 300 | int8_t shiftBits, |
||
| 301 | q15_t * pDst, |
||
| 302 | uint32_t blockSize); |
||
| 303 | |||
| 304 | void ref_shift_q7( |
||
| 305 | q7_t * pSrc, |
||
| 306 | int8_t shiftBits, |
||
| 307 | q7_t * pDst, |
||
| 308 | uint32_t blockSize); |
||
| 309 | |||
| 310 | void ref_sub_f32( |
||
| 311 | float32_t * pSrcA, |
||
| 312 | float32_t * pSrcB, |
||
| 313 | float32_t * pDst, |
||
| 314 | uint32_t blockSize); |
||
| 315 | |||
| 316 | void ref_sub_q31( |
||
| 317 | q31_t * pSrcA, |
||
| 318 | q31_t * pSrcB, |
||
| 319 | q31_t * pDst, |
||
| 320 | uint32_t blockSize); |
||
| 321 | |||
| 322 | void ref_sub_q15( |
||
| 323 | q15_t * pSrcA, |
||
| 324 | q15_t * pSrcB, |
||
| 325 | q15_t * pDst, |
||
| 326 | uint32_t blockSize); |
||
| 327 | |||
| 328 | void ref_sub_q7( |
||
| 329 | q7_t * pSrcA, |
||
| 330 | q7_t * pSrcB, |
||
| 331 | q7_t * pDst, |
||
| 332 | uint32_t blockSize); |
||
| 333 | |||
| 334 | /* |
||
| 335 | * Complex Math Functions |
||
| 336 | */ |
||
| 337 | void ref_cmplx_conj_f32( |
||
| 338 | float32_t * pSrc, |
||
| 339 | float32_t * pDst, |
||
| 340 | uint32_t numSamples); |
||
| 341 | |||
| 342 | void ref_cmplx_conj_q31( |
||
| 343 | q31_t * pSrc, |
||
| 344 | q31_t * pDst, |
||
| 345 | uint32_t numSamples); |
||
| 346 | |||
| 347 | void ref_cmplx_conj_q15( |
||
| 348 | q15_t * pSrc, |
||
| 349 | q15_t * pDst, |
||
| 350 | uint32_t numSamples); |
||
| 351 | |||
| 352 | void ref_cmplx_dot_prod_f32( |
||
| 353 | float32_t * pSrcA, |
||
| 354 | float32_t * pSrcB, |
||
| 355 | uint32_t numSamples, |
||
| 356 | float32_t * realResult, |
||
| 357 | float32_t * imagResult); |
||
| 358 | |||
| 359 | void ref_cmplx_dot_prod_q31( |
||
| 360 | q31_t * pSrcA, |
||
| 361 | q31_t * pSrcB, |
||
| 362 | uint32_t numSamples, |
||
| 363 | q63_t * realResult, |
||
| 364 | q63_t * imagResult); |
||
| 365 | |||
| 366 | void ref_cmplx_dot_prod_q15( |
||
| 367 | q15_t * pSrcA, |
||
| 368 | q15_t * pSrcB, |
||
| 369 | uint32_t numSamples, |
||
| 370 | q31_t * realResult, |
||
| 371 | q31_t * imagResult); |
||
| 372 | |||
| 373 | void ref_cmplx_mag_f32( |
||
| 374 | float32_t * pSrc, |
||
| 375 | float32_t * pDst, |
||
| 376 | uint32_t numSamples); |
||
| 377 | |||
| 378 | void ref_cmplx_mag_q31( |
||
| 379 | q31_t * pSrc, |
||
| 380 | q31_t * pDst, |
||
| 381 | uint32_t numSamples); |
||
| 382 | |||
| 383 | void ref_cmplx_mag_q15( |
||
| 384 | q15_t * pSrc, |
||
| 385 | q15_t * pDst, |
||
| 386 | uint32_t numSamples); |
||
| 387 | |||
| 388 | void ref_cmplx_mag_squared_f32( |
||
| 389 | float32_t * pSrc, |
||
| 390 | float32_t * pDst, |
||
| 391 | uint32_t numSamples); |
||
| 392 | |||
| 393 | void ref_cmplx_mag_squared_q31( |
||
| 394 | q31_t * pSrc, |
||
| 395 | q31_t * pDst, |
||
| 396 | uint32_t numSamples); |
||
| 397 | |||
| 398 | void ref_cmplx_mag_squared_q15( |
||
| 399 | q15_t * pSrc, |
||
| 400 | q15_t * pDst, |
||
| 401 | uint32_t numSamples); |
||
| 402 | |||
| 403 | void ref_cmplx_mult_cmplx_f32( |
||
| 404 | float32_t * pSrcA, |
||
| 405 | float32_t * pSrcB, |
||
| 406 | float32_t * pDst, |
||
| 407 | uint32_t numSamples); |
||
| 408 | |||
| 409 | void ref_cmplx_mult_cmplx_q31( |
||
| 410 | q31_t * pSrcA, |
||
| 411 | q31_t * pSrcB, |
||
| 412 | q31_t * pDst, |
||
| 413 | uint32_t numSamples); |
||
| 414 | |||
| 415 | void ref_cmplx_mult_cmplx_q15( |
||
| 416 | q15_t * pSrcA, |
||
| 417 | q15_t * pSrcB, |
||
| 418 | q15_t * pDst, |
||
| 419 | uint32_t numSamples); |
||
| 420 | |||
| 421 | void ref_cmplx_mult_real_f32( |
||
| 422 | float32_t * pSrcCmplx, |
||
| 423 | float32_t * pSrcReal, |
||
| 424 | float32_t * pCmplxDst, |
||
| 425 | uint32_t numSamples); |
||
| 426 | |||
| 427 | void ref_cmplx_mult_real_q31( |
||
| 428 | q31_t * pSrcCmplx, |
||
| 429 | q31_t * pSrcReal, |
||
| 430 | q31_t * pCmplxDst, |
||
| 431 | uint32_t numSamples); |
||
| 432 | |||
| 433 | void ref_cmplx_mult_real_q15( |
||
| 434 | q15_t * pSrcCmplx, |
||
| 435 | q15_t * pSrcReal, |
||
| 436 | q15_t * pCmplxDst, |
||
| 437 | uint32_t numSamples); |
||
| 438 | |||
| 439 | /* |
||
| 440 | * Controller Functions |
||
| 441 | */ |
||
| 442 | void ref_sin_cos_f32( |
||
| 443 | float32_t theta, |
||
| 444 | float32_t * pSinVal, |
||
| 445 | float32_t * pCosVal); |
||
| 446 | |||
| 447 | void ref_sin_cos_q31( |
||
| 448 | q31_t theta, |
||
| 449 | q31_t * pSinVal, |
||
| 450 | q31_t * pCosVal); |
||
| 451 | |||
| 452 | float32_t ref_pid_f32( |
||
| 453 | arm_pid_instance_f32 * S, |
||
| 454 | float32_t in); |
||
| 455 | |||
| 456 | q31_t ref_pid_q31( |
||
| 457 | arm_pid_instance_q31 * S, |
||
| 458 | q31_t in); |
||
| 459 | |||
| 460 | q15_t ref_pid_q15( |
||
| 461 | arm_pid_instance_q15 * S, |
||
| 462 | q15_t in); |
||
| 463 | |||
| 464 | /* |
||
| 465 | * Fast Math Functions |
||
| 466 | */ |
||
| 467 | #define ref_sin_f32(a) sinf(a) |
||
| 468 | |||
| 469 | q31_t ref_sin_q31(q31_t x); |
||
| 470 | |||
| 471 | q15_t ref_sin_q15(q15_t x); |
||
| 472 | |||
| 473 | #define ref_cos_f32(a) cosf(a) |
||
| 474 | |||
| 475 | q31_t ref_cos_q31(q31_t x); |
||
| 476 | |||
| 477 | q15_t ref_cos_q15(q15_t x); |
||
| 478 | |||
| 479 | arm_status ref_sqrt_q31(q31_t in, q31_t * pOut); |
||
| 480 | |||
| 481 | arm_status ref_sqrt_q15(q15_t in, q15_t * pOut); |
||
| 482 | |||
| 483 | /* |
||
| 484 | * Filtering Functions |
||
| 485 | */ |
||
| 486 | void ref_biquad_cascade_df2T_f32( |
||
| 487 | const arm_biquad_cascade_df2T_instance_f32 * S, |
||
| 488 | float32_t * pSrc, |
||
| 489 | float32_t * pDst, |
||
| 490 | uint32_t blockSize); |
||
| 491 | |||
| 492 | void ref_biquad_cascade_stereo_df2T_f32( |
||
| 493 | const arm_biquad_cascade_stereo_df2T_instance_f32 * S, |
||
| 494 | float32_t * pSrc, |
||
| 495 | float32_t * pDst, |
||
| 496 | uint32_t blockSize); |
||
| 497 | |||
| 498 | void ref_biquad_cascade_df2T_f64( |
||
| 499 | const arm_biquad_cascade_df2T_instance_f64 * S, |
||
| 500 | float64_t * pSrc, |
||
| 501 | float64_t * pDst, |
||
| 502 | uint32_t blockSize); |
||
| 503 | |||
| 504 | void ref_biquad_cascade_df1_f32( |
||
| 505 | const arm_biquad_casd_df1_inst_f32 * S, |
||
| 506 | float32_t * pSrc, |
||
| 507 | float32_t * pDst, |
||
| 508 | uint32_t blockSize); |
||
| 509 | |||
| 510 | void ref_biquad_cas_df1_32x64_q31( |
||
| 511 | const arm_biquad_cas_df1_32x64_ins_q31 * S, |
||
| 512 | q31_t * pSrc, |
||
| 513 | q31_t * pDst, |
||
| 514 | uint32_t blockSize); |
||
| 515 | |||
| 516 | void ref_biquad_cascade_df1_q31( |
||
| 517 | const arm_biquad_casd_df1_inst_q31 * S, |
||
| 518 | q31_t * pSrc, |
||
| 519 | q31_t * pDst, |
||
| 520 | uint32_t blockSize); |
||
| 521 | |||
| 522 | void ref_biquad_cascade_df1_fast_q31( |
||
| 523 | const arm_biquad_casd_df1_inst_q31 * S, |
||
| 524 | q31_t * pSrc, |
||
| 525 | q31_t * pDst, |
||
| 526 | uint32_t blockSize); |
||
| 527 | |||
| 528 | void ref_biquad_cascade_df1_fast_q15( |
||
| 529 | const arm_biquad_casd_df1_inst_q15 * S, |
||
| 530 | q15_t * pSrc, |
||
| 531 | q15_t * pDst, |
||
| 532 | uint32_t blockSize); |
||
| 533 | |||
| 534 | void ref_biquad_cascade_df1_q15( |
||
| 535 | const arm_biquad_casd_df1_inst_q15 * S, |
||
| 536 | q15_t * pSrc, |
||
| 537 | q15_t * pDst, |
||
| 538 | uint32_t blockSize); |
||
| 539 | |||
| 540 | void ref_conv_f32( |
||
| 541 | float32_t * pSrcA, |
||
| 542 | uint32_t srcALen, |
||
| 543 | float32_t * pSrcB, |
||
| 544 | uint32_t srcBLen, |
||
| 545 | float32_t * pDst); |
||
| 546 | |||
| 547 | arm_status ref_conv_partial_f32( |
||
| 548 | float32_t * pSrcA, |
||
| 549 | uint32_t srcALen, |
||
| 550 | float32_t * pSrcB, |
||
| 551 | uint32_t srcBLen, |
||
| 552 | float32_t * pDst, |
||
| 553 | uint32_t firstIndex, |
||
| 554 | uint32_t numPoints); |
||
| 555 | |||
| 556 | void ref_conv_q31( |
||
| 557 | q31_t * pSrcA, |
||
| 558 | uint32_t srcALen, |
||
| 559 | q31_t * pSrcB, |
||
| 560 | uint32_t srcBLen, |
||
| 561 | q31_t * pDst); |
||
| 562 | |||
| 563 | void ref_conv_fast_q31( |
||
| 564 | q31_t * pSrcA, |
||
| 565 | uint32_t srcALen, |
||
| 566 | q31_t * pSrcB, |
||
| 567 | uint32_t srcBLen, |
||
| 568 | q31_t * pDst); |
||
| 569 | |||
| 570 | arm_status ref_conv_partial_q31( |
||
| 571 | q31_t * pSrcA, |
||
| 572 | uint32_t srcALen, |
||
| 573 | q31_t * pSrcB, |
||
| 574 | uint32_t srcBLen, |
||
| 575 | q31_t * pDst, |
||
| 576 | uint32_t firstIndex, |
||
| 577 | uint32_t numPoints); |
||
| 578 | |||
| 579 | arm_status ref_conv_partial_fast_q31( |
||
| 580 | q31_t * pSrcA, |
||
| 581 | uint32_t srcALen, |
||
| 582 | q31_t * pSrcB, |
||
| 583 | uint32_t srcBLen, |
||
| 584 | q31_t * pDst, |
||
| 585 | uint32_t firstIndex, |
||
| 586 | uint32_t numPoints); |
||
| 587 | |||
| 588 | void ref_conv_q15( |
||
| 589 | q15_t * pSrcA, |
||
| 590 | uint32_t srcALen, |
||
| 591 | q15_t * pSrcB, |
||
| 592 | uint32_t srcBLen, |
||
| 593 | q15_t * pDst); |
||
| 594 | |||
| 595 | #define ref_conv_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 596 | pScratch1, pScratch2) \ |
||
| 597 | ref_conv_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst) |
||
| 598 | |||
| 599 | void ref_conv_fast_q15( |
||
| 600 | q15_t * pSrcA, |
||
| 601 | uint32_t srcALen, |
||
| 602 | q15_t * pSrcB, |
||
| 603 | uint32_t srcBLen, |
||
| 604 | q15_t * pDst); |
||
| 605 | |||
| 606 | void ref_conv_fast_opt_q15( |
||
| 607 | q15_t * pSrcA, |
||
| 608 | uint32_t srcALen, |
||
| 609 | q15_t * pSrcB, |
||
| 610 | uint32_t srcBLen, |
||
| 611 | q15_t * pDst, |
||
| 612 | q15_t * pScratch1, |
||
| 613 | q15_t * pScratch2); |
||
| 614 | |||
| 615 | arm_status ref_conv_partial_q15( |
||
| 616 | q15_t * pSrcA, |
||
| 617 | uint32_t srcALen, |
||
| 618 | q15_t * pSrcB, |
||
| 619 | uint32_t srcBLen, |
||
| 620 | q15_t * pDst, |
||
| 621 | uint32_t firstIndex, |
||
| 622 | uint32_t numPoints); |
||
| 623 | |||
| 624 | #define ref_conv_partial_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 625 | firstIndex, numPoints, \ |
||
| 626 | pScratch1, pScratch2) \ |
||
| 627 | ref_conv_partial_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 628 | firstIndex, numPoints) |
||
| 629 | |||
| 630 | arm_status ref_conv_partial_fast_q15( |
||
| 631 | q15_t * pSrcA, |
||
| 632 | uint32_t srcALen, |
||
| 633 | q15_t * pSrcB, |
||
| 634 | uint32_t srcBLen, |
||
| 635 | q15_t * pDst, |
||
| 636 | uint32_t firstIndex, |
||
| 637 | uint32_t numPoints); |
||
| 638 | |||
| 639 | arm_status ref_conv_partial_fast_opt_q15( |
||
| 640 | q15_t * pSrcA, |
||
| 641 | uint32_t srcALen, |
||
| 642 | q15_t * pSrcB, |
||
| 643 | uint32_t srcBLen, |
||
| 644 | q15_t * pDst, |
||
| 645 | uint32_t firstIndex, |
||
| 646 | uint32_t numPoints, |
||
| 647 | q15_t * pScratch1, |
||
| 648 | q15_t * pScratch2); |
||
| 649 | |||
| 650 | void ref_conv_q7( |
||
| 651 | q7_t * pSrcA, |
||
| 652 | uint32_t srcALen, |
||
| 653 | q7_t * pSrcB, |
||
| 654 | uint32_t srcBLen, |
||
| 655 | q7_t * pDst); |
||
| 656 | |||
| 657 | #define ref_conv_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 658 | pScratch1, pScratch2) \ |
||
| 659 | ref_conv_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst) |
||
| 660 | |||
| 661 | arm_status ref_conv_partial_q7( |
||
| 662 | q7_t * pSrcA, |
||
| 663 | uint32_t srcALen, |
||
| 664 | q7_t * pSrcB, |
||
| 665 | uint32_t srcBLen, |
||
| 666 | q7_t * pDst, |
||
| 667 | uint32_t firstIndex, |
||
| 668 | uint32_t numPoints); |
||
| 669 | |||
| 670 | #define ref_conv_partial_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 671 | firstIndex, numPoints, \ |
||
| 672 | pScratch1, pScratch2) \ |
||
| 673 | ref_conv_partial_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 674 | firstIndex, numPoints) |
||
| 675 | |||
| 676 | void ref_correlate_f32( |
||
| 677 | float32_t * pSrcA, |
||
| 678 | uint32_t srcALen, |
||
| 679 | float32_t * pSrcB, |
||
| 680 | uint32_t srcBLen, |
||
| 681 | float32_t * pDst); |
||
| 682 | |||
| 683 | void ref_correlate_q31( |
||
| 684 | q31_t * pSrcA, |
||
| 685 | uint32_t srcALen, |
||
| 686 | q31_t * pSrcB, |
||
| 687 | uint32_t srcBLen, |
||
| 688 | q31_t * pDst); |
||
| 689 | |||
| 690 | void ref_correlate_fast_q31( |
||
| 691 | q31_t * pSrcA, |
||
| 692 | uint32_t srcALen, |
||
| 693 | q31_t * pSrcB, |
||
| 694 | uint32_t srcBLen, |
||
| 695 | q31_t * pDst); |
||
| 696 | |||
| 697 | void ref_correlate_q15( |
||
| 698 | q15_t * pSrcA, |
||
| 699 | uint32_t srcALen, |
||
| 700 | q15_t * pSrcB, |
||
| 701 | uint32_t srcBLen, |
||
| 702 | q15_t * pDst); |
||
| 703 | |||
| 704 | #define ref_correlate_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 705 | pScratch1) \ |
||
| 706 | ref_correlate_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst) |
||
| 707 | |||
| 708 | void ref_correlate_fast_q15( |
||
| 709 | q15_t * pSrcA, |
||
| 710 | uint32_t srcALen, |
||
| 711 | q15_t * pSrcB, |
||
| 712 | uint32_t srcBLen, |
||
| 713 | q15_t * pDst); |
||
| 714 | |||
| 715 | void ref_correlate_fast_opt_q15( |
||
| 716 | q15_t * pSrcA, |
||
| 717 | uint32_t srcALen, |
||
| 718 | q15_t * pSrcB, |
||
| 719 | uint32_t srcBLen, |
||
| 720 | q15_t * pDst, |
||
| 721 | q15_t * pScratch); |
||
| 722 | |||
| 723 | void ref_correlate_q7( |
||
| 724 | q7_t * pSrcA, |
||
| 725 | uint32_t srcALen, |
||
| 726 | q7_t * pSrcB, |
||
| 727 | uint32_t srcBLen, |
||
| 728 | q7_t * pDst); |
||
| 729 | |||
| 730 | #define ref_correlate_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ |
||
| 731 | pScratch1, pScratch2) \ |
||
| 732 | ref_correlate_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst) |
||
| 733 | |||
| 734 | void ref_fir_f32( |
||
| 735 | const arm_fir_instance_f32 * S, |
||
| 736 | float32_t * pSrc, |
||
| 737 | float32_t * pDst, |
||
| 738 | uint32_t blockSize); |
||
| 739 | |||
| 740 | void ref_fir_q31( |
||
| 741 | const arm_fir_instance_q31 * S, |
||
| 742 | q31_t * pSrc, |
||
| 743 | q31_t * pDst, |
||
| 744 | uint32_t blockSize); |
||
| 745 | |||
| 746 | void ref_fir_fast_q31( |
||
| 747 | const arm_fir_instance_q31 * S, |
||
| 748 | q31_t * pSrc, |
||
| 749 | q31_t * pDst, |
||
| 750 | uint32_t blockSize); |
||
| 751 | |||
| 752 | void ref_fir_q15( |
||
| 753 | const arm_fir_instance_q15 * S, |
||
| 754 | q15_t * pSrc, |
||
| 755 | q15_t * pDst, |
||
| 756 | uint32_t blockSize); |
||
| 757 | |||
| 758 | void ref_fir_fast_q15( |
||
| 759 | const arm_fir_instance_q15 * S, |
||
| 760 | q15_t * pSrc, |
||
| 761 | q15_t * pDst, |
||
| 762 | uint32_t blockSize); |
||
| 763 | |||
| 764 | void ref_fir_q7( |
||
| 765 | const arm_fir_instance_q7 * S, |
||
| 766 | q7_t * pSrc, |
||
| 767 | q7_t * pDst, |
||
| 768 | uint32_t blockSize); |
||
| 769 | |||
| 770 | void ref_fir_decimate_f32( |
||
| 771 | const arm_fir_decimate_instance_f32 * S, |
||
| 772 | float32_t * pSrc, |
||
| 773 | float32_t * pDst, |
||
| 774 | uint32_t blockSize); |
||
| 775 | |||
| 776 | void ref_fir_decimate_q31( |
||
| 777 | const arm_fir_decimate_instance_q31 * S, |
||
| 778 | q31_t * pSrc, |
||
| 779 | q31_t * pDst, |
||
| 780 | uint32_t blockSize); |
||
| 781 | |||
| 782 | void ref_fir_decimate_fast_q31( |
||
| 783 | const arm_fir_decimate_instance_q31 * S, |
||
| 784 | q31_t * pSrc, |
||
| 785 | q31_t * pDst, |
||
| 786 | uint32_t blockSize); |
||
| 787 | |||
| 788 | void ref_fir_decimate_q15( |
||
| 789 | const arm_fir_decimate_instance_q15 * S, |
||
| 790 | q15_t * pSrc, |
||
| 791 | q15_t * pDst, |
||
| 792 | uint32_t blockSize); |
||
| 793 | |||
| 794 | void ref_fir_decimate_fast_q15( |
||
| 795 | const arm_fir_decimate_instance_q15 * S, |
||
| 796 | q15_t * pSrc, |
||
| 797 | q15_t * pDst, |
||
| 798 | uint32_t blockSize); |
||
| 799 | |||
| 800 | void ref_fir_lattice_f32( |
||
| 801 | const arm_fir_lattice_instance_f32 * S, |
||
| 802 | float32_t * pSrc, |
||
| 803 | float32_t * pDst, |
||
| 804 | uint32_t blockSize); |
||
| 805 | |||
| 806 | void ref_fir_lattice_q31( |
||
| 807 | const arm_fir_lattice_instance_q31 * S, |
||
| 808 | q31_t * pSrc, |
||
| 809 | q31_t * pDst, |
||
| 810 | uint32_t blockSize); |
||
| 811 | |||
| 812 | void ref_fir_lattice_q15( |
||
| 813 | const arm_fir_lattice_instance_q15 * S, |
||
| 814 | q15_t * pSrc, |
||
| 815 | q15_t * pDst, |
||
| 816 | uint32_t blockSize); |
||
| 817 | |||
| 818 | void ref_fir_sparse_f32( |
||
| 819 | arm_fir_sparse_instance_f32 * S, |
||
| 820 | float32_t * pSrc, |
||
| 821 | float32_t * pDst, |
||
| 822 | float32_t * pScratchIn, |
||
| 823 | uint32_t blockSize); |
||
| 824 | |||
| 825 | void ref_fir_sparse_q31( |
||
| 826 | arm_fir_sparse_instance_q31 * S, |
||
| 827 | q31_t * pSrc, |
||
| 828 | q31_t * pDst, |
||
| 829 | q31_t * pScratchIn, |
||
| 830 | uint32_t blockSize); |
||
| 831 | |||
| 832 | void ref_fir_sparse_q15( |
||
| 833 | arm_fir_sparse_instance_q15 * S, |
||
| 834 | q15_t * pSrc, |
||
| 835 | q15_t * pDst, |
||
| 836 | q15_t * pScratchIn, |
||
| 837 | q31_t * pScratchOut, |
||
| 838 | uint32_t blockSize); |
||
| 839 | |||
| 840 | void ref_fir_sparse_q7( |
||
| 841 | arm_fir_sparse_instance_q7 * S, |
||
| 842 | q7_t *pSrc, |
||
| 843 | q7_t *pDst, |
||
| 844 | q7_t *pScratchIn, |
||
| 845 | q31_t * pScratchOut, |
||
| 846 | uint32_t blockSize); |
||
| 847 | |||
| 848 | void ref_iir_lattice_f32( |
||
| 849 | const arm_iir_lattice_instance_f32 * S, |
||
| 850 | float32_t * pSrc, |
||
| 851 | float32_t * pDst, |
||
| 852 | uint32_t blockSize); |
||
| 853 | |||
| 854 | void ref_iir_lattice_q31( |
||
| 855 | const arm_iir_lattice_instance_q31 * S, |
||
| 856 | q31_t * pSrc, |
||
| 857 | q31_t * pDst, |
||
| 858 | uint32_t blockSize); |
||
| 859 | |||
| 860 | void ref_iir_lattice_q15( |
||
| 861 | const arm_iir_lattice_instance_q15 * S, |
||
| 862 | q15_t * pSrc, |
||
| 863 | q15_t * pDst, |
||
| 864 | uint32_t blockSize); |
||
| 865 | |||
| 866 | void ref_lms_f32( |
||
| 867 | const arm_lms_instance_f32 * S, |
||
| 868 | float32_t * pSrc, |
||
| 869 | float32_t * pRef, |
||
| 870 | float32_t * pOut, |
||
| 871 | float32_t * pErr, |
||
| 872 | uint32_t blockSize); |
||
| 873 | |||
| 874 | void ref_lms_norm_f32( |
||
| 875 | arm_lms_norm_instance_f32 * S, |
||
| 876 | float32_t * pSrc, |
||
| 877 | float32_t * pRef, |
||
| 878 | float32_t * pOut, |
||
| 879 | float32_t * pErr, |
||
| 880 | uint32_t blockSize); |
||
| 881 | |||
| 882 | void ref_lms_q31( |
||
| 883 | const arm_lms_instance_q31 * S, |
||
| 884 | q31_t * pSrc, |
||
| 885 | q31_t * pRef, |
||
| 886 | q31_t * pOut, |
||
| 887 | q31_t * pErr, |
||
| 888 | uint32_t blockSize); |
||
| 889 | |||
| 890 | void ref_lms_norm_q31( |
||
| 891 | arm_lms_norm_instance_q31 * S, |
||
| 892 | q31_t * pSrc, |
||
| 893 | q31_t * pRef, |
||
| 894 | q31_t * pOut, |
||
| 895 | q31_t * pErr, |
||
| 896 | uint32_t blockSize); |
||
| 897 | |||
| 898 | void ref_lms_q15( |
||
| 899 | const arm_lms_instance_q15 * S, |
||
| 900 | q15_t * pSrc, |
||
| 901 | q15_t * pRef, |
||
| 902 | q15_t * pOut, |
||
| 903 | q15_t * pErr, |
||
| 904 | uint32_t blockSize); |
||
| 905 | |||
| 906 | void ref_lms_norm_q15( |
||
| 907 | arm_lms_norm_instance_q15 * S, |
||
| 908 | q15_t * pSrc, |
||
| 909 | q15_t * pRef, |
||
| 910 | q15_t * pOut, |
||
| 911 | q15_t * pErr, |
||
| 912 | uint32_t blockSize); |
||
| 913 | |||
| 914 | void ref_fir_interpolate_f32( |
||
| 915 | const arm_fir_interpolate_instance_f32 * S, |
||
| 916 | float32_t * pSrc, |
||
| 917 | float32_t * pDst, |
||
| 918 | uint32_t blockSize); |
||
| 919 | |||
| 920 | void ref_fir_interpolate_q31( |
||
| 921 | const arm_fir_interpolate_instance_q31 * S, |
||
| 922 | q31_t * pSrc, |
||
| 923 | q31_t * pDst, |
||
| 924 | uint32_t blockSize); |
||
| 925 | |||
| 926 | void ref_fir_interpolate_q15( |
||
| 927 | const arm_fir_interpolate_instance_q15 * S, |
||
| 928 | q15_t * pSrc, |
||
| 929 | q15_t * pDst, |
||
| 930 | uint32_t blockSize); |
||
| 931 | |||
| 932 | /* |
||
| 933 | * Matrix Functions |
||
| 934 | */ |
||
| 935 | arm_status ref_mat_cmplx_mult_f32( |
||
| 936 | const arm_matrix_instance_f32 * pSrcA, |
||
| 937 | const arm_matrix_instance_f32 * pSrcB, |
||
| 938 | arm_matrix_instance_f32 * pDst); |
||
| 939 | |||
| 940 | arm_status ref_mat_cmplx_mult_q31( |
||
| 941 | const arm_matrix_instance_q31 * pSrcA, |
||
| 942 | const arm_matrix_instance_q31 * pSrcB, |
||
| 943 | arm_matrix_instance_q31 * pDst); |
||
| 944 | |||
| 945 | arm_status ref_mat_cmplx_mult_q15( |
||
| 946 | const arm_matrix_instance_q15 * pSrcA, |
||
| 947 | const arm_matrix_instance_q15 * pSrcB, |
||
| 948 | arm_matrix_instance_q15 * pDst); |
||
| 949 | |||
| 950 | arm_status ref_mat_inverse_f32( |
||
| 951 | const arm_matrix_instance_f32 * pSrc, |
||
| 952 | arm_matrix_instance_f32 * pDst); |
||
| 953 | |||
| 954 | arm_status ref_mat_inverse_f64( |
||
| 955 | const arm_matrix_instance_f64 * pSrc, |
||
| 956 | arm_matrix_instance_f64 * pDst); |
||
| 957 | |||
| 958 | arm_status ref_mat_mult_f32( |
||
| 959 | const arm_matrix_instance_f32 * pSrcA, |
||
| 960 | const arm_matrix_instance_f32 * pSrcB, |
||
| 961 | arm_matrix_instance_f32 * pDst); |
||
| 962 | |||
| 963 | arm_status ref_mat_mult_q31( |
||
| 964 | const arm_matrix_instance_q31 * pSrcA, |
||
| 965 | const arm_matrix_instance_q31 * pSrcB, |
||
| 966 | arm_matrix_instance_q31 * pDst); |
||
| 967 | |||
| 968 | /* Alias for testing purposes*/ |
||
| 969 | #define ref_mat_mult_fast_q31 ref_mat_mult_q31 |
||
| 970 | |||
| 971 | arm_status ref_mat_mult_q15( |
||
| 972 | const arm_matrix_instance_q15 * pSrcA, |
||
| 973 | const arm_matrix_instance_q15 * pSrcB, |
||
| 974 | arm_matrix_instance_q15 * pDst); |
||
| 975 | |||
| 976 | /* Alias for testing purposes*/ |
||
| 977 | #define ref_mat_mult_fast_q15 ref_mat_mult_q15 |
||
| 978 | |||
| 979 | arm_status ref_mat_scale_f32( |
||
| 980 | const arm_matrix_instance_f32 * pSrc, |
||
| 981 | float32_t scale, |
||
| 982 | arm_matrix_instance_f32 * pDst); |
||
| 983 | |||
| 984 | arm_status ref_mat_scale_q31( |
||
| 985 | const arm_matrix_instance_q31 * pSrc, |
||
| 986 | q31_t scale, |
||
| 987 | int32_t shift, |
||
| 988 | arm_matrix_instance_q31 * pDst); |
||
| 989 | |||
| 990 | arm_status ref_mat_scale_q15( |
||
| 991 | const arm_matrix_instance_q15 * pSrc, |
||
| 992 | q15_t scale, |
||
| 993 | int32_t shift, |
||
| 994 | arm_matrix_instance_q15 * pDst); |
||
| 995 | |||
| 996 | arm_status ref_mat_sub_f32( |
||
| 997 | const arm_matrix_instance_f32 * pSrcA, |
||
| 998 | const arm_matrix_instance_f32 * pSrcB, |
||
| 999 | arm_matrix_instance_f32 * pDst); |
||
| 1000 | |||
| 1001 | arm_status ref_mat_sub_q31( |
||
| 1002 | const arm_matrix_instance_q31 * pSrcA, |
||
| 1003 | const arm_matrix_instance_q31 * pSrcB, |
||
| 1004 | arm_matrix_instance_q31 * pDst); |
||
| 1005 | |||
| 1006 | arm_status ref_mat_sub_q15( |
||
| 1007 | const arm_matrix_instance_q15 * pSrcA, |
||
| 1008 | const arm_matrix_instance_q15 * pSrcB, |
||
| 1009 | arm_matrix_instance_q15 * pDst); |
||
| 1010 | |||
| 1011 | arm_status ref_mat_trans_f64( |
||
| 1012 | const arm_matrix_instance_f64 * pSrc, |
||
| 1013 | arm_matrix_instance_f64 * pDst); |
||
| 1014 | |||
| 1015 | arm_status ref_mat_trans_f32( |
||
| 1016 | const arm_matrix_instance_f32 * pSrc, |
||
| 1017 | arm_matrix_instance_f32 * pDst); |
||
| 1018 | |||
| 1019 | arm_status ref_mat_trans_q31( |
||
| 1020 | const arm_matrix_instance_q31 * pSrc, |
||
| 1021 | arm_matrix_instance_q31 * pDst); |
||
| 1022 | |||
| 1023 | arm_status ref_mat_trans_q15( |
||
| 1024 | const arm_matrix_instance_q15 * pSrc, |
||
| 1025 | arm_matrix_instance_q15 * pDst); |
||
| 1026 | |||
| 1027 | arm_status ref_mat_add_f32( |
||
| 1028 | const arm_matrix_instance_f32 * pSrcA, |
||
| 1029 | const arm_matrix_instance_f32 * pSrcB, |
||
| 1030 | arm_matrix_instance_f32 * pDst); |
||
| 1031 | |||
| 1032 | arm_status ref_mat_add_q31( |
||
| 1033 | const arm_matrix_instance_q31 * pSrcA, |
||
| 1034 | const arm_matrix_instance_q31 * pSrcB, |
||
| 1035 | arm_matrix_instance_q31 * pDst); |
||
| 1036 | |||
| 1037 | arm_status ref_mat_add_q15( |
||
| 1038 | const arm_matrix_instance_q15 * pSrcA, |
||
| 1039 | const arm_matrix_instance_q15 * pSrcB, |
||
| 1040 | arm_matrix_instance_q15 * pDst); |
||
| 1041 | |||
| 1042 | /* |
||
| 1043 | * Statistics Functions |
||
| 1044 | */ |
||
| 1045 | void ref_max_f32( |
||
| 1046 | float32_t * pSrc, |
||
| 1047 | uint32_t blockSize, |
||
| 1048 | float32_t * pResult, |
||
| 1049 | uint32_t * pIndex); |
||
| 1050 | |||
| 1051 | void ref_max_q31( |
||
| 1052 | q31_t * pSrc, |
||
| 1053 | uint32_t blockSize, |
||
| 1054 | q31_t * pResult, |
||
| 1055 | uint32_t * pIndex); |
||
| 1056 | |||
| 1057 | void ref_max_q15( |
||
| 1058 | q15_t * pSrc, |
||
| 1059 | uint32_t blockSize, |
||
| 1060 | q15_t * pResult, |
||
| 1061 | uint32_t * pIndex); |
||
| 1062 | |||
| 1063 | void ref_max_q7( |
||
| 1064 | q7_t * pSrc, |
||
| 1065 | uint32_t blockSize, |
||
| 1066 | q7_t * pResult, |
||
| 1067 | uint32_t * pIndex); |
||
| 1068 | |||
| 1069 | void ref_mean_f32( |
||
| 1070 | float32_t * pSrc, |
||
| 1071 | uint32_t blockSize, |
||
| 1072 | float32_t * pResult); |
||
| 1073 | |||
| 1074 | void ref_mean_q31( |
||
| 1075 | q31_t * pSrc, |
||
| 1076 | uint32_t blockSize, |
||
| 1077 | q31_t * pResult); |
||
| 1078 | |||
| 1079 | void ref_mean_q15( |
||
| 1080 | q15_t * pSrc, |
||
| 1081 | uint32_t blockSize, |
||
| 1082 | q15_t * pResult); |
||
| 1083 | |||
| 1084 | void ref_mean_q7( |
||
| 1085 | q7_t * pSrc, |
||
| 1086 | uint32_t blockSize, |
||
| 1087 | q7_t * pResult); |
||
| 1088 | |||
| 1089 | void ref_min_f32( |
||
| 1090 | float32_t * pSrc, |
||
| 1091 | uint32_t blockSize, |
||
| 1092 | float32_t * pResult, |
||
| 1093 | uint32_t * pIndex); |
||
| 1094 | |||
| 1095 | void ref_min_q31( |
||
| 1096 | q31_t * pSrc, |
||
| 1097 | uint32_t blockSize, |
||
| 1098 | q31_t * pResult, |
||
| 1099 | uint32_t * pIndex); |
||
| 1100 | |||
| 1101 | void ref_min_q15( |
||
| 1102 | q15_t * pSrc, |
||
| 1103 | uint32_t blockSize, |
||
| 1104 | q15_t * pResult, |
||
| 1105 | uint32_t * pIndex); |
||
| 1106 | |||
| 1107 | void ref_min_q7( |
||
| 1108 | q7_t * pSrc, |
||
| 1109 | uint32_t blockSize, |
||
| 1110 | q7_t * pResult, |
||
| 1111 | uint32_t * pIndex); |
||
| 1112 | |||
| 1113 | void ref_power_f32( |
||
| 1114 | float32_t * pSrc, |
||
| 1115 | uint32_t blockSize, |
||
| 1116 | float32_t * pResult); |
||
| 1117 | |||
| 1118 | void ref_power_q31( |
||
| 1119 | q31_t * pSrc, |
||
| 1120 | uint32_t blockSize, |
||
| 1121 | q63_t * pResult); |
||
| 1122 | |||
| 1123 | void ref_power_q15( |
||
| 1124 | q15_t * pSrc, |
||
| 1125 | uint32_t blockSize, |
||
| 1126 | q63_t * pResult); |
||
| 1127 | |||
| 1128 | void ref_power_q7( |
||
| 1129 | q7_t * pSrc, |
||
| 1130 | uint32_t blockSize, |
||
| 1131 | q31_t * pResult); |
||
| 1132 | |||
| 1133 | void ref_rms_f32( |
||
| 1134 | float32_t * pSrc, |
||
| 1135 | uint32_t blockSize, |
||
| 1136 | float32_t * pResult); |
||
| 1137 | |||
| 1138 | void ref_rms_q31( |
||
| 1139 | q31_t * pSrc, |
||
| 1140 | uint32_t blockSize, |
||
| 1141 | q31_t * pResult); |
||
| 1142 | |||
| 1143 | void ref_rms_q15( |
||
| 1144 | q15_t * pSrc, |
||
| 1145 | uint32_t blockSize, |
||
| 1146 | q15_t * pResult); |
||
| 1147 | |||
| 1148 | void ref_std_f32( |
||
| 1149 | float32_t * pSrc, |
||
| 1150 | uint32_t blockSize, |
||
| 1151 | float32_t * pResult); |
||
| 1152 | |||
| 1153 | void ref_std_q31( |
||
| 1154 | q31_t * pSrc, |
||
| 1155 | uint32_t blockSize, |
||
| 1156 | q31_t * pResult); |
||
| 1157 | |||
| 1158 | void ref_std_q15( |
||
| 1159 | q15_t * pSrc, |
||
| 1160 | uint32_t blockSize, |
||
| 1161 | q15_t * pResult); |
||
| 1162 | |||
| 1163 | void ref_var_f32( |
||
| 1164 | float32_t * pSrc, |
||
| 1165 | uint32_t blockSize, |
||
| 1166 | float32_t * pResult); |
||
| 1167 | |||
| 1168 | void ref_var_q31( |
||
| 1169 | q31_t * pSrc, |
||
| 1170 | uint32_t blockSize, |
||
| 1171 | q31_t * pResult); |
||
| 1172 | |||
| 1173 | void ref_var_q15( |
||
| 1174 | q15_t * pSrc, |
||
| 1175 | uint32_t blockSize, |
||
| 1176 | q15_t * pResult); |
||
| 1177 | |||
| 1178 | /* |
||
| 1179 | * Support Functions |
||
| 1180 | */ |
||
| 1181 | void ref_copy_f32( |
||
| 1182 | float32_t * pSrc, |
||
| 1183 | float32_t * pDst, |
||
| 1184 | uint32_t blockSize); |
||
| 1185 | |||
| 1186 | void ref_copy_q31( |
||
| 1187 | q31_t * pSrc, |
||
| 1188 | q31_t * pDst, |
||
| 1189 | uint32_t blockSize); |
||
| 1190 | |||
| 1191 | void ref_copy_q15( |
||
| 1192 | q15_t * pSrc, |
||
| 1193 | q15_t * pDst, |
||
| 1194 | uint32_t blockSize); |
||
| 1195 | |||
| 1196 | void ref_copy_q7( |
||
| 1197 | q7_t * pSrc, |
||
| 1198 | q7_t * pDst, |
||
| 1199 | uint32_t blockSize); |
||
| 1200 | |||
| 1201 | void ref_fill_f32( |
||
| 1202 | float32_t value, |
||
| 1203 | float32_t * pDst, |
||
| 1204 | uint32_t blockSize); |
||
| 1205 | |||
| 1206 | void ref_fill_q31( |
||
| 1207 | q31_t value, |
||
| 1208 | q31_t * pDst, |
||
| 1209 | uint32_t blockSize); |
||
| 1210 | |||
| 1211 | void ref_fill_q15( |
||
| 1212 | q15_t value, |
||
| 1213 | q15_t * pDst, |
||
| 1214 | uint32_t blockSize); |
||
| 1215 | |||
| 1216 | void ref_fill_q7( |
||
| 1217 | q7_t value, |
||
| 1218 | q7_t * pDst, |
||
| 1219 | uint32_t blockSize); |
||
| 1220 | |||
| 1221 | void ref_q31_to_q15( |
||
| 1222 | q31_t * pSrc, |
||
| 1223 | q15_t * pDst, |
||
| 1224 | uint32_t blockSize); |
||
| 1225 | |||
| 1226 | void ref_q31_to_q7( |
||
| 1227 | q31_t * pSrc, |
||
| 1228 | q7_t * pDst, |
||
| 1229 | uint32_t blockSize); |
||
| 1230 | |||
| 1231 | void ref_q15_to_q31( |
||
| 1232 | q15_t * pSrc, |
||
| 1233 | q31_t * pDst, |
||
| 1234 | uint32_t blockSize); |
||
| 1235 | |||
| 1236 | void ref_q15_to_q7( |
||
| 1237 | q15_t * pSrc, |
||
| 1238 | q7_t * pDst, |
||
| 1239 | uint32_t blockSize); |
||
| 1240 | |||
| 1241 | void ref_q7_to_q31( |
||
| 1242 | q7_t * pSrc, |
||
| 1243 | q31_t * pDst, |
||
| 1244 | uint32_t blockSize); |
||
| 1245 | |||
| 1246 | void ref_q7_to_q15( |
||
| 1247 | q7_t * pSrc, |
||
| 1248 | q15_t * pDst, |
||
| 1249 | uint32_t blockSize); |
||
| 1250 | |||
| 1251 | void ref_q63_to_float( |
||
| 1252 | q63_t * pSrc, |
||
| 1253 | float32_t * pDst, |
||
| 1254 | uint32_t blockSize); |
||
| 1255 | |||
| 1256 | void ref_q31_to_float( |
||
| 1257 | q31_t * pSrc, |
||
| 1258 | float32_t * pDst, |
||
| 1259 | uint32_t blockSize); |
||
| 1260 | |||
| 1261 | void ref_q15_to_float( |
||
| 1262 | q15_t * pSrc, |
||
| 1263 | float32_t * pDst, |
||
| 1264 | uint32_t blockSize); |
||
| 1265 | |||
| 1266 | void ref_q7_to_float( |
||
| 1267 | q7_t * pSrc, |
||
| 1268 | float32_t * pDst, |
||
| 1269 | uint32_t blockSize); |
||
| 1270 | |||
| 1271 | void ref_float_to_q31( |
||
| 1272 | float32_t * pSrc, |
||
| 1273 | q31_t * pDst, |
||
| 1274 | uint32_t blockSize); |
||
| 1275 | |||
| 1276 | void ref_float_to_q15( |
||
| 1277 | float32_t * pSrc, |
||
| 1278 | q15_t * pDst, |
||
| 1279 | uint32_t blockSize); |
||
| 1280 | |||
| 1281 | void ref_float_to_q7( |
||
| 1282 | float32_t * pSrc, |
||
| 1283 | q7_t * pDst, |
||
| 1284 | uint32_t blockSize); |
||
| 1285 | |||
| 1286 | /* |
||
| 1287 | * Transform Functions |
||
| 1288 | */ |
||
| 1289 | void ref_cfft_f32( |
||
| 1290 | const arm_cfft_instance_f32 * S, |
||
| 1291 | float32_t * p1, |
||
| 1292 | uint8_t ifftFlag, |
||
| 1293 | uint8_t bitReverseFlag); |
||
| 1294 | |||
| 1295 | void ref_cfft_q31( |
||
| 1296 | const arm_cfft_instance_q31 * S, |
||
| 1297 | q31_t * p1, |
||
| 1298 | uint8_t ifftFlag, |
||
| 1299 | uint8_t bitReverseFlag); |
||
| 1300 | |||
| 1301 | void ref_cfft_q15( |
||
| 1302 | const arm_cfft_instance_q15 * S, |
||
| 1303 | q15_t * p1, |
||
| 1304 | uint8_t ifftFlag, |
||
| 1305 | uint8_t bitReverseFlag); |
||
| 1306 | |||
| 1307 | void ref_cfft_radix2_f32( |
||
| 1308 | const arm_cfft_radix2_instance_f32 * S, |
||
| 1309 | float32_t * pSrc); |
||
| 1310 | |||
| 1311 | void ref_cfft_radix2_q31( |
||
| 1312 | const arm_cfft_radix2_instance_q31 * S, |
||
| 1313 | q31_t * pSrc); |
||
| 1314 | |||
| 1315 | void ref_cfft_radix2_q15( |
||
| 1316 | const arm_cfft_radix2_instance_q15 * S, |
||
| 1317 | q15_t * pSrc); |
||
| 1318 | |||
| 1319 | void ref_cfft_radix4_f32( |
||
| 1320 | const arm_cfft_radix4_instance_f32 * S, |
||
| 1321 | float32_t * pSrc); |
||
| 1322 | |||
| 1323 | void ref_cfft_radix4_q31( |
||
| 1324 | const arm_cfft_radix4_instance_q31 * S, |
||
| 1325 | q31_t * pSrc); |
||
| 1326 | |||
| 1327 | void ref_cfft_radix4_q15( |
||
| 1328 | const arm_cfft_radix4_instance_q15 * S, |
||
| 1329 | q15_t * pSrc); |
||
| 1330 | |||
| 1331 | void ref_rfft_f32( |
||
| 1332 | arm_rfft_instance_f32 * S, |
||
| 1333 | float32_t * pSrc, |
||
| 1334 | float32_t * pDst); |
||
| 1335 | |||
| 1336 | void ref_rfft_fast_f32( |
||
| 1337 | arm_rfft_fast_instance_f32 * S, |
||
| 1338 | float32_t * p, float32_t * pOut, |
||
| 1339 | uint8_t ifftFlag); |
||
| 1340 | |||
| 1341 | void ref_rfft_q31( |
||
| 1342 | const arm_rfft_instance_q31 * S, |
||
| 1343 | q31_t * pSrc, |
||
| 1344 | q31_t * pDst); |
||
| 1345 | |||
| 1346 | void ref_rfft_q15( |
||
| 1347 | const arm_rfft_instance_q15 * S, |
||
| 1348 | q15_t * pSrc, |
||
| 1349 | q15_t * pDst); |
||
| 1350 | |||
| 1351 | void ref_dct4_f32( |
||
| 1352 | const arm_dct4_instance_f32 * S, |
||
| 1353 | float32_t * pState, |
||
| 1354 | float32_t * pInlineBuffer); |
||
| 1355 | |||
| 1356 | void ref_dct4_q31( |
||
| 1357 | const arm_dct4_instance_q31 * S, |
||
| 1358 | q31_t * pState, |
||
| 1359 | q31_t * pInlineBuffer); |
||
| 1360 | |||
| 1361 | void ref_dct4_q15( |
||
| 1362 | const arm_dct4_instance_q15 * S, |
||
| 1363 | q15_t * pState, |
||
| 1364 | q15_t * pInlineBuffer); |
||
| 1365 | |||
| 1366 | /* |
||
| 1367 | * Intrinsics |
||
| 1368 | */ |
||
| 1369 | q31_t ref__QADD8(q31_t x, q31_t y); |
||
| 1370 | q31_t ref__QSUB8(q31_t x, q31_t y); |
||
| 1371 | q31_t ref__QADD16(q31_t x, q31_t y); |
||
| 1372 | q31_t ref__SHADD16(q31_t x, q31_t y); |
||
| 1373 | q31_t ref__QSUB16(q31_t x, q31_t y); |
||
| 1374 | q31_t ref__SHSUB16(q31_t x, q31_t y); |
||
| 1375 | q31_t ref__QASX(q31_t x, q31_t y); |
||
| 1376 | q31_t ref__SHASX(q31_t x, q31_t y); |
||
| 1377 | q31_t ref__QSAX(q31_t x, q31_t y); |
||
| 1378 | q31_t ref__SHSAX(q31_t x, q31_t y); |
||
| 1379 | q31_t ref__SMUSDX(q31_t x, q31_t y); |
||
| 1380 | q31_t ref__SMUADX(q31_t x, q31_t y); |
||
| 1381 | q31_t ref__QADD(q31_t x, q31_t y); |
||
| 1382 | q31_t ref__QSUB(q31_t x, q31_t y); |
||
| 1383 | q31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum); |
||
| 1384 | q31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum); |
||
| 1385 | q31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum); |
||
| 1386 | q63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum); |
||
| 1387 | q63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum); |
||
| 1388 | q31_t ref__SMUAD(q31_t x, q31_t y); |
||
| 1389 | q31_t ref__SMUSD(q31_t x, q31_t y); |
||
| 1390 | q31_t ref__SXTB16(q31_t x); |
||
| 1391 | |||
| 1392 | #ifdef __cplusplus |
||
| 1393 | } |
||
| 1394 | #endif |
||
| 1395 | |||
| 1396 | #endif |