FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/basicop2.c @ 161:fe5aceaf51e0
doc/EFR-library-API: document new handling of BFI with no data
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 15 Dec 2022 19:21:45 +0000 |
parents | 38326102fc43 |
children |
rev | line source |
---|---|
38
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Basic arithmetic operators. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | Include-Files | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <stdint.h> |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include "typedef.h" |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include "namespace.h" |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #include "basic_op.h" |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 #include "count.h" |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 extern BASIC_OP counter; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 | Functions | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 | Function Name : saturate | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 | Limit the 32 bit input to the range of a 16 bit word. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 | range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 static inline Word16 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 saturate (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 if (L_var1 > 0X00007fffL) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 var_out = MAX_16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 else if (L_var1 < (Word32) 0xffff8000L) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 var_out = MIN_16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 var_out = extract_l (L_var1); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 counter.extract_l--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 | Function Name : add | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 | Performs the addition (var1+var2) with overflow control and saturation;| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 | the 16 bit result is set at +32767 when overflow occurs or at -32768 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 | when underflow occurs. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 Word16 add (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 Word32 L_sum; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 L_sum = (Word32) var1 + var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 var_out = saturate (L_sum); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 counter.add++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 | Function Name : sub | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 | Performs the subtraction (var1+var2) with overflow control and satu- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 | ration; the 16 bit result is set at +32767 when overflow occurs or at | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 | -32768 when underflow occurs. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 Word16 sub (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 Word32 L_diff; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 L_diff = (Word32) var1 - var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 var_out = saturate (L_diff); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 counter.sub++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 | Function Name : abs_s | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 | Absolute value of var1; abs_s(-32768) = 32767. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 | range : 0x0000 0000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 Word16 abs_s (Word16 var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 if (var1 == (Word16) 0X8000) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 var_out = MAX_16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 if (var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 var_out = -var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 var_out = var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 counter.abs_s++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 | Function Name : shl | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 | Arithmetically shift the 16 bit input var1 left var2 positions.Zero fill| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 | the var2 LSB of the result. If var2 is negative, arithmetically shift | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 | var1 right by -var2 with sign extension. Saturate the result in case of | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 | underflows or overflows. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 Word16 shl (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 Word32 result; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 if (var2 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 var_out = shr (var1, -var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 counter.shr--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 result = (Word32) var1 *((Word32) 1 << var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 if ((var2 > 15 && var1 != 0) || (result != (Word32) ((Word16) result))) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 var_out = (var1 > 0) ? MAX_16 : MIN_16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 var_out = extract_l (result); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 counter.extract_l--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 counter.shl++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 | Function Name : shr | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 | Arithmetically shift the 16 bit input var1 right var2 positions with | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 | sign extension. If var2 is negative, arithmetically shift var1 left by | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 | -var2 with sign extension. Saturate the result in case of underflows or | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 | overflows. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 Word16 shr (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 if (var2 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 var_out = shl (var1, -var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 counter.shl--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 if (var2 >= 15) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 var_out = (var1 < 0) ? -1 : 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 if (var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 var_out = ~((~var1) >> var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 var_out = var1 >> var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 counter.shr++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 | Function Name : mult | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 | Performs the multiplication of var1 by var2 and gives a 16 bit result | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 | which is scaled i.e.: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 | mult(var1,var2) = extract_l(L_shr((var1 times var2),15)) and | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 | mult(-32768,-32768) = 32767. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 Word16 mult (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 Word32 L_product; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 L_product = (Word32) var1 *(Word32) var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 L_product = (L_product & (Word32) 0xffff8000L) >> 15; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 if (L_product & (Word32) 0x00010000L) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 L_product = L_product | (Word32) 0xffff0000L; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 var_out = saturate (L_product); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 counter.mult++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 | Function Name : L_mult | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 | L_mult is the 32 bit result of the multiplication of var1 times var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 | with one shift left i.e.: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 | L_mult(var1,var2) = L_shl((var1 times var2),1) and | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 | L_mult(-32768,-32768) = 2147483647. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 Word32 L_mult (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 L_var_out = (Word32) var1 *(Word32) var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 if (L_var_out != (Word32) 0x40000000L) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 L_var_out *= 2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 L_var_out = MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 counter.L_mult++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 | Function Name : negate | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 | Negate var1 with saturation, saturate in the case where input is -32768:| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 | negate(var1) = sub(0,var1). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 Word16 negate (Word16 var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 var_out = (var1 == MIN_16) ? MAX_16 : -var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 counter.negate++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 | Function Name : extract_h | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 | Return the 16 MSB of L_var1. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 | 32 bit long signed integer (Word32 ) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 | range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 Word16 extract_h (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 var_out = (Word16) (L_var1 >> 16); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 counter.extract_h++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 | Function Name : extract_l | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 | Return the 16 LSB of L_var1. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 | 32 bit long signed integer (Word32 ) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 | range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 Word16 extract_l (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 var_out = (Word16) L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 counter.extract_l++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 | Function Name : round | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 | Round the lower 16 bits of the 32 bit input number into the MS 16 bits | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 | with saturation. Shift the resulting bits right by 16 and return the 16 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 | bit number: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 | round(L_var1) = extract_h(L_add(L_var1,32768)) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 | 32 bit long signed integer (Word32 ) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 | range : 0x8000 0000 <= L_var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 Word16 round (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 Word32 L_rounded; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 L_rounded = L_add (L_var1, (Word32) 0x00008000L); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 counter.L_add--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 var_out = extract_h (L_rounded); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 counter.extract_h--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 counter.round++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 | Function Name : L_mac | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 | Multiply var1 by var2 and shift the result left by 1. Add the 32 bit | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 | result to L_var3 with saturation, return a 32 bit result: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 | L_mac(L_var3,var1,var2) = L_add(L_var3,L_mult(var1,var2)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 Word32 L_mac (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 Word32 L_product; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 L_product = L_mult (var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 counter.L_mult--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693 L_var_out = L_add (L_var3, L_product); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 counter.L_add--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 counter.L_mac++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 | Function Name : L_msu | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 | Multiply var1 by var2 and shift the result left by 1. Subtract the 32 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 | bit result to L_var3 with saturation, return a 32 bit result: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 | L_msu(L_var3,var1,var2) = L_sub(L_var3,L_mult(var1,var2)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 Word32 L_product; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 L_product = L_mult (var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 counter.L_mult--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747 L_var_out = L_sub (L_var3, L_product); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 counter.L_sub--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 counter.L_msu++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 | Function Name : L_macNs | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 | Multiply var1 by var2 and shift the result left by 1. Add the 32 bit | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 | result to L_var3 without saturation, return a 32 bit result. Generate | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763 | carry and overflow values : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 | L_macNs(L_var3,var1,var2) = L_add_c(L_var3,L_mult(var1,var2)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 | Caution : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 | In some cases the Carry flag has to be cleared or set before using | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 | operators which take into account its value. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 Word32 L_macNs (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802 L_var_out = L_mult (var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804 counter.L_mult--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 L_var_out = L_add_c (L_var3, L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 counter.L_add_c--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 counter.L_macNs++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 | Function Name : L_msuNs | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820 | Multiply var1 by var2 and shift the result left by 1. Subtract the 32 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 | bit result from L_var3 without saturation, return a 32 bit result. Ge- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 | nerate carry and overflow values : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 | L_msuNs(L_var3,var1,var2) = L_sub_c(L_var3,L_mult(var1,var2)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 | Complexity weight : 1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 | Caution : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 | In some cases the Carry flag has to be cleared or set before using | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853 | operators which take into account its value. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857 Word32 L_msuNs (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 L_var_out = L_mult (var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 counter.L_mult--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865 L_var_out = L_sub_c (L_var3, L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 counter.L_sub_c--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 counter.L_msuNs++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 | Function Name : L_add | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 | 32 bits addition of the two 32 bits variables (L_var1+L_var2) with | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 | overflow control and saturation; the result is set at +2147483647 when | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 | overflow occurs or at -2147483648 when underflow occurs. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 | L_var2 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 Word32 L_add (Word32 L_var1, Word32 L_var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 L_var_out = L_var1 + L_var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911 if (((L_var1 ^ L_var2) & MIN_32) == 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 if ((L_var_out ^ L_var1) & MIN_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 L_var_out = (L_var1 < 0) ? MIN_32 : MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 counter.L_add++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 | Function Name : L_sub | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 | 32 bits subtraction of the two 32 bits variables (L_var1-L_var2) with | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 | overflow control and saturation; the result is set at +2147483647 when | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 | overflow occurs or at -2147483648 when underflow occurs. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 | L_var2 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 Word32 L_sub (Word32 L_var1, Word32 L_var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 L_var_out = L_var1 - L_var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 if (((L_var1 ^ L_var2) & MIN_32) != 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 if ((L_var_out ^ L_var1) & MIN_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967 L_var_out = (L_var1 < 0L) ? MIN_32 : MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 counter.L_sub++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 | Function Name : L_add_c | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 | Performs 32 bits addition of the two 32 bits variables (L_var1+L_var2+C)| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 | with carry. No saturation. Generate carry and Overflow values. The car- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 | ry and overflow values are binary variables which can be tested and as- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 | signed values. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995 | L_var2 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 | Caution : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 | In some cases the Carry flag has to be cleared or set before using | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 | operators which take into account its value. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 Word32 L_add_c (Word32 L_var1, Word32 L_var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 Word32 L_test; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018 Flag carry_int = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 L_var_out = L_var1 + L_var2 + Carry; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 L_test = L_var1 + L_var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 if ((L_var1 > 0) && (L_var2 > 0) && (L_test < 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 carry_int = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 if ((L_var1 < 0) && (L_var2 < 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 if (L_test >= 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036 carry_int = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041 carry_int = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 if (((L_var1 ^ L_var2) < 0) && (L_test >= 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 carry_int = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 carry_int = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 if (Carry) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 if (L_test == MAX_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 Carry = carry_int; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 if (L_test == (Word32) 0xFFFFFFFFL) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 Carry = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 Carry = carry_int; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080 Carry = carry_int; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 counter.L_add_c++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 | Function Name : L_sub_c | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 | Performs 32 bits subtraction of the two 32 bits variables with carry | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096 | (borrow) : L_var1-L_var2-C. No saturation. Generate carry and Overflow | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 | values. The carry and overflow values are binary variables which can | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 | be tested and assigned values. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 | L_var2 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 | Caution : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122 | In some cases the Carry flag has to be cleared or set before using | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123 | operators which take into account its value. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 Word32 L_sub_c (Word32 L_var1, Word32 L_var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 Word32 L_test; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 Flag carry_int = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1132 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1133 if (Carry) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1134 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1135 Carry = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1136 if (L_var2 != MIN_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1137 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1138 L_var_out = L_add_c (L_var1, -L_var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1139 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1140 counter.L_add_c--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1141 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1142 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1143 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1144 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1145 L_var_out = L_var1 - L_var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1146 if (L_var1 > 0L) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1147 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1148 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1149 Carry = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1150 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1151 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1152 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1153 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1154 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1155 L_var_out = L_var1 - L_var2 - (Word32) 0X00000001L; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1156 L_test = L_var1 - L_var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1157 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1158 if ((L_test < 0) && (L_var1 > 0) && (L_var2 < 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1159 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1160 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1161 carry_int = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1162 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1163 else if ((L_test > 0) && (L_var1 < 0) && (L_var2 > 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1164 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1165 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1166 carry_int = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1167 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1168 else if ((L_test > 0) && ((L_var1 ^ L_var2) > 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1169 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1170 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1171 carry_int = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1172 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1173 if (L_test == MIN_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1174 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1175 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1176 Carry = carry_int; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1177 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1178 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1179 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1180 Carry = carry_int; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1181 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1182 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1183 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1184 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1185 counter.L_sub_c++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1186 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1187 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1188 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1189 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1190 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1191 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1192 | Function Name : L_negate | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1193 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1194 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1195 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1196 | Negate the 32 bit variable L_var1 with saturation; saturate in the case | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1197 | where input is -2147483648 (0x8000 0000). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1198 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1199 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1200 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1201 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1202 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1203 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1204 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1205 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1206 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1207 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1208 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1209 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1210 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1211 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1212 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1213 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1214 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1215 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1216 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1217 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1218 Word32 L_negate (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1219 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1220 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1221 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1222 L_var_out = (L_var1 == MIN_32) ? MAX_32 : -L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1223 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1224 counter.L_negate++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1225 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1226 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1227 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1228 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1229 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1230 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1231 | Function Name : mult_r | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1232 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1233 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1234 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1235 | Same as mult with rounding, i.e.: | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1236 | mult_r(var1,var2) = extract_l(L_shr(((var1 * var2) + 16384),15)) and | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1237 | mult_r(-32768,-32768) = 32767. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1238 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1239 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1240 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1241 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1242 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1243 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1244 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1245 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1246 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1247 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1248 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1249 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1250 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1251 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1252 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1253 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1254 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1255 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1256 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1257 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1258 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1259 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1260 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1261 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1262 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1263 Word16 mult_r (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1264 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1265 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1266 Word32 L_product_arr; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1267 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1268 L_product_arr = (Word32) var1 *(Word32) var2; /* product */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1269 L_product_arr += (Word32) 0x00004000L; /* round */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1270 L_product_arr &= (Word32) 0xffff8000L; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1271 L_product_arr >>= 15; /* shift */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1272 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1273 if (L_product_arr & (Word32) 0x00010000L) /* sign extend when necessary */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1274 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1275 L_product_arr |= (Word32) 0xffff0000L; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1276 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1277 var_out = saturate (L_product_arr); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1278 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1279 counter.mult_r++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1280 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1281 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1282 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1283 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1284 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1285 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1286 | Function Name : L_shl | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1287 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1288 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1289 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1290 | Arithmetically shift the 32 bit input L_var1 left var2 positions. Zero | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1291 | fill the var2 LSB of the result. If var2 is negative, arithmetically | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1292 | shift L_var1 right by -var2 with sign extension. Saturate the result in | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1293 | case of underflows or overflows. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1294 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1295 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1296 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1297 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1298 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1299 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1300 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1301 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1302 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1303 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1304 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1305 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1306 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1307 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1308 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1309 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1310 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1311 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1312 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1313 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1314 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1315 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1316 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1317 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1318 Word32 L_shl (Word32 L_var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1319 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1320 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1321 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1322 if (var2 <= 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1323 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1324 L_var_out = L_shr (L_var1, -var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1325 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1326 counter.L_shr--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1327 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1328 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1329 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1330 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1331 for (; var2 > 0; var2--) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1332 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1333 if (L_var1 > (Word32) 0X3fffffffL) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1334 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1335 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1336 L_var_out = MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1337 break; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1338 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1339 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1340 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1341 if (L_var1 < (Word32) 0xc0000000L) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1342 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1343 Overflow = 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1344 L_var_out = MIN_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1345 break; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1346 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1347 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1348 L_var1 *= 2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1349 L_var_out = L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1350 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1351 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1352 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1353 counter.L_shl++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1354 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1355 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1356 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1357 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1358 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1359 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1360 | Function Name : L_shr | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1361 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1362 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1363 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1364 | Arithmetically shift the 32 bit input L_var1 right var2 positions with | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1365 | sign extension. If var2 is negative, arithmetically shift L_var1 left | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1366 | by -var2 and zero fill the -var2 LSB of the result. Saturate the result | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1367 | in case of underflows or overflows. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1368 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1369 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1370 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1371 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1372 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1373 | L_var1 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1374 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1375 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1376 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1377 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1378 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1379 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1380 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1381 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1382 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1383 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1384 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1385 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1386 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1387 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1388 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1389 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1390 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1391 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1392 Word32 L_shr (Word32 L_var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1393 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1394 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1395 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1396 if (var2 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1397 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1398 L_var_out = L_shl (L_var1, -var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1399 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1400 counter.L_shl--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1401 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1402 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1403 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1404 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1405 if (var2 >= 31) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1406 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1407 L_var_out = (L_var1 < 0L) ? -1 : 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1408 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1409 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1410 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1411 if (L_var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1412 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1413 L_var_out = ~((~L_var1) >> var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1414 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1415 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1416 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1417 L_var_out = L_var1 >> var2; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1418 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1419 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1420 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1421 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1422 counter.L_shr++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1423 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1424 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1425 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1426 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1427 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1428 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1429 | Function Name : shr_r | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1430 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1431 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1432 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1433 | Same as shr(var1,var2) but with rounding. Saturate the result in case of| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1434 | underflows or overflows : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1435 | - If var2 is greater than zero : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1436 | if (sub(shl(shr(var1,var2),1),shr(var1,sub(var2,1)))) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1437 | is equal to zero | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1438 | then | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1439 | shr_r(var1,var2) = shr(var1,var2) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1440 | else | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1441 | shr_r(var1,var2) = add(shr(var1,var2),1) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1442 | - If var2 is less than or equal to zero : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1443 | shr_r(var1,var2) = shr(var1,var2). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1444 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1445 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1446 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1447 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1448 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1449 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1450 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1451 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1452 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1453 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1454 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1455 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1456 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1457 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1458 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1459 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1460 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1461 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1462 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1463 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1464 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1465 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1466 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1467 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1468 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1469 Word16 shr_r (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1470 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1471 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1472 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1473 if (var2 > 15) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1474 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1475 var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1476 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1477 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1478 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1479 var_out = shr (var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1480 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1481 counter.shr--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1482 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1483 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1484 if (var2 > 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1485 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1486 if ((var1 & ((Word16) 1 << (var2 - 1))) != 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1487 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1488 var_out++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1489 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1490 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1491 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1492 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1493 counter.shr_r++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1494 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1495 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1496 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1497 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1498 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1499 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1500 | Function Name : mac_r | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1501 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1502 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1503 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1504 | Multiply var1 by var2 and shift the result left by 1. Add the 32 bit | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1505 | result to L_var3 with saturation. Round the LS 16 bits of the result | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1506 | into the MS 16 bits with saturation and shift the result right by 16. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1507 | Return a 16 bit result. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1508 | mac_r(L_var3,var1,var2) = round(L_mac(L_var3,var1,var2)) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1509 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1510 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1511 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1512 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1513 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1514 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1515 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1516 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1517 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1518 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1519 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1520 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1521 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1522 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1523 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1524 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1525 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1526 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1527 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1528 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1529 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1530 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1531 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1532 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1533 | range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1534 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1535 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1536 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1537 Word16 mac_r (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1538 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1539 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1540 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1541 L_var3 = L_mac (L_var3, var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1542 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1543 counter.L_mac--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1544 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1545 L_var3 = L_add (L_var3, (Word32) 0x00008000L); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1546 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1547 counter.L_add--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1548 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1549 var_out = extract_h (L_var3); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1550 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1551 counter.extract_h--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1552 counter.mac_r++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1553 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1554 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1555 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1556 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1557 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1558 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1559 | Function Name : msu_r | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1560 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1561 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1562 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1563 | Multiply var1 by var2 and shift the result left by 1. Subtract the 32 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1564 | bit result to L_var3 with saturation. Round the LS 16 bits of the res- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1565 | ult into the MS 16 bits with saturation and shift the result right by | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1566 | 16. Return a 16 bit result. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1567 | msu_r(L_var3,var1,var2) = round(L_msu(L_var3,var1,var2)) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1568 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1569 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1570 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1571 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1572 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1573 | L_var3 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1574 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1575 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1576 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1577 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1578 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1579 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1580 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1581 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1582 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1583 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1584 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1585 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1586 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1587 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1588 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1589 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1590 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1591 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1592 | range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1593 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1594 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1595 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1596 Word16 msu_r (Word32 L_var3, Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1597 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1598 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1599 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1600 L_var3 = L_msu (L_var3, var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1601 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1602 counter.L_msu--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1603 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1604 L_var3 = L_add (L_var3, (Word32) 0x00008000L); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1605 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1606 counter.L_add--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1607 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1608 var_out = extract_h (L_var3); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1609 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1610 counter.extract_h--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1611 counter.msu_r++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1612 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1613 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1614 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1615 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1616 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1617 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1618 | Function Name : L_deposit_h | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1619 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1620 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1621 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1622 | Deposit the 16 bit var1 into the 16 MS bits of the 32 bit output. The | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1623 | 16 LS bits of the output are zeroed. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1624 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1625 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1626 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1627 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1628 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1629 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1630 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1631 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1632 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1633 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1634 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1635 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1636 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1637 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1638 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1639 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1640 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1641 | range : 0x8000 0000 <= var_out <= 0x7fff 0000. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1642 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1643 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1644 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1645 Word32 L_deposit_h (Word16 var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1646 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1647 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1648 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1649 L_var_out = (Word32) var1 << 16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1650 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1651 counter.L_deposit_h++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1652 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1653 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1654 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1655 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1656 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1657 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1658 | Function Name : L_deposit_l | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1659 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1660 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1661 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1662 | Deposit the 16 bit var1 into the 16 LS bits of the 32 bit output. The | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1663 | 16 MS bits of the output are sign extended. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1664 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1665 | Complexity weight : 2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1666 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1667 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1668 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1669 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1670 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1671 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1672 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1673 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1674 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1675 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1676 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1677 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1678 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1679 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1680 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1681 | range : 0xFFFF 8000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1682 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1683 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1684 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1685 Word32 L_deposit_l (Word16 var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1686 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1687 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1688 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1689 L_var_out = (Word32) var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1690 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1691 counter.L_deposit_l++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1692 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1693 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1694 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1695 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1696 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1697 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1698 | Function Name : L_shr_r | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1699 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1700 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1701 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1702 | Same as L_shr(L_var1,var2) but with rounding. Saturate the result in | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1703 | case of underflows or overflows : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1704 | - If var2 is greater than zero : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1705 | if (L_sub(L_shl(L_shr(L_var1,var2),1),L_shr(L_var1,sub(var2,1))))| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1706 | is equal to zero | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1707 | then | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1708 | L_shr_r(L_var1,var2) = L_shr(L_var1,var2) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1709 | else | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1710 | L_shr_r(L_var1,var2) = L_add(L_shr(L_var1,var2),1) | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1711 | - If var2 is less than or equal to zero : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1712 | L_shr_r(L_var1,var2) = L_shr(L_var1,var2). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1713 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1714 | Complexity weight : 3 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1715 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1716 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1717 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1718 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1719 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1720 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1721 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1722 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1723 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1724 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1725 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1726 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1727 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1728 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1729 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1730 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1731 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1732 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1733 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1734 | range : 0x8000 0000 <= var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1735 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1736 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1737 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1738 Word32 L_shr_r (Word32 L_var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1739 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1740 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1741 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1742 if (var2 > 31) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1743 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1744 L_var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1745 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1746 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1747 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1748 L_var_out = L_shr (L_var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1749 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1750 counter.L_shr--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1751 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1752 if (var2 > 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1753 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1754 if ((L_var1 & ((Word32) 1 << (var2 - 1))) != 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1755 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1756 L_var_out++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1757 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1758 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1759 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1760 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1761 counter.L_shr_r++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1762 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1763 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1764 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1765 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1766 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1767 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1768 | Function Name : L_abs | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1769 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1770 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1771 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1772 | Absolute value of L_var1; Saturate in case where the input is | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1773 | -214783648 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1774 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1775 | Complexity weight : 3 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1776 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1777 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1778 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1779 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1780 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1781 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1782 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1783 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1784 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1785 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1786 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1787 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1788 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1789 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1790 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1791 | range : 0x0000 0000 <= var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1792 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1793 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1794 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1795 Word32 L_abs (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1796 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1797 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1798 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1799 if (L_var1 == MIN_32) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1800 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1801 L_var_out = MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1802 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1803 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1804 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1805 if (L_var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1806 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1807 L_var_out = -L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1808 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1809 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1810 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1811 L_var_out = L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1812 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1813 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1814 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1815 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1816 counter.L_abs++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1817 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1818 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1819 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1820 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1821 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1822 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1823 | Function Name : L_sat | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1824 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1825 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1826 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1827 | 32 bit L_var1 is set to 2147483647 if an overflow occured or to | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1828 | -2147483648 if an underflow occured on the most recent L_add_c, | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1829 | L_sub_c, L_macNs or L_msuNs operations. The carry and overflow values | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1830 | are binary values which can be tested and assigned values. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1831 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1832 | Complexity weight : 4 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1833 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1834 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1835 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1836 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1837 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1838 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1839 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1840 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1841 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1842 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1843 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1844 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1845 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1846 | L_var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1847 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1848 | range : 0x8000 0000 <= var_out <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1849 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1850 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1851 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1852 Word32 L_sat (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1853 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1854 Word32 L_var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1855 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1856 L_var_out = L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1857 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1858 if (Overflow) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1859 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1860 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1861 if (Carry) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1862 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1863 L_var_out = MIN_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1864 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1865 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1866 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1867 L_var_out = MAX_32; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1868 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1869 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1870 Carry = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1871 Overflow = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1872 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1873 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1874 counter.L_sat++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1875 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1876 return (L_var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1877 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1878 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1879 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1880 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1881 | Function Name : norm_s | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1882 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1883 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1884 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1885 | Produces the number of left shift needed to normalize the 16 bit varia- | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1886 | ble var1 for positive values on the interval with minimum of 16384 and | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1887 | maximum of 32767, and for negative values on the interval with minimum | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1888 | of -32768 and maximum of -16384; in order to normalize the result, the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1889 | following operation must be done : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1890 | norm_var1 = shl(var1,norm_s(var1)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1891 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1892 | Complexity weight : 15 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1893 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1894 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1895 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1896 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1897 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1898 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1899 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1900 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1901 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1902 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1903 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1904 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1905 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1906 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1907 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1908 | range : 0x0000 0000 <= var_out <= 0x0000 000f. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1909 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1910 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1911 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1912 Word16 norm_s (Word16 var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1913 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1914 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1915 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1916 if (var1 == 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1917 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1918 var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1919 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1920 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1921 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1922 if (var1 == (Word16) 0xffff) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1923 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1924 var_out = 15; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1925 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1926 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1927 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1928 if (var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1929 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1930 var1 = ~var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1931 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1932 for (var_out = 0; var1 < 0x4000; var_out++) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1933 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1934 var1 <<= 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1935 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1936 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1937 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1938 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1939 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1940 counter.norm_s++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1941 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1942 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1943 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1944 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1945 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1946 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1947 | Function Name : div_s | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1948 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1949 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1950 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1951 | Produces a result which is the fractional integer division of var1 by | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1952 | var2; var1 and var2 must be positive and var2 must be greater or equal | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1953 | to var1; the result is positive (leading bit equal to 0) and truncated | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1954 | to 16 bits. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1955 | If var1 = var2 then div(var1,var2) = 32767. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1956 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1957 | Complexity weight : 18 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1958 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1959 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1960 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1961 | var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1962 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1963 | range : 0x0000 0000 <= var1 <= var2 and var2 != 0. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1964 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1965 | var2 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1966 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1967 | range : var1 <= var2 <= 0x0000 7fff and var2 != 0. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1968 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1969 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1970 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1971 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1972 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1973 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1974 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1975 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1976 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1977 | range : 0x0000 0000 <= var_out <= 0x0000 7fff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1978 | It's a Q15 value (point between b15 and b14). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1979 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1980 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1981 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1982 Word16 div_s (Word16 var1, Word16 var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1983 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1984 Word16 var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1985 Word16 iteration; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1986 Word32 L_num; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1987 Word32 L_denom; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1988 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1989 #if 0 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1990 if ((var1 > var2) || (var1 < 0) || (var2 < 0)) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1991 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1992 printf ("Division Error var1=%d var2=%d\n", var1, var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1993 exit (0); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1994 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1995 if (var2 == 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1996 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1997 printf ("Division by 0, Fatal error \n"); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1998 exit (0); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1999 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2000 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2001 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2002 if (var1 == 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2003 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2004 var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2005 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2006 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2007 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2008 if (var1 == var2) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2009 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2010 var_out = MAX_16; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2011 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2012 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2013 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2014 L_num = L_deposit_l (var1); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2015 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2016 counter.L_deposit_l--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2017 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2018 L_denom = L_deposit_l (var2); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2019 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2020 counter.L_deposit_l--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2021 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2022 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2023 for (iteration = 0; iteration < 15; iteration++) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2024 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2025 var_out <<= 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2026 L_num <<= 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2027 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2028 if (L_num >= L_denom) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2029 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2030 L_num = L_sub (L_num, L_denom); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2031 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2032 counter.L_sub--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2033 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2034 var_out = add (var_out, 1); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2035 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2036 counter.add--; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2037 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2038 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2039 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2040 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2041 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2042 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2043 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2044 counter.div_s++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2045 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2046 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2047 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2048 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2049 /*___________________________________________________________________________ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2050 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2051 | Function Name : norm_l | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2052 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2053 | Purpose : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2054 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2055 | Produces the number of left shifts needed to normalize the 32 bit varia-| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2056 | ble L_var1 for positive values on the interval with minimum of | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2057 | 1073741824 and maximum of 2147483647, and for negative values on the in-| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2058 | terval with minimum of -2147483648 and maximum of -1073741824; in order | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2059 | to normalize the result, the following operation must be done : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2060 | norm_L_var1 = L_shl(L_var1,norm_l(L_var1)). | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2061 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2062 | Complexity weight : 30 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2063 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2064 | Inputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2065 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2066 | L_var1 | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2067 | 32 bit long signed integer (Word32) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2068 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2069 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2070 | Outputs : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2071 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2072 | none | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2073 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2074 | Return Value : | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2075 | | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2076 | var_out | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2077 | 16 bit short signed integer (Word16) whose value falls in the | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2078 | range : 0x0000 0000 <= var_out <= 0x0000 001f. | |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2079 |___________________________________________________________________________| |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2080 */ |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2081 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2082 Word16 norm_l (Word32 L_var1) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2083 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2084 Word16 var_out; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2085 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2086 if (L_var1 == 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2087 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2088 var_out = 0; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2089 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2090 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2091 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2092 if (L_var1 == (Word32) 0xffffffffL) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2093 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2094 var_out = 31; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2095 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2096 else |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2097 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2098 if (L_var1 < 0) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2099 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2100 L_var1 = ~L_var1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2101 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2102 for (var_out = 0; L_var1 < (Word32) 0x40000000L; var_out++) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2103 { |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2104 L_var1 <<= 1; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2105 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2106 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2107 } |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2108 |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2109 #if (WMOPS) |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2110 counter.norm_l++; |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2111 #endif |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2112 return (var_out); |
38326102fc43
libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2113 } |