Subversion Repositories AFRtranscoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
#include "ref.h"
2
 
3
float32_t scratchArray[8192*2];
4
 
5
arm_cfft_instance_f32 ref_cfft_sR_f32_len8192 = { 8192, 0, 0, 0 };
6
 
7
q31_t ref_sat_n(q31_t num, uint32_t bits)
8
{
9
        int32_t posMax, negMin;
10
        uint32_t i;
11
 
12
        posMax = 1;
13
        for (i = 0; i < (bits - 1); i++)
14
        {
15
                posMax = posMax * 2;
16
        }
17
 
18
        if (num > 0)
19
        {
20
                posMax = (posMax - 1);
21
 
22
                if (num > posMax)
23
                {
24
                        num = posMax;
25
                }
26
        }
27
        else
28
        {
29
                negMin = -posMax;
30
 
31
                if (num < negMin)
32
                {
33
                        num = negMin;
34
                }
35
        }
36
        return (num);
37
}
38
 
39
q31_t ref_sat_q31(q63_t num)
40
{
41
        if (num > (q63_t)INT_MAX)
42
        {
43
                return INT_MAX;
44
        }
45
        else if (num < (q63_t)0xffffffff80000000ll)
46
        {
47
                return INT_MIN;
48
        }
49
        else
50
        {
51
                return (q31_t)num;
52
        }
53
}
54
 
55
q15_t ref_sat_q15(q31_t num)
56
{
57
        if (num > (q31_t)SHRT_MAX)
58
        {
59
                return SHRT_MAX;
60
        }
61
        else if (num < (q31_t)0xffff8000)
62
        {
63
                return SHRT_MIN;
64
        }
65
        else
66
        {
67
                return (q15_t)num;
68
        }
69
}
70
 
71
q7_t ref_sat_q7(q15_t num)
72
{
73
        if (num > (q15_t)SCHAR_MAX)
74
        {
75
                return SCHAR_MAX;
76
        }
77
        else if (num < (q15_t)0xff80)
78
        {
79
                return SCHAR_MIN;
80
        }
81
        else
82
        {
83
                return (q7_t)num;
84
        }
85
}
86
 
87
float32_t ref_pow(float32_t a, uint32_t b)
88
{
89
        uint32_t i;
90
        float32_t r = a;
91
 
92
        for(i=1;i<b;i++)
93
        {
94
                r *= a;
95
        }
96
 
97
        if ( b == 0)
98
        {
99
                return 1;
100
        }
101
 
102
        return r;
103
}