FreeCalypso > hg > gsm-codec-lib
comparison libgsmefr/oper_32b.h @ 348:3da7ab45910d
libgsmefr: inline L_Comp() and L_Extract()
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 22 Apr 2024 00:05:01 +0000 |
parents | 36e1363ad885 |
children |
comparison
equal
deleted
inserted
replaced
347:1c514150c033 | 348:3da7ab45910d |
---|---|
1 /* Double precision operations */ | 1 /* Double precision operations */ |
2 | 2 |
3 void L_Extract (Word32 L_32, Word16 *hi, Word16 *lo); | 3 /***************************************************************************** |
4 Word32 L_Comp (Word16 hi, Word16 lo); | 4 * * |
5 * Function L_Extract() * | |
6 * * | |
7 * Extract from a 32 bit integer two 16 bit DPF. * | |
8 * * | |
9 * Arguments: * | |
10 * * | |
11 * L_32 : 32 bit integer. * | |
12 * 0x8000 0000 <= L_32 <= 0x7fff ffff. * | |
13 * hi : b16 to b31 of L_32 * | |
14 * lo : (L_32 - hi<<16)>>1 * | |
15 ***************************************************************************** | |
16 */ | |
17 | |
18 static inline void L_Extract (Word32 L_32, Word16 *hi, Word16 *lo) | |
19 { | |
20 *hi = L_32 >> 16; | |
21 *lo = (L_32 & 0xFFFF) >> 1; | |
22 } | |
23 | |
24 /***************************************************************************** | |
25 * * | |
26 * Function L_Comp() * | |
27 * * | |
28 * Compose from two 16 bit DPF a 32 bit integer. * | |
29 * * | |
30 * L_32 = hi<<16 + lo<<1 * | |
31 * * | |
32 * Arguments: * | |
33 * * | |
34 * hi msb * | |
35 * lo lsf (with sign) * | |
36 * * | |
37 * Return Value : * | |
38 * * | |
39 * 32 bit long signed integer (Word32) whose value falls in the * | |
40 * range : 0x8000 0000 <= L_32 <= 0x7fff fff0. * | |
41 * * | |
42 ***************************************************************************** | |
43 */ | |
44 | |
45 static inline Word32 L_Comp (Word16 hi, Word16 lo) | |
46 { | |
47 return ((Word32) hi << 16) + ((Word32) lo << 1); | |
48 } | |
49 | |
5 Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2); | 50 Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2); |
6 Word32 Mpy_32_16 (Word16 hi, Word16 lo, Word16 n); | 51 Word32 Mpy_32_16 (Word16 hi, Word16 lo, Word16 n); |
7 Word32 Div_32 (Word32 L_num, Word16 denom_hi, Word16 denom_lo); | 52 Word32 Div_32 (Word32 L_num, Word16 denom_hi, Word16 denom_lo); |