Subversion Repositories DashDisplay

Rev

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