Other Alias

ggidev-invert_3, ggidev-lshift_3## 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 */