Bitwise triple-int operations
Name
ggidev-invert_3, ggidev-lshift_3, ggidev-rshift_3 : Bitwise triple-int operations
Synopsis
#include <ggi/internal/triple-int.h> unsigned *invert_3(unsigned x[3]); unsigned *lshift_3(unsigned l[3], unsigned r); unsigned *rshift_3(unsigned l[3], unsigned r);
Description
invert_3 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.
Return value
invert_3 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.
Examples
Some bitwise operations on triple-ints:
unsigned x[3]; assign_int_3(x, -4); 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 */