Section: GGI (3)
: Bitwise triple-int operations
unsigned *invert_3(unsigned x);
unsigned *lshift_3(unsigned l, unsigned r);
unsigned *rshift_3(unsigned l, unsigned r);
inverts all bits of x
. Equivalent to x=~x.
lshift_3 shifts l to the left by r bits. Equivalent to l<<=r.
rshift_3 shifts l to the right by r bits. This shift is
arithmetic, so the sign of l is kept as is. Equivalent to l>>=r.
returns a pointer to x
which has been updated in place.
Both lshift_3 and rshift_3 return a pointer to l which has
been updated in place.
Some bitwise operations on triple-ints
invert_3(x); /* x is now 3 */
lshift_3(x, 42); /* x is now 3*2^42, if that fits in a triple-int */
rshift_3(x, 17); /* x is now 3*2^25 */