annotate libgsmefr/oper_32b.h @ 490:4d80730683d4

libgsmhr1: implement TS 101 318 packing and unpacking
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 15 Jun 2024 05:33:35 +0000
parents 3da7ab45910d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39
36e1363ad885 libgsmefr: initial import of ETSI header files
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /* Double precision operations */
36e1363ad885 libgsmefr: initial import of ETSI header files
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2
348
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
3 /*****************************************************************************
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
4 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
5 * Function L_Extract() *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
6 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
7 * Extract from a 32 bit integer two 16 bit DPF. *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
8 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
9 * Arguments: *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
10 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
11 * L_32 : 32 bit integer. *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
12 * 0x8000 0000 <= L_32 <= 0x7fff ffff. *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
13 * hi : b16 to b31 of L_32 *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
14 * lo : (L_32 - hi<<16)>>1 *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
15 *****************************************************************************
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
16 */
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
17
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
18 static inline void L_Extract (Word32 L_32, Word16 *hi, Word16 *lo)
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
19 {
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
20 *hi = L_32 >> 16;
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
21 *lo = (L_32 & 0xFFFF) >> 1;
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
22 }
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
23
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
24 /*****************************************************************************
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
25 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
26 * Function L_Comp() *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
27 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
28 * Compose from two 16 bit DPF a 32 bit integer. *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
29 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
30 * L_32 = hi<<16 + lo<<1 *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
31 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
32 * Arguments: *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
33 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
34 * hi msb *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
35 * lo lsf (with sign) *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
36 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
37 * Return Value : *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
38 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
39 * 32 bit long signed integer (Word32) whose value falls in the *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
40 * range : 0x8000 0000 <= L_32 <= 0x7fff fff0. *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
41 * *
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
42 *****************************************************************************
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
43 */
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
44
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
45 static inline Word32 L_Comp (Word16 hi, Word16 lo)
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
46 {
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
47 return ((Word32) hi << 16) + ((Word32) lo << 1);
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
48 }
3da7ab45910d libgsmefr: inline L_Comp() and L_Extract()
Mychaela Falconia <falcon@freecalypso.org>
parents: 39
diff changeset
49
39
36e1363ad885 libgsmefr: initial import of ETSI header files
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2);
36e1363ad885 libgsmefr: initial import of ETSI header files
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 Word32 Mpy_32_16 (Word16 hi, Word16 lo, Word16 n);
36e1363ad885 libgsmefr: initial import of ETSI header files
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 Word32 Div_32 (Word32 L_num, Word16 denom_hi, Word16 denom_lo);