annotate libgsmefr/basicops.c @ 494:aaf4dec8bee0

libgsmhr1: implement perfect SID detection
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 17 Jun 2024 23:14:19 +0000
parents 1c514150c033
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
347
1c514150c033 libgsmefr: first big perf opt: inline most basic_op.h functions
Mychaela Falconia <falcon@freecalypso.org>
parents: 38
diff changeset
1 /*
1c514150c033 libgsmefr: first big perf opt: inline most basic_op.h functions
Mychaela Falconia <falcon@freecalypso.org>
parents: 38
diff changeset
2 * This C module is a stripped-down version made from ETSI basicop2.c,
1c514150c033 libgsmefr: first big perf opt: inline most basic_op.h functions
Mychaela Falconia <falcon@freecalypso.org>
parents: 38
diff changeset
3 * reduced to just those functions which we are not inlining.
1c514150c033 libgsmefr: first big perf opt: inline most basic_op.h functions
Mychaela Falconia <falcon@freecalypso.org>
parents: 38
diff changeset
4 */
38
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 | Include-Files |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 |___________________________________________________________________________|
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 #include <stdint.h>
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "typedef.h"
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "namespace.h"
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "basic_op.h"
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
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 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 | Functions |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 |___________________________________________________________________________|
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 */
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 | Function Name : L_macNs |
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 | Purpose : |
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 | 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
30 | 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
31 | carry and overflow values : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 | 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
33 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 | Complexity weight : 1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 | 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
39 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 | 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
43 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
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 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 | 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
47 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
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 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 | none |
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 | Return Value : |
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 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 | 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
57 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 | Caution : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 | 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
62 | operators which take into account its value. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 |___________________________________________________________________________|
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 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
67 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 Word32 L_var_out;
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 L_var_out = L_mult (var1, var2);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 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
72 return (L_var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 /*___________________________________________________________________________
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 | Function Name : L_msuNs |
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 | Purpose : |
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 | 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
82 | 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
83 | nerate carry and overflow values : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 | 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
85 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 | Complexity weight : 1 |
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 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 | 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
91 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 | 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
95 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 | 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
99 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 | 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
109 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 | Caution : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 | 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
114 | operators which take into account its value. |
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 */
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 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
119 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 Word32 L_var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 L_var_out = L_mult (var1, var2);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 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
124 return (L_var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126
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 | Function Name : L_add_c |
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 | Purpose : |
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 | 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
134 | 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
135 | 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
136 | signed values. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 | Complexity weight : 2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 | 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
143 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 | 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
146 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 | 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
156 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 | Caution : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 | 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
161 | operators which take into account its value. |
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 */
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 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
165 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 Word32 L_var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 Word32 L_test;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 Flag carry_int = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 L_var_out = L_var1 + L_var2 + Carry;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 L_test = L_var1 + L_var2;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 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
175 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 carry_int = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 if ((L_var1 < 0) && (L_var2 < 0))
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 if (L_test >= 0)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 carry_int = 1;
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 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 Overflow = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 carry_int = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 }
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 else
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 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
197 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 Overflow = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 carry_int = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 else
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 Overflow = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 carry_int = 0;
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 }
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 if (Carry)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 if (L_test == MAX_32)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 Carry = carry_int;
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 else
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 if (L_test == (Word32) 0xFFFFFFFFL)
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 Carry = 1;
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 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 Carry = carry_int;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 }
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 else
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 Carry = carry_int;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 }
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 return (L_var_out);
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 /*___________________________________________________________________________
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 | Function Name : L_sub_c |
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 | Purpose : |
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 | 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
243 | (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
244 | 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
245 | be tested and assigned values. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 | Complexity weight : 2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 | 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
252 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
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 | 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
255 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 | Return Value : |
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 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 | 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
265 | range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 | Caution : |
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 | 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
270 | operators which take into account its value. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 |___________________________________________________________________________|
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 */
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 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
275 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 Word32 L_var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 Word32 L_test;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 Flag carry_int = 0;
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 (Carry)
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 Carry = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 if (L_var2 != MIN_32)
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 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
286 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289 L_var_out = L_var1 - L_var2;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 if (L_var1 > 0L)
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 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 Carry = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 else
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 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
300 L_test = L_var1 - L_var2;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302 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
303 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305 carry_int = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
306 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
307 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
308 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
310 carry_int = 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 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
313 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 Overflow = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
315 carry_int = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
316 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317 if (L_test == MIN_32)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319 Overflow = 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 Carry = carry_int;
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 else
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 Carry = carry_int;
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 }
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 return (L_var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330
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 | Function Name : shr_r |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335 | Purpose : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337 | 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
338 | underflows or overflows : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 | - If var2 is greater than zero : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 | 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
341 | is equal to zero |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342 | then |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 | shr_r(var1,var2) = shr(var1,var2) |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
344 | else |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
345 | 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
346 | - 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
347 | shr_r(var1,var2) = shr(var1,var2). |
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 | Complexity weight : 2 |
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 | Inputs : |
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 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 | 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
355 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
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 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
358 | 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
359 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
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 | Outputs : |
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 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
364 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
365 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
366 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
367 | var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
368 | 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
369 | range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
373 Word16 shr_r (Word16 var1, Word16 var2)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
374 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
375 Word16 var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
376
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
377 if (var2 > 15)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
378 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
379 var_out = 0;
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 else
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 var_out = shr (var1, var2);
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 if (var2 > 0)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
386 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
387 if ((var1 & ((Word16) 1 << (var2 - 1))) != 0)
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 var_out++;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
390 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
391 }
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 return (var_out);
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
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 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
398 | Function Name : mac_r |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
399 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400 | Purpose : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402 | 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
403 | 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
404 | 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
405 | Return a 16 bit result. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406 | 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
407 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408 | Complexity weight : 2 |
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 | Inputs : |
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_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
413 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416 | 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
417 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420 | 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
421 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
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 | Outputs : |
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 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429 | var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430 | 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
431 | range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 |___________________________________________________________________________|
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433 */
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 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
436 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 Word16 var_out;
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 L_var3 = L_mac (L_var3, var1, var2);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440 L_var3 = L_add (L_var3, (Word32) 0x00008000L);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 var_out = extract_h (L_var3);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 return (var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445 /*___________________________________________________________________________
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 | Function Name : msu_r |
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 | Purpose : |
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 | 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
452 | 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
453 | 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
454 | 16. Return a 16 bit result. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 | 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
456 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 | Complexity weight : 2 |
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 | Inputs : |
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 | 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
462 | range : 0x8000 0000 <= L_var3 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
463 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
464 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
465 | 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
466 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
467 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
468 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
469 | 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
470 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
471 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
472 | Outputs : |
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 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
475 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
476 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
477 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
478 | var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
479 | 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
480 | range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. |
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
484 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
485 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
486 Word16 var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
487
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
488 L_var3 = L_msu (L_var3, var1, var2);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
489 L_var3 = L_add (L_var3, (Word32) 0x00008000L);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
490 var_out = extract_h (L_var3);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
491 return (var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
492 }
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 /*___________________________________________________________________________
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
495 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
496 | Function Name : L_shr_r |
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 | Purpose : |
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 | 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
501 | case of underflows or overflows : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
502 | - If var2 is greater than zero : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
503 | 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
504 | is equal to zero |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
505 | then |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
506 | 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
507 | else |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
508 | 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
509 | - 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
510 | 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
511 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
512 | Complexity weight : 3 |
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 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
515 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
516 | L_var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
517 | 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
518 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. |
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 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
521 | 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
522 | range : 0xffff 8000 <= var1 <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
523 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
524 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
525 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
526 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
527 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
528 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
529 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
530 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
531 | 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
532 | range : 0x8000 0000 <= var_out <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
533 |___________________________________________________________________________|
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
534 */
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
535
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
536 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
537 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
538 Word32 L_var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
539
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
540 if (var2 > 31)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
541 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
542 L_var_out = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
543 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
544 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
545 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
546 L_var_out = L_shr (L_var1, var2);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
547 if (var2 > 0)
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 if ((L_var1 & ((Word32) 1 << (var2 - 1))) != 0)
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 L_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 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
554 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
555 return (L_var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
556 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
557
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 | Function Name : L_sat |
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 | Purpose : |
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 | 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
565 | -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
566 | 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
567 | 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
568 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
569 | Complexity weight : 4 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
570 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
571 | Inputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
572 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
573 | L_var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
574 | 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
575 | range : 0x8000 0000 <= var1 <= 0x7fff ffff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
576 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
577 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
578 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
579 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
580 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
581 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
582 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
583 | L_var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
584 | 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
585 | range : 0x8000 0000 <= var_out <= 0x7fff ffff. |
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
589 Word32 L_sat (Word32 L_var1)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
590 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
591 Word32 L_var_out;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
592
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
593 L_var_out = L_var1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
594
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
595 if (Overflow)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
596 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
597 if (Carry)
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 L_var_out = MIN_32;
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 else
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 L_var_out = MAX_32;
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
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
606 Carry = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
607 Overflow = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
608 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
609 return (L_var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
610 }
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 /*___________________________________________________________________________
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 | Function Name : div_s |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
615 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
616 | Purpose : |
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 | 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
619 | 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
620 | 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
621 | to 16 bits. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
622 | If var1 = var2 then div(var1,var2) = 32767. |
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 | Complexity weight : 18 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
625 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
626 | Inputs : |
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 | var1 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
629 | 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
630 | range : 0x0000 0000 <= var1 <= var2 and var2 != 0. |
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 | var2 |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
633 | 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
634 | range : var1 <= var2 <= 0x0000 7fff and var2 != 0. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
635 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
636 | Outputs : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
637 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
638 | none |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
639 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
640 | Return Value : |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
641 | |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
642 | var_out |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
643 | 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
644 | range : 0x0000 0000 <= var_out <= 0x0000 7fff. |
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
645 | 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
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 Word16 div_s (Word16 var1, Word16 var2)
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 Word16 var_out = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
652 Word16 iteration;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
653 Word32 L_num;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
654 Word32 L_denom;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
655
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
656 #if 0
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
657 if ((var1 > var2) || (var1 < 0) || (var2 < 0))
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 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
660 exit (0);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
661 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
662 if (var2 == 0)
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 printf ("Division by 0, Fatal error \n");
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
665 exit (0);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
666 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
667 #endif
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
668
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
669 if (var1 == 0)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
670 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
671 var_out = 0;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
672 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
673 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
674 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
675 if (var1 == var2)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
676 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
677 var_out = MAX_16;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
678 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
679 else
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
680 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
681 L_num = L_deposit_l (var1);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
682 L_denom = L_deposit_l (var2);
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 for (iteration = 0; iteration < 15; iteration++)
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 var_out <<= 1;
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
687 L_num <<= 1;
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 if (L_num >= L_denom)
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
690 {
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
691 L_num = L_sub (L_num, L_denom);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
692 var_out = add (var_out, 1);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
693 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
694 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
695 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
696 }
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
697
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
698 return (var_out);
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
699 }