#include static const unsigned int divtab[730] = { [1] = 0xffff + 1l, [3] = 0x5555 + 1l, [9] = 0x1c71 + 1l, [27] = 0x097b + 1l, [81] = 0x0329 + 1l, [243] = 0x010d + 1l, [729] = 0x0059 + 1l }; #define FASTDIV(n, d) (((n) * divtab[d]) >> 16) int new32v3(int i, int x, int y) { int A; A = i + x * y; return A - 3 * y * (FASTDIV(A, 3 * y) - FASTDIV(i, 3 * y)); }