#define HIGH_HALFWORD_COEFF (((long long) 1) << (BITS_PER_WORD / 2))
#define HIGH_WORD_COEFF (((long long) 1) << BITS_PER_WORD)
d
= (unsigned int) (u
>> BITS_PER_WORD
);
d
*= HIGH_HALFWORD_COEFF
;
d
*= HIGH_HALFWORD_COEFF
;
d
+= (unsigned int) (u
& (HIGH_WORD_COEFF
- 1));
return (negate
? -d
: d
);