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);