FreeCalypso > hg > gsm-codec-lib
view libgsmefr/oper_32b.h @ 506:2d6da062c452
libgsmhr1/sp_rom.[ch]: import original
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 19 Jun 2024 01:55:54 +0000 |
parents | 3da7ab45910d |
children |
line wrap: on
line source
/* Double precision operations */ /***************************************************************************** * * * Function L_Extract() * * * * Extract from a 32 bit integer two 16 bit DPF. * * * * Arguments: * * * * L_32 : 32 bit integer. * * 0x8000 0000 <= L_32 <= 0x7fff ffff. * * hi : b16 to b31 of L_32 * * lo : (L_32 - hi<<16)>>1 * ***************************************************************************** */ static inline void L_Extract (Word32 L_32, Word16 *hi, Word16 *lo) { *hi = L_32 >> 16; *lo = (L_32 & 0xFFFF) >> 1; } /***************************************************************************** * * * Function L_Comp() * * * * Compose from two 16 bit DPF a 32 bit integer. * * * * L_32 = hi<<16 + lo<<1 * * * * Arguments: * * * * hi msb * * lo lsf (with sign) * * * * Return Value : * * * * 32 bit long signed integer (Word32) whose value falls in the * * range : 0x8000 0000 <= L_32 <= 0x7fff fff0. * * * ***************************************************************************** */ static inline Word32 L_Comp (Word16 hi, Word16 lo) { return ((Word32) hi << 16) + ((Word32) lo << 1); } Word32 Mpy_32 (Word16 hi1, Word16 lo1, Word16 hi2, Word16 lo2); Word32 Mpy_32_16 (Word16 hi, Word16 lo, Word16 n); Word32 Div_32 (Word32 L_num, Word16 denom_hi, Word16 denom_lo);